File "Gestionasignaciones.php"

Full Path: C:/wamp64/www/RegistroEquipos2/backend/telefono/Gestionasignaciones.php
File size: 4.67 KB
MIME-type: text/x-php
Charset: utf-8

<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');

$host = '192.200.100.40';
$db = 'sistemas';
$user = 'SANMARINO';
$pass = 'sanmarino2021*';
$charset = 'utf8mb4';

try {
    $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
    $pdo = new PDO($dsn, $user, $pass, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    ]);

    $metodo = $_SERVER['REQUEST_METHOD'];

    if ($metodo === 'GET') {
        // Obtener tipo de consulta
        $tipo = $_GET['tipo'] ?? 'activas';

        if ($tipo === 'activas') {
            // Listar asignaciones activas
            $sql = "SELECT * FROM vista_asignaciones_activas ORDER BY fecha_asignacion DESC";
            $stmt = $pdo->query($sql);
            $asignaciones = $stmt->fetchAll(PDO::FETCH_ASSOC);

            echo json_encode([
                'status' => 'success',
                'data' => $asignaciones
            ]);

        } elseif ($tipo === 'historial') {
            // Listar historial completo
            $sql = "SELECT 
                        a.id,
                        a.fecha_asignacion,
                        a.fecha_devolucion,
                        a.cedula,
                        a.nombre_empleado,
                        a.cargo,
                        CONCAT(t.marca, ' ', t.referencia) AS telefono,
                        t.imei,
                        l.numero AS linea,
                        a.estado,
                        a.condicion_devolucion,
                        a.observaciones_devolucion
                    FROM asignaciones a
                    INNER JOIN inventario_telefonos t ON a.telefono_id = t.id
                    INNER JOIN inventario_lineas l ON a.linea_id = l.id
                    ORDER BY a.fecha_asignacion DESC";
            
            $stmt = $pdo->query($sql);
            $historial = $stmt->fetchAll(PDO::FETCH_ASSOC);

            echo json_encode([
                'status' => 'success',
                'data' => $historial
            ]);
        }

    } elseif ($metodo === 'POST') {
        // Crear nueva asignación
        $data = json_decode(file_get_contents('php://input'), true);

        $pdo->beginTransaction();

        try {
            // Insertar asignación
            $sql = "INSERT INTO asignaciones 
                    (fecha_asignacion, cedula, nombre_empleado, cargo, area, telefono_id, linea_id, 
                     quien_entrega, observaciones, firma, imagen_equipo, estado)
                    VALUES 
                    (:fecha_asignacion, :cedula, :nombre_empleado, :cargo, :area, :telefono_id, :linea_id,
                     :quien_entrega, :observaciones, :firma, :imagen_equipo, 'activa')";
            
            $stmt = $pdo->prepare($sql);
            $stmt->execute([
                ':fecha_asignacion' => $data['fecha_asignacion'] ?? date('Y-m-d'),
                ':cedula' => $data['cedula'],
                ':nombre_empleado' => $data['nombre_empleado'],
                ':cargo' => $data['cargo'] ?? '',
                ':area' => $data['area'] ?? '',
                ':telefono_id' => $data['telefono_id'],
                ':linea_id' => $data['linea_id'],
                ':quien_entrega' => $data['quien_entrega'] ?? '',
                ':observaciones' => $data['observaciones'] ?? '',
                ':firma' => $data['firma'] ?? null,
                ':imagen_equipo' => $data['imagen_equipo'] ?? null
            ]);

            // Actualizar estado del teléfono
            $sql = "UPDATE inventario_telefonos 
                    SET estado = 'asignado', veces_asignado = veces_asignado + 1 
                    WHERE id = :telefono_id";
            $stmt = $pdo->prepare($sql);
            $stmt->execute([':telefono_id' => $data['telefono_id']]);

            // Actualizar estado de la línea
            $sql = "UPDATE inventario_lineas 
                    SET estado = 'asignada', veces_asignada = veces_asignada + 1 
                    WHERE id = :linea_id";
            $stmt = $pdo->prepare($sql);
            $stmt->execute([':linea_id' => $data['linea_id']]);

            $pdo->commit();

            echo json_encode([
                'status' => 'success',
                'mensaje' => 'Asignación registrada correctamente',
                'id' => $pdo->lastInsertId()
            ]);

        } catch (Exception $e) {
            $pdo->rollBack();
            throw $e;
        }
    }

} catch (PDOException $e) {
    echo json_encode([
        'status' => 'error',
        'mensaje' => 'Error: ' . $e->getMessage()
    ]);
}