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()
]);
}