<?php
// vista/productos/categorias.php
error_reporting(E_ALL);
ini_set('display_errors', 1);

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

require_once "modelo/Db.php";

try {
    $bd = new clsbdd();
} catch (Exception $e) {
    die("<div class='alert alert-danger'>Error al conectar a la base de datos: " . $e->getMessage() . "</div>");
}

// Procesar Creación o Actualización de Categoría
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['guardar_categoria'])) {
    $cat_id     = intval($_POST['cat_id'] ?? 0);
    $cat_nombre = $_POST['cat_nombre'] ?? '';

    // Sanitizar entrada básica para evitar roturas de cadena en consultas
    $cat_nombre = str_replace("'", "''", $cat_nombre);

    $bd->carga_campos("cat_nombre, cat_estado");
    $bd->carga_valores("'$cat_nombre', 1");

    if ($cat_id > 0) {
        $bd->ejecutar("UPDATE bas_categorias SET cat_nombre='$cat_nombre' WHERE cat_id=$cat_id");
        echo "<div class='alert alert-success small py-2'>Categoría modificada con éxito.</div>";
    } else {
        $bd->insertar("bas_categorias");
        echo "<div class='alert alert-success small py-2'>Nueva categoría registrada correctamente.</div>";
    }
}

// Procesar Eliminación Lógica de Categoría
if (isset($_GET['eliminar'])) {
    $id_del = intval($_GET['eliminar']);
    // Desactivar categoría
    $bd->ejecutar("UPDATE bas_categorias SET cat_estado = 0 WHERE cat_id = $id_del");
    // Opcional: Desvincular los productos asociados pasándolos a NULL (Sin Categoría)
    $bd->ejecutar("UPDATE bas_productos SET cat_id = NULL WHERE cat_id = $id_del");
    echo "<div class='alert alert-warning small py-2'>Categoría removida del sistema. Los productos asociados quedaron asignados como 'Sin Categoría'.</div>";
}

// Cargar todas las categorías activas
$items = $bd->ejecutar_array("
    SELECT c.*, COUNT(p.pro_id) AS total_productos
    FROM bas_categorias c
    LEFT JOIN bas_productos p ON c.cat_id = p.cat_id AND p.pro_estado = 1
    WHERE c.cat_estado = 1
    GROUP BY c.cat_id
    ORDER BY c.cat_nombre ASC
") ?: [];
?>

<div class="d-flex justify-content-between align-items-center mb-4">
    <div>
        <h4 class="fw-bold text-dark mb-0"><i class="fas fa-tags me-2 text-secondary"></i>Gestión de Categorías</h4>
        <span class="small text-muted">Administración de agrupaciones para el inventario y la pantalla táctil de ventas (POS).</span>
    </div>
    <button class="btn btn-dark btn-sm rounded-3 shadow-sm px-3" data-bs-toggle="modal" data-bs-target="#modalCategoria" onclick="limpiarFormulario()">
        <i class="fas fa-plus me-1"></i> NUEVA CATEGORÍA
    </button>
</div>

<div class="card border-0 shadow-sm rounded-3">
    <div class="card-body p-0">
        <div class="table-responsive">
            <table class="table table-hover align-middle mb-0" style="font-size: 0.9rem;">
                <thead class="table-light text-uppercase">
                    <tr>
                        <th class="ps-3" style="width: 15%;">ID Categoría</th>
                        <th>Nombre de la Categoría</th>
                        <th class="text-center" style="width: 25%;">Artículos Vinculados</th>
                        <th class="text-center" style="width: 20%;">Acciones</th>
                    </tr>
                </thead>
                <tbody>
                    <?php if(empty($items)): ?>
                        <tr><td colspan="4" class="text-center py-4 text-muted">No existen categorías registradas en el sistema.</td></tr>
                    <?php endif; ?>
                    <?php foreach($items as $i): ?>
                        <tr>
                            <td class="ps-3 fw-mono">#<?= $i['cat_id'] ?></td>
                            <td class="fw-bold text-secondary"><?= htmlspecialchars($i['cat_nombre']) ?></td>
                            <td class="text-center">
                                <span class="badge bg-dark-subtle text-dark px-2 py-1 rounded">
                                    <?= intval($i['total_productos']) ?> productos
                                </span>
                            </td>
                            <td class="text-center">
                                <button class="btn btn-sm btn-outline-secondary py-1 px-2 border-0" 
                                        onclick="editarCategoria(<?= $i['cat_id'] ?>, '<?= addslashes($i['cat_nombre']) ?>')">
                                    <i class="fas fa-edit"></i>
                                </button>
                                <a href="index.php?page=productos/categorias&eliminar=<?= $i['cat_id'] ?>" class="btn btn-sm btn-outline-danger py-1 px-2 border-0" onclick="return confirm('¿Seguro que desea eliminar esta categoría? Los productos vinculados pasarán a \'Sin Categoría\'.')">
                                    <i class="fas fa-trash-alt"></i>
                                </a>
                            </td>
                        </tr>
                    <?php endforeach; ?>
                </tbody>
            </table>
        </div>
    </div>
</div>

<div class="modal fade" id="modalCategoria" tabindex="-1" aria-hidden="true">
    <div class="modal-dialog modal-dialog-centered modal-sm">
        <form method="post" class="modal-content border-0 shadow">
            <div class="modal-header bg-light py-2">
                <h6 class="modal-title fw-bold text-dark" id="modalTitulo">Registrar Categoría</h6>
                <button type="button" class="btn-close" data-bs-toggle="modal" data-bs-target="#modalCategoria"></button>
            </div>
            <div class="modal-body">
                <input type="hidden" name="cat_id" id="form_cat_id" value="0">
                
                <div class="mb-1">
                    <label class="form-label small fw-bold">Nombre de la Categoría</label>
                    <input type="text" name="cat_nombre" id="form_cat_nombre" class="form-control form-control-sm" required placeholder="Ej: Ropa, Bastones, Zapatos...">
                </div>
            </div>
            <div class="modal-footer bg-light py-2">
                <button type="submit" name="guardar_categoria" class="btn btn-sm btn-dark w-100 fw-bold">GUARDAR CATEGORÍA</button>
            </div>
        </form>
    </div>
</div>

<script>
function limpiarFormulario() {
    document.getElementById('form_cat_id').value = '0';
    document.getElementById('form_cat_nombre').value = '';
    document.getElementById('modalTitulo').innerText = 'Registrar Categoría';
}

function editarCategoria(id, nombre) {
    document.getElementById('form_cat_id').value = id;
    document.getElementById('form_cat_nombre').value = nombre;
    document.getElementById('modalTitulo').innerText = 'Modificar Categoría';
    
    var modal = new bootstrap.Modal(document.getElementById('modalCategoria'));
    modal.show();
}
</script>