<?php
session_start();

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

require_once('st_conexion.php'); // define $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());
}

// recoger datos del formulario
$idUsuarioEntrega = $_POST['id_usuario_entrega'] ?? null;
$idUsuarioRecibe = $_POST['id_usuario_recibe'] ?? null;
$fechaInicio = $_POST['fecha_inicio'] ?? null;
$horaInicio = $_POST['hora_inicio'] ?? null;
$notaHdr = $_POST['nota'] ?? '';

$claves = $_POST['clave_producto'] ?? [];
$notasEntrega = $_POST['nota_entrega'] ?? [];

if (!$idUsuarioEntrega || !$idUsuarioRecibe || empty($claves)) {
    die("Faltan datos obligatorios.");
}

try {
    // Iniciar transacción
    $pdo->beginTransaction();

    // 1) Insertar encabezado
    $sqlHdr = "INSERT INTO HE_PRESTAMO_HDR
               (ID_USUARIO_ENTREGA, ID_USUARIO_RECIBE, FECHA_INICIO, HORA_INICIO, NOTA, ESTADO, FIRMA_ENTREGA)
               VALUES (:idEntrega, :idRecibe, :fechaIni, :horaIni, :nota, 1, '')";
    $stmtHdr = $pdo->prepare($sqlHdr);
    $stmtHdr->execute([
        ':idEntrega' => $idUsuarioEntrega,
        ':idRecibe'  => $idUsuarioRecibe,
        ':fechaIni'  => $fechaInicio,
        ':horaIni'   => $horaInicio,
        ':nota'      => $notaHdr
    ]);

    // obtener ID del préstamo recién insertado
    $idPrestamo = $pdo->lastInsertId();

    // 2) Insertar detalle y actualizar estado de cada herramienta
    $sqlDtl = "INSERT INTO HE_PRESTAMO_DTL
               (ID_PRESTAMO, CLAVE_PRODUCTO, NOTA_ENTREGA, NOTA_DEVOLUCION, FECHA_DEVOLUCION, HORA_DEVOLUCION)
               VALUES (:idPrestamo, :clave, :notaEntrega, '', '', '')";
    $stmtDtl = $pdo->prepare($sqlDtl);

    $sqlUpdProd = "UPDATE HE_MAESTRO SET ESTADO_INV = :estadoPrestado WHERE CLAVE = :clave";
    $stmtUpdProd = $pdo->prepare($sqlUpdProd);

    foreach ($claves as $index => $clave) {
        $notaEntrega = $notasEntrega[$index] ?? '';

        // insertar detalle
        $stmtDtl->execute([
            ':idPrestamo' => $idPrestamo,
            ':clave'      => $clave,
            ':notaEntrega'=> $notaEntrega
        ]);

        // actualizar estado de la herramienta a "prestado" (1)
        $stmtUpdProd->execute([
            ':estadoPrestado' => 1,
            ':clave'          => $clave
        ]);
    }

    // confirmar transacción
    $pdo->commit();

    echo "<script>alert('Préstamo guardado correctamente'); window.location='st_menuppl.php';</script>";

} catch (Exception $e) {
    $pdo->rollBack();
    die("Error al guardar préstamo: " . $e->getMessage());
}
?>
