<?php
session_start();

if (!isset($_SESSION['usuario'])) {
    header("Location: st_acceso.php");
    exit;
}

ini_set('display_errors', 1);
error_reporting(E_ALL);

require_once('st_conexion.php');

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
];

try {
    $pdo = new PDO($dsn, $user, $pass, $options);
} catch (PDOException $e) {
    die("Error de conexión: " . $e->getMessage());
}

$usuarioSis = $_SESSION['usuario'];

// ======================
// FILTRO USUARIO
// ======================
$usuarioSeleccionado = $_GET['usuario'] ?? '';

// Obtener usuarios con préstamos pendientes (estado 1 o 3)
$sqlUsuarios = "
    SELECT DISTINCT U.ID_USUARIO, U.NOMBRE, U.APELLIDO_PATERNO, U.RUT
    FROM HE_USUARIOS U
    INNER JOIN HE_PRESTAMO_HDR H
        ON H.ID_USUARIO_RECIBE = U.ID_USUARIO
    WHERE H.ESTADO IN (1,3)
    ORDER BY U.NOMBRE, U.APELLIDO_PATERNO
";
$stmtUsuarios = $pdo->query($sqlUsuarios);
$usuarios = $stmtUsuarios->fetchAll();

// ======================
// OBTENER PRÉSTAMOS DEL USUARIO SELECCIONADO
// ======================
$headers = [];
$detalles = [];
if ($usuarioSeleccionado) {
    $sqlHDR = "
        SELECT 
            H.*,
            UE.NOMBRE AS ENT_NOM,
            UE.APELLIDO_PATERNO AS ENT_APE,
            UR.NOMBRE AS REC_NOM,
            UR.APELLIDO_PATERNO AS REC_APE
        FROM HE_PRESTAMO_HDR H
        LEFT JOIN HE_USUARIOS UE ON UE.ID_USUARIO = H.ID_USUARIO_ENTREGA
        LEFT JOIN HE_USUARIOS UR ON UR.ID_USUARIO = H.ID_USUARIO_RECIBE
        WHERE H.ID_USUARIO_RECIBE = :id_usr
        AND H.ESTADO IN (1,3)
        ORDER BY H.ID DESC
    ";
    $stmtHDR = $pdo->prepare($sqlHDR);
    $stmtHDR->execute(['id_usr' => $usuarioSeleccionado]);
    $headers = $stmtHDR->fetchAll();

    $sqlDTL = "
        SELECT D.*, M.SERIE
        FROM HE_PRESTAMO_DTL D
        LEFT JOIN HE_MAESTRO M ON D.CLAVE_PRODUCTO = M.CLAVE
        WHERE D.ID_PRESTAMO = :id
    ";
    $stmtDTL = $pdo->prepare($sqlDTL);
    foreach ($headers as $h) {
        $stmtDTL->execute(['id' => $h['ID']]);
        $detalles[$h['ID']] = $stmtDTL->fetchAll();
    }
}

// ======================
// PROCESAR DEVOLUCIÓN
// ======================
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['devolver_id'])) {
    $idDet = $_POST['devolver_id'];
    $nota = $_POST['nota_dev'] ?? '';
    $fechaActual = date('Y-m-d');
    $horaActual = date('H:i');

    // Actualizar detalle
    $sqlUpdateDet = "
        UPDATE HE_PRESTAMO_DTL
        SET FECHA_DEVOLUCION = :fecha, HORA_DEVOLUCION = :hora, NOTA_DEVOLUCION = :nota
        WHERE ID = :id
    ";
    $stmt = $pdo->prepare($sqlUpdateDet);
    $stmt->execute([
        'fecha' => $fechaActual,
        'hora' => $horaActual,
        'nota' => $nota,
        'id' => $idDet
    ]);

    // Cambiar estado de herramienta a 5
    $sqlHerr = "
        UPDATE HE_MAESTRO M
        INNER JOIN HE_PRESTAMO_DTL D ON D.CLAVE_PRODUCTO = M.CLAVE
        SET M.ESTADO_INV = 5
        WHERE D.ID = :id
    ";
    $stmt = $pdo->prepare($sqlHerr);
    $stmt->execute(['id' => $idDet]);

    // Obtener id_prestamo
    $sqlIdPrestamo = "SELECT ID_PRESTAMO FROM HE_PRESTAMO_DTL WHERE ID = :id";
    $stmt = $pdo->prepare($sqlIdPrestamo);
    $stmt->execute(['id' => $idDet]);
    $idPrestamo = $stmt->fetchColumn();

    // Verificar estado general del préstamo
    $sqlAll = "SELECT NOTA_DEVOLUCION, FECHA_DEVOLUCION FROM HE_PRESTAMO_DTL WHERE ID_PRESTAMO = :id";
    $stmt = $pdo->prepare($sqlAll);
    $stmt->execute(['id' => $idPrestamo]);
    $lineas = $stmt->fetchAll();

    $pendientes = array_filter($lineas, fn($l) => empty($l['FECHA_DEVOLUCION']));
    $notaDevoluciones = array_filter($lineas, fn($l) => !empty($l['NOTA_DEVOLUCION']));

    if (count($pendientes) === 0) {
        $estadoCab = empty($notaDevoluciones) ? 2 : 4;
        $sqlUpdHdr = "UPDATE HE_PRESTAMO_HDR SET ESTADO = :estado, FECHA_FIN = :fecha, HORA_FIN = :hora WHERE ID = :id";
        $stmt = $pdo->prepare($sqlUpdHdr);
        $stmt->execute([
            'estado' => $estadoCab,
            'fecha' => $fechaActual,
            'hora' => $horaActual,
            'id' => $idPrestamo
        ]);
    } else {
        $sqlUpdHdr = "UPDATE HE_PRESTAMO_HDR SET ESTADO = 3 WHERE ID = :id";
        $stmt = $pdo->prepare($sqlUpdHdr);
        $stmt->execute(['id' => $idPrestamo]);
    }

    header("Location: st_prestamo_devolucion.php?usuario=" . $usuarioSeleccionado);
    exit;
}
?>

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Devolución de Herramientas</title>
<link rel="icon" href="Iconos/rf_icono_vineta.png" type="image/x-icon">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
* { margin:0; padding:0; box-sizing:border-box; }
body { font-family:'Helvetica',sans-serif; background:#f3f4f8; color:#333; }
.fondo-leyenda { background:#ffcc00; text-align:center; padding:5px; font-size:13px; font-weight:bold; }
.topbar { width:100%; background:#1D3C7D; color:white; display:flex; align-items:center; justify-content:center; padding:10px 30px; box-shadow:0 2px 5px rgba(0,0,0,0.2); position:fixed; top:0; z-index:1000; height:50px; }
.topbar .title { position:absolute; left:20px; font-size:16px; }
.topbar .logout { position:absolute; right:20px; }
.topbar .logout button { display:flex; align-items:center; gap:6px; background:#bd0909; border:none; padding:6px 14px; border-radius:6px; color:white; font-size:13px; cursor:pointer; }
.topbar .logout button:hover { background:red; }
.encabezado-formulario { margin:70px auto 20px auto; padding:10px 20px; background:white; border-radius:10px; max-width:1000px; display:flex; justify-content:center; align-items:center; gap:20px; box-shadow:0 6px 12px rgba(0,0,0,0.15);}
.encabezado-formulario form { display:flex; gap:10px; align-items:center; }
.contenedor-menu { background:white; padding:20px; border-radius:10px; max-width:1800px; margin:20px auto; box-shadow:0 6px 12px rgba(0,0,0,0.15); }
table { width:100%; border-collapse:collapse; font-size:13px; }
th, td { padding:8px 12px; border:1px solid #ccc; }
.fila-click:hover { background:#eef3ff; cursor:pointer; }
.detalle { display:none; background:#f8f9fe; }
.detalle td { background:#f8f9fe; }
textarea { width:100%; }
button.devolver { background:#28a745; color:white; border:none; padding:4px 8px; border-radius:4px; cursor:pointer; }
button.devolver:hover { background:#218838; }
button.volver { background:#0c4896; color:white; border:none; padding:6px 12px; border-radius:6px; cursor:pointer; }
button.volver:hover { background:#084a8c; }
</style>
</head>
<body>

<div class="fondo-leyenda">Sistema en Modo Pruebas - @Sergio Bravo contacto +56 9 46237231</div>

<div class="topbar">
<div class="title">StockTools</div>
<div class="user-info">Bienvenido, <?= htmlspecialchars($usuarioSis) ?></div>
<div class="logout">
<button onclick="location.href='st_logout.php'">
<img src="Iconos/st_icono_salir.png" width="30" height="30"> Cerrar Sesión
</button>
</div>
</div>

<div class="encabezado-formulario">
<form method="GET">
<label>Usuario:</label>
<select name="usuario">
<option value="">--Seleccione--</option>
<?php foreach($usuarios as $u): ?>
<option value="<?= $u['ID_USUARIO'] ?>" <?= $usuarioSeleccionado==$u['ID_USUARIO']?'selected':'' ?>>
<?= htmlspecialchars($u['NOMBRE'].' '.$u['APELLIDO_PATERNO'].' ('.$u['RUT'].')') ?>
</option>
<?php endforeach; ?>
</select>
<button type="submit">Buscar</button>
<button type="button" class="volver" onclick="location.href='st_menuppl.php'">Volver al Menú Principal</button>
</form>
</div>

<?php if($usuarioSeleccionado && $headers): ?>
<div class="contenedor-menu">
<table>
<thead>
<tr>
<th>ID</th>
<th>Usuario Entrega</th>
<th>Usuario Recibe</th>
<th>Fecha/Hora Inicio</th>
<th>Fecha/Hora Fin</th>
<th>Nota</th>
<th>Estado</th>
</tr>
</thead>
<tbody>
<?php foreach($headers as $h): ?>
<tr class="fila-click" data-id="<?= $h['ID'] ?>">
<td><?= $h['ID'] ?></td>
<td><?= htmlspecialchars($h['ENT_NOM'].' '.$h['ENT_APE']) ?></td>
<td><?= htmlspecialchars($h['REC_NOM'].' '.$h['REC_APE']) ?></td>
<td><?= $h['FECHA_INICIO'].' '.$h['HORA_INICIO'] ?></td>
<td><?= $h['FECHA_FIN'] ? $h['FECHA_FIN'].' '.$h['HORA_FIN'] : '-' ?></td>
<td><?= htmlspecialchars($h['NOTA']) ?></td>
<td>
<?php
$estados = [1=>"Activo",2=>"Cerrado",3=>"Devolución parcial",4=>"Devolución con observaciones"];
echo $estados[$h['ESTADO']] ?? "Desconocido";
?>
</td>
</tr>

<tr class="detalle detalle-<?= $h['ID'] ?>">
<td colspan="7">
<strong>Detalle del préstamo #<?= $h['ID'] ?></strong><br><br>
<table style="width:95%; margin:auto;">
<thead>
<tr>
<th>CLAVE</th>
<th>SERIE</th>
<th>Nota Entrega</th>
<th>Nota Devolución</th>
<th>F. Devolución</th>
<th>H. Devolución</th>
<th>Acción</th>
</tr>
</thead>
<tbody>
<?php foreach($detalles[$h['ID']] as $d): ?>
<tr>
<td><?= htmlspecialchars($d['CLAVE_PRODUCTO']) ?></td>
<td><?= htmlspecialchars($d['SERIE']) ?></td>
<td><?= htmlspecialchars($d['NOTA_ENTREGA']) ?></td>
<td>
<?php if(empty($d['FECHA_DEVOLUCION'])): ?>
<form method="POST" style="margin:0; display:flex; gap:4px;">
<input type="hidden" name="devolver_id" value="<?= $d['ID'] ?>">
<textarea name="nota_dev"><?= htmlspecialchars($d['NOTA_DEVOLUCION']) ?></textarea>
<?php else: ?>
<?= htmlspecialchars($d['NOTA_DEVOLUCION']) ?>
<?php endif; ?>
</td>
<td><?= $d['FECHA_DEVOLUCION'] ?: '-' ?></td>
<td><?= $d['HORA_DEVOLUCION'] ?: '-' ?></td>
<td>
<?php if(empty($d['FECHA_DEVOLUCION'])): ?>
<button type="submit" class="devolver">Devolver</button>
</form>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</td>
</tr>

<?php endforeach; ?>
</tbody>
</table>
</div>
<?php endif; ?>

<script>
// Expandir/ocultar detalle
document.querySelectorAll(".fila-click").forEach(fila=>{
    fila.addEventListener("click", ()=>{
        let id = fila.getAttribute("data-id");
        let det = document.querySelector(".detalle-"+id);
        det.style.display = det.style.display==="table-row"?"none":"table-row";
    });
});
</script>

</body>
</html>
