<?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'); // debe definir $host, $db, $charset, $user, $pass

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

// timezone
date_default_timezone_set('America/Santiago');

// Fecha y hora automáticas
$fechaHoy = date("Y-m-d");
$horaAhora = date("H:i");

// Usuario que entrega (desde sesión)
$usuarioEntrega = isset($_SESSION['usuario']) ? $_SESSION['usuario'] : '';
$usuarioEntregaId = isset($_SESSION['usuario_id']) ? $_SESSION['usuario_id'] : '0';



// Usuario conectado (usuario del sistema)
$usuarioSis = $_SESSION['usuario'];

// Buscar datos reales del usuario que entrega
$sqlEntrega = "SELECT ID_USUARIO, NOMBRE, APELLIDO_PATERNO, APELLIDO_MATERNO
               FROM HE_USUARIOS
               WHERE USUARIO_SIS = :usr";

$stmtEntrega = $pdo->prepare($sqlEntrega);
$stmtEntrega->execute(['usr' => $usuarioSis]);
$usrEntrega = $stmtEntrega->fetch();

// Si no existe, abortar
if (!$usrEntrega) {
    die("Error: Usuario del sistema no encontrado en HE_USUARIOS.");
}

$usuarioEntregaId = $usrEntrega['ID_USUARIO'];
$usuarioEntregaNombre = $usrEntrega['NOMBRE'] . ' ' . $usrEntrega['APELLIDO_PATERNO'];


$sqlUsuarios = "
    SELECT 
        U.ID_USUARIO,
        U.RUT,
        U.NOMBRE,
        U.APELLIDO_PATERNO,
        U.APELLIDO_MATERNO
    FROM HE_USUARIOS U
    INNER JOIN HE_EMPRESA E ON U.RUT_EMPRESA = E.RUT
    WHERE E.TIPO = 1
      AND U.PRESTAMO = 1
      AND U.ESTADO = 1
      AND U.ID_USUARIO <> :idEntrega
    ORDER BY U.APELLIDO_PATERNO ASC
";

$stmtUsuarios = $pdo->prepare($sqlUsuarios);
$stmtUsuarios->execute(['idEntrega' => $usuarioEntregaId]);
$usuariosReceptores = $stmtUsuarios->fetchAll();


// ----------------------
// Categorías
// ----------------------
$stmtCat = $pdo->query("SELECT ID_CATEGORIA, NOMBRE FROM HE_CATEGORIA ORDER BY NOMBRE ASC");
$categorias = $stmtCat->fetchAll();

// ----------------------
// Tipos (incluimos ID_CATEGORIA para filtrar cliente-side)
// ----------------------
$stmtTipo = $pdo->query("SELECT ID_TIPO, ID_CATEGORIA, NOMBRE FROM HE_TIPO ORDER BY NOMBRE ASC");
$tipos = $stmtTipo->fetchAll();

// ----------------------
// Productos: HE_MAESTRO con ESTADO_INV = 5
// necesitamos CLAVE, NOMBRE, DESCRIPCION, SERIE, ID_TIPO
// ----------------------
$stmtProd = $pdo->query("
    SELECT CLAVE, NOMBRE, COALESCE(DESCRIPCION, '') AS DESCRIPCION, COALESCE(SERIE, '') AS SERIE, ID_TIPO
    FROM HE_MAESTRO
    WHERE COALESCE(ESTADO_INV, 0) = 5
    ORDER BY CLAVE ASC
");
$productos = $stmtProd->fetchAll();

// convertir a JSON para JS
$jsonTipos = json_encode($tipos, JSON_UNESCAPED_UNICODE);
$jsonProductos = json_encode($productos, JSON_UNESCAPED_UNICODE);
?>

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Nuevo Préstamo de Herramientas</title>
<link rel="icon" href="rf_icono_pestana.png" type="image/x-icon">
<style>
    *{box-sizing:border-box}
    body{font-family:Helvetica, Arial; background:#f3f4f8; margin:0; padding:0 18px 40px;}
    .fondo-leyenda{background:#ffcc00;text-align:center;padding:5px;font-weight:700;}
    .topbar{background:#1D3C7D;color:#fff;display:flex;align-items:center;justify-content:center;padding:10px 30px;position:fixed;top:0;width:100%;height:50px;z-index:10;}
    .topbar .title{position:absolute;left:20px;font-size:18px}
    .topbar .user-info{font-size:15px;font-weight:600}
    .topbar .logout{position:absolute;right:20px}
    .topbar button{background:#bd0909;color:#fff;border:none;padding:6px 12px;border-radius:6px;cursor:pointer}
    .container{max-width:1200px;margin:100px auto 40px}
    .card{background:#fff;padding:18px;border-radius:10px;box-shadow:0 6px 12px rgba(0,0,0,0.12);margin-bottom:18px}
    table{width:100%;border-collapse:collapse}
    th,td{padding:8px;border:1px solid #ddd;font-size:13px;vertical-align:middle}
    th{background:#0c4896;color:#fff}
    select,input,textarea{padding:7px;border:1px solid #bbb;border-radius:6px;width:100%;font-size:13px}
    .btn{background:#0c4896;color:#fff;border:none;padding:8px 12px;border-radius:6px;cursor:pointer}
    .btn-red{background:#b71c1c;color:#fff;border:none;padding:8px 12px;border-radius:6px;cursor:pointer}
    .small{width:140px}
    .readonly{background:#efefef}
    .flex{display:flex;gap:12px;align-items:center}
    .grid-4{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:10px;align-items:end}
    @media (max-width:900px){ .grid-4{grid-template-columns:1fr;}}
</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($usuarioEntregaNombre) ?></div>
    <div class="logout"><button onclick="location.href='st_logout.php'">Cerrar Sesión</button></div>
</div>

<div class="container">
<form action="st_prestamo_graba.php" method="POST" id="formPrestamo">

    <div class="card">
        <h3>Datos del Préstamo</h3>
        <table>
            <tr>
                <td style="width:170px"><strong>Usuario que entrega</strong></td>
                <td>
                <?= htmlspecialchars($usuarioEntregaNombre) ?>
                    <input type="hidden" name="id_usuario_entrega" value="<?= htmlspecialchars($usuarioEntregaId) ?>">
                </td>

                <td style="width:170px"><strong>Fecha inicio</strong></td>
                <td>
                    <input type="text" class="readonly" value="<?= $fechaHoy ?>" readonly>
                    <input type="hidden" name="fecha_inicio" value="<?= $fechaHoy ?>">
                </td>
            </tr>

            <tr>
                <td><strong>Hora inicio</strong></td>
                <td>
                    <input type="text" class="readonly small" value="<?= $horaAhora ?>" readonly>
                    <input type="hidden" name="hora_inicio" value="<?= $horaAhora ?>">
                </td>

                <td><strong>Usuario que recibe</strong></td>
                <td>
                    <select name="id_usuario_recibe" required>
                        <option value="">-- Seleccione Usuario --</option>
                        <?php foreach($usuariosReceptores as $u): ?>
                            <option value="<?= $u['ID_USUARIO'] ?>">
                                <?= htmlspecialchars($u['RUT'] . ' - ' . $u['APELLIDO_PATERNO'] . ' ' . $u['APELLIDO_MATERNO'] . ' ' . $u['NOMBRE']) ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </td>
            </tr>

            <tr>
                <td><strong>Nota</strong></td>
                <td colspan="3"><textarea name="nota" rows="2"></textarea></td>
            </tr>
        </table>
    </div>

    <div class="card">
        <h3>Detalle de Herramientas</h3>

        <div class="grid-4">
            <div>
                <label><strong>Categoría</strong></label>
                <select id="selCategoria">
                    <option value="">-- Categoría --</option>
                    <?php foreach($categorias as $c): ?>
                        <option value="<?= $c['ID_CATEGORIA'] ?>"><?= htmlspecialchars($c['NOMBRE']) ?></option>
                    <?php endforeach; ?>
                </select>
            </div>

            <div>
                <label><strong>Tipo</strong></label>
                <select id="selTipo">
                    <option value="">-- Tipo --</option>
                </select>
            </div>

            <div>
                <label><strong>Herramienta (CLAVE | NOMBRE | DESCRIPCION | SERIE)</strong></label>
                <select id="selProducto">
                    <option value="">-- Herramienta --</option>
                </select>
            </div>

            <div style="align-self:end">
                <button type="button" class="btn" id="btnAgregar">Agregar</button>
            </div>
        </div>

        <br>

        <table>
            <thead>
                <tr>
                    <th>CLAVE | NOMBRE | DESCRIPCIÓN | SERIE</th>
                    <th>NOTA ENTREGA</th>
                    <th>ACCIONES</th>
                </tr>
            </thead>
            <tbody id="detalleBody">
                <!-- filas dinámicas -->
            </tbody>
        </table>

    </div>

    <div style="text-align:center; margin-top:12px">
        <button type="submit" class="btn">Guardar Préstamo</button>
    </div>

</form>
</div>

<script>
    // datos desde PHP
    const tipos = <?= $jsonTipos ?>;        // [{ID_TIPO, ID_CATEGORIA, NOMBRE}, ...]
    const productos = <?= $jsonProductos ?>; // [{CLAVE, NOMBRE, DESCRIPCION, SERIE, ID_TIPO}, ...]

    const selCategoria = document.getElementById('selCategoria');
    const selTipo = document.getElementById('selTipo');
    const selProducto = document.getElementById('selProducto');
    const btnAgregar = document.getElementById('btnAgregar');
    const detalleBody = document.getElementById('detalleBody');

    // cargar tipos al cambiar categoria
    selCategoria.addEventListener('change', function(){
        const cat = this.value;
        selTipo.innerHTML = '<option value="">-- Tipo --</option>';
        selProducto.innerHTML = '<option value="">-- Herramienta --</option>';
        tipos.forEach(t => {
            if (String(t.ID_CATEGORIA) === String(cat)) {
                const opt = document.createElement('option');
                opt.value = t.ID_TIPO;
                opt.textContent = t.NOMBRE;
                selTipo.appendChild(opt);
            }
        });
    });

    // cargar productos al cambiar tipo
    selTipo.addEventListener('change', function(){
        const tipo = this.value;
        selProducto.innerHTML = '<option value="">-- Herramienta --</option>';
        productos.forEach(p => {
            if (String(p.ID_TIPO) === String(tipo)) {
                const opt = document.createElement('option');
                opt.value = p.CLAVE;
                let label = p.CLAVE + ' | ' + p.NOMBRE;
                if (p.DESCRIPCION) label += ' | ' + p.DESCRIPCION;
                if (p.SERIE) label += ' | Serie: ' + p.SERIE;
                opt.textContent = label;
                selProducto.appendChild(opt);
            }
        });
    });

    // agregar fila al detalle
    btnAgregar.addEventListener('click', function(){
        const clave = selProducto.value;
        if (!clave) { alert('Seleccione una herramienta'); return; }
        const texto = selProducto.options[selProducto.selectedIndex].text;

        // evitar duplicados por CLAVE (opcional)
        const existentes = Array.from(document.querySelectorAll('input[name="clave_producto[]"]')).map(i => i.value);
        if (existentes.includes(clave)) {
            alert('La herramienta ya fue agregada al detalle.');
            return;
        }

        const tr = document.createElement('tr');

        // celda producto (texto + hidden input clave)
        const tdProd = document.createElement('td');
        tdProd.textContent = texto;
        const hidden = document.createElement('input');
        hidden.type = 'hidden';
        hidden.name = 'clave_producto[]';
        hidden.value = clave;
        tdProd.appendChild(hidden);

        // nota entrega
        const tdNota = document.createElement('td');
        const inpNota = document.createElement('input');
        inpNota.type = 'text';
        inpNota.name = 'nota_entrega[]';
        tdNota.appendChild(inpNota);

        // acciones
        const tdAcc = document.createElement('td');
        const btnDel = document.createElement('button');
        btnDel.type = 'button';
        btnDel.className = 'btn-red';
        btnDel.textContent = 'Eliminar';
        btnDel.addEventListener('click', function(){ tr.remove(); });
        tdAcc.appendChild(btnDel);

        tr.appendChild(tdProd);
        tr.appendChild(tdNota);
        tr.appendChild(tdAcc);

        detalleBody.appendChild(tr);
    });

    // validación simple antes de enviar
    document.getElementById('formPrestamo').addEventListener('submit', function(e){
        const filas = detalleBody.querySelectorAll('tr');
        if (filas.length === 0) {
            e.preventDefault();
            alert('Debe agregar al menos 1 herramienta al detalle.');
            return false;
        }
        // adicional: validar que exista id_usuario_recibe
        const recibe = document.querySelector('select[name="id_usuario_recibe"]').value;
        if (!recibe) {
            e.preventDefault();
            alert('Seleccione el usuario que recibe.');
            return false;
        }
    });
</script>
</body>
</html>
