<?php
if (session_status() === PHP_SESSION_NONE) { session_start(); }
require_once "modelo/Db.php";

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

$bd = new clsbdd();
$mensaje = "";

// --- LÓGICA DE BORRADO CON AUDITORÍA CORREGIDA ---
if (isset($_POST['btn_borrado_total'])) {
    $pass_ingresada = $_POST['admin_pass'];
    $id_usuario = $_SESSION['usu_codigo'] ?? null;
    $nombre_logueado = $_SESSION['nombre'] ?? 'Usuario Desconocido';
    
    if ($id_usuario) {
        $user_data = $bd->ejecutar_fila("SELECT usu_clave, usu_rol FROM sba_usuarios WHERE usu_codigo = '$id_usuario' LIMIT 1");
        
        if ($user_data) {
            $clave_db = $user_data['usu_clave'];
            $rol_db = $user_data['usu_rol'];

            $es_valida = false;
            if ($pass_ingresada === $clave_db) {
                $es_valida = true;
            } elseif (password_verify($pass_ingresada, $clave_db)) {
                $es_valida = true;
            }

            if ($es_valida && $rol_db == 'ADMIN') {
                $bd->ejecutar("SET FOREIGN_KEY_CHECKS = 0");
                $bd->ejecutar("TRUNCATE TABLE sba_productos");
                $bd->ejecutar("SET FOREIGN_KEY_CHECKS = 1");

                $accion = "Vaciado total de la tabla productos";
                $tabla_afectada = "sba_productos";
                
                $bd->carga_campos("usu_nombre, aud_tabla_afectada, aud_accion");
                $bd->carga_valores("'$nombre_logueado', '$tabla_afectada', '$accion'");
                $bd->insertar("sba_auditoria");
                
                echo "<script>alert('ÉXITO: Inventario vaciado y registro guardado en auditoría.'); window.location.href='index.php?page=productos';</script>";
                exit();
            } else {
                $mensaje = "<div class='alert alert-danger shadow-sm'>Error: Clave incorrecta o permisos insuficientes.</div>";
            }
        }
    } else {
        $mensaje = "<div class='alert alert-warning'>Error de sesión: No se pudo identificar al usuario.</div>";
    }
}

// --- LÓGICA DE IMPORTACIÓN MASIVA REFORZADA ---
if (isset($_POST['btn_importar_excel'])) {
    if (isset($_FILES['file_excel']) && $_FILES['file_excel']['error'] == 0) {
        $archivo = $_FILES['file_excel']['tmp_name'];
        if (($handle = fopen($archivo, "r")) !== FALSE) {
            $insertados = 0;
            $nombre_logueado = $bd->escapar($_SESSION['nombre'] ?? 'Admin');
            fgetcsv($handle, 1000, ";");

            while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
                if (!empty($data) && count($data) >= 3) {
                    $nombre = $bd->escapar($data[0]);
                    $cat_nombre = $bd->escapar($data[1]);
                    $precio_limpio = str_replace(['$', ' ', ','], ['', '', '.'], $data[2]);
                    $precio = (float)$precio_limpio;
                    $stock = isset($data[3]) ? (int)$data[3] : 0;

                    if (!empty($nombre)) {
                        $check_cat = $bd->ejecutar_fila("SELECT cat_codigo FROM sba_categorias WHERE cat_nombre = '$cat_nombre' LIMIT 1");
                        if ($check_cat) {
                            $cat_id = $check_cat['cat_codigo'];
                        } else {
                            $bd->carga_campos("cat_nombre, cat_estado");
                            $bd->carga_valores("'$cat_nombre', 1");
                            $cat_id = $bd->insertar("sba_categorias");
                        }

                        if ($cat_id > 0) {
                            $bd->carga_campos("cat_codigo, prd_nombre, prd_precio, prd_stock, prd_imagen, prd_estado");
                            $bd->carga_valores("$cat_id, '$nombre', $precio, $stock, 'default.png', 1");
                            if ($bd->insertar("sba_productos")) { $insertados++; }
                        }
                    }
                }
            }
            fclose($handle);

            if ($insertados > 0) {
                $accion_auditoria = "Importacion masiva exitosa: $insertados productos cargados.";
                $bd->carga_campos("usu_nombre, aud_tabla_afectada, aud_accion");
                $bd->carga_valores("'$nombre_logueado', 'sba_productos', '$accion_auditoria'");
                $bd->insertar("sba_auditoria");
                echo "<script>alert('Se cargaron $insertados productos correctamente.'); window.location.href='index.php?page=productos';</script>";
                exit();
            } else {
                echo "<script>alert('No se encontraron datos validos en el archivo.'); window.location.href='index.php?page=productos';</script>";
                exit();
            }
        }
    }
}

// 1. REGISTRAR NUEVA CATEGORÍA
if (isset($_POST['btn_guardar_cat'])) {
    $cat_nom = $bd->escapar($_POST['cat_nombre']);
    $bd->carga_campos("cat_nombre, cat_estado");
    $bd->carga_valores("'$cat_nom', 1");
    if ($bd->insertar("sba_categorias")) {
        $mensaje = "<div class='alert alert-primary'><i class='fa fa-tag'></i> Categoría '$cat_nom' creada.</div>";
    }
}

// 2. REGISTRAR NUEVO PRODUCTO
if (isset($_POST['btn_guardar'])) {
    $nombre = $bd->escapar($_POST['prd_nombre']);
    $precio = $bd->escapar($_POST['prd_precio']);
    $stock  = $bd->escapar($_POST['prd_stock']);
    $cat    = $bd->escapar($_POST['cat_codigo']);
    
    $nombre_imagen = "default.png";
    if (isset($_FILES['prd_imagen']) && $_FILES['prd_imagen']['error'] == 0) {
        $nombre_imagen = time() . "_" . $_FILES['prd_imagen']['name'];
        move_uploaded_file($_FILES['prd_imagen']['tmp_name'], "assets/images/productos/" . $nombre_imagen);
    }

    $bd->carga_campos("cat_codigo, prd_nombre, prd_precio, prd_stock, prd_imagen, prd_estado");
    $bd->carga_valores("$cat, '$nombre', $precio, $stock, '$nombre_imagen', 1");
    if ($bd->insertar("sba_productos")) {
        $mensaje = "<div class='alert alert-success'><i class='fa fa-check-circle'></i> Producto registrado.</div>";
    }
}

// 3. ACTUALIZAR (Corregido para incluir categoría)
if (isset($_POST['btn_actualizar'])) {
    $id     = $bd->escapar($_POST['prd_codigo']);
    $precio = $bd->escapar($_POST['prd_precio']);
    $stock  = $bd->escapar($_POST['prd_stock']);
    $cat    = $bd->escapar($_POST['cat_codigo_update']); // Nuevo campo capturado
    
    $update_imagen = "";
    if (isset($_FILES['prd_imagen_update']) && $_FILES['prd_imagen_update']['error'] == 0) {
        $nombre_imagen = time() . "_" . $_FILES['prd_imagen_update']['name'];
        if (move_uploaded_file($_FILES['prd_imagen_update']['tmp_name'], "assets/images/productos/" . $nombre_imagen)) {
            $update_imagen = ", prd_imagen = '$nombre_imagen'";
        }
    }
    
    $bd->carga_campos("prd_precio = $precio, prd_stock = $stock, cat_codigo = $cat $update_imagen");
    $bd->carga_valores("prd_codigo = $id");
    
    if ($bd->actualizar("sba_productos")) {
        $mensaje = "<div class='alert alert-info'><i class='fa fa-sync-alt'></i> Producto actualizado correctamente.</div>";
    }
}

// 4. ELIMINAR
if (isset($_GET['eliminar'])) {
    $id = $bd->escapar($_GET['eliminar']);
    $bd->carga_campos("prd_estado = 0");
    $bd->carga_valores("prd_codigo = $id");
    $bd->actualizar("sba_productos");
    echo "<script>window.location.href='index.php?page=productos';</script>";
}

$categorias = $bd->ejecutar_array("SELECT * FROM sba_categorias WHERE cat_estado = 1 ORDER BY cat_nombre ASC") ?: [];
$productos = $bd->ejecutar_array("SELECT p.*, c.cat_nombre FROM sba_productos p INNER JOIN sba_categorias c ON p.cat_codigo = c.cat_codigo WHERE p.prd_estado = 1 ORDER BY p.prd_nombre ASC") ?: [];
?>

<div class="container-fluid">
    <div class="d-flex justify-content-between align-items-center mb-4">
        <h3 class="font-weight-bold mb-0"><i class="fa fa-boxes text-primary"></i> Gestión de Inventario</h3>
        <div>
            <a href="exportar_productos.php" class="btn btn-outline-primary btn-sm font-weight-bold shadow-sm">
                <i class="fa fa-file-excel"></i> EXPORTAR EXCEL
            </a>
            <button class="btn btn-outline-success btn-sm font-weight-bold shadow-sm" data-toggle="modal" data-target="#modalExcel">
                <i class="fa fa-file-excel"></i> IMPORTAR EXCEL
            </button>
            <button class="btn btn-danger btn-sm font-weight-bold shadow-sm" data-toggle="modal" data-target="#modalBorradoTotal">
                <i class="fa fa-trash-alt"></i> VACIAR TODO
            </button>
        </div>
    </div>

    <?= $mensaje; ?>

    <div class="row">
        <div class="col-md-4">
            <div class="card mb-4 shadow-sm border-0">
                <div class="card-header bg-dark text-white">
                    <h6 class="mb-0">Nueva Categoría</h6>
                </div>
                <div class="card-body">
                    <form method="POST">
                        <div class="input-group">
                            <input type="text" name="cat_nombre" class="form-control" placeholder="Nombre..." required>
                            <div class="input-group-append">
                                <button class="btn btn-primary" type="submit" name="btn_guardar_cat">Crear</button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>

            <div class="card shadow-sm border-0">
                <div class="card-header bg-primary text-white">
                    <h6 class="mb-0">Registrar Producto</h6>
                </div>
                <div class="card-body">
                    <form method="POST" enctype="multipart/form-data">
                        <div class="mb-3">
                            <label class="small font-weight-bold">Categoría</label>
                            <select name="cat_codigo" class="form-control" required>
                                <option value="">-- Seleccionar --</option>
                                <?php foreach ($categorias as $cat): ?>
                                    <option value="<?= $cat['cat_codigo'] ?>"><?= $cat['cat_nombre'] ?></option>
                                <?php endforeach; ?>
                            </select>
                        </div>
                        <div class="mb-3">
                            <label class="small font-weight-bold">Nombre del Producto</label>
                            <input type="text" name="prd_nombre" class="form-control" required>
                        </div>
                        <div class="row">
                            <div class="col-6 mb-3">
                                <label class="small font-weight-bold">Precio</label>
                                <input type="number" step="0.01" name="prd_precio" class="form-control" required>
                            </div>
                            <div class="col-6 mb-3">
                                <label class="small font-weight-bold">Stock</label>
                                <input type="number" name="prd_stock" class="form-control" required>
                            </div>
                        </div>
                        <div class="mb-3">
                            <label class="small font-weight-bold">Imagen</label>
                            <input type="file" name="prd_imagen" class="form-control-file">
                        </div>
                        <button type="submit" name="btn_guardar" class="btn btn-primary btn-block font-weight-bold">GUARDAR</button>
                    </form>
                </div>
            </div>
        </div>

        <div class="col-md-8">
            <div class="card shadow-sm border-0">
                <div class="card-header bg-white">
                    <h6 class="mb-0 font-weight-bold">Productos en Existencia</h6>
                </div>
                <div class="card-body p-0">
                    <div class="table-responsive">
                        <table class="table table-hover align-middle mb-0">
                            <thead class="bg-light text-muted small text-uppercase">
                                <tr>
                                    <th>Imagen</th>
                                    <th>Producto / Categoría</th>
                                    <th>Precio</th>
                                    <th>Stock</th>
                                    <th class="text-center">Acciones</th>
                                </tr>
                            </thead>
                            <tbody class="small">
                                <?php foreach ($productos as $p): ?>
                                <tr>
                                    <form method="POST" enctype="multipart/form-data">
                                        <input type="hidden" name="prd_codigo" value="<?= $p['prd_codigo']; ?>">
                                        <td width="100">
                                            <img src="assets/images/productos/<?= $p['prd_imagen']; ?>" 
                                                 onerror="this.src='assets/images/big/icon.png'" 
                                                 style="width: 50px; height: 50px; object-fit: cover; border-radius: 5px;" class="mb-1">
                                            <input type="file" name="prd_imagen_update" style="font-size: 10px; width: 100px;">
                                        </td>
                                        <td>
                                            <strong><?= $p['prd_nombre']; ?></strong><br>
                                            <select name="cat_codigo_update" class="form-control form-control-sm mt-1" style="font-size: 11px; height: auto;">
                                                <?php foreach ($categorias as $cat): ?>
                                                    <option value="<?= $cat['cat_codigo'] ?>" <?= ($cat['cat_codigo'] == $p['cat_codigo']) ? 'selected' : '' ?>>
                                                        <?= $cat['cat_nombre'] ?>
                                                    </option>
                                                <?php endforeach; ?>
                                            </select>
                                        </td>
                                        <td>
                                            <input type="number" step="0.01" name="prd_precio" class="form-control form-control-sm" style="width: 80px;" value="<?= $p['prd_precio']; ?>">
                                        </td>
                                        <td>
                                            <input type="number" name="prd_stock" class="form-control form-control-sm <?= ($p['prd_stock'] <= 5) ? 'is-invalid text-danger' : '' ?>" style="width: 70px;" value="<?= $p['prd_stock']; ?>">
                                        </td>
                                        <td class="text-center">
                                            <button type="submit" name="btn_actualizar" class="btn btn-sm btn-info" title="Actualizar"><i class="fa fa-save"></i></button>
                                            <a href="index.php?page=productos&eliminar=<?= $p['prd_codigo']; ?>" class="btn btn-sm btn-outline-danger" onclick="return confirm('¿Eliminar?')"><i class="fa fa-trash"></i></a>
                                        </td>
                                    </form>
                                </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<div class="modal fade" id="modalBorradoTotal" tabindex="-1" role="dialog" aria-hidden="true">
    <div class="modal-dialog modal-dialog-centered modal-sm">
        <form method="POST" class="modal-content border-0 shadow-lg">
            <div class="modal-header bg-danger text-white">
                <h6 class="modal-title font-weight-bold">AUTORIZACIÓN</h6>
            </div>
            <div class="modal-body text-center">
                <p class="small">Confirme su clave de administrador para vaciar todo el inventario:</p>
                <input type="password" name="admin_pass" class="form-control text-center" required>
            </div>
            <div class="modal-footer border-0 justify-content-center">
                <button type="button" class="btn btn-light btn-sm" data-dismiss="modal">Cancelar</button>
                <button type="submit" name="btn_borrado_total" class="btn btn-danger btn-sm px-4">ELIMINAR TODO</button>
            </div>
        </form>
    </div>
</div>

<div class="modal fade" id="modalExcel" tabindex="-1" role="dialog" aria-hidden="true">
    <div class="modal-dialog modal-dialog-centered">
        <form method="POST" enctype="multipart/form-data" class="modal-content border-0 shadow-lg">
            <div class="modal-header bg-success text-white">
                <h6 class="modal-title font-weight-bold">IMPORTACIÓN MASIVA</h6>
            </div>
            <div class="modal-body">
                <p class="small text-muted">Suba un archivo <b>CSV (separado por ;)</b> con el orden: <br><code>Nombre;Categoría;Precio;Stock</code></p>
                <input type="file" name="file_excel" class="form-control-file border p-2 rounded" accept=".csv" required>
            </div>
            <div class="modal-footer border-0">
                <button type="button" class="btn btn-light btn-sm" data-dismiss="modal">Cerrar</button>
                <button type="submit" name="btn_importar_excel" class="btn btn-success btn-sm px-4">CARGAR DATOS</button>
            </div>
        </form>
    </div>
</div>