<?php
// ===== MISMA RUTA QUE USA EL DASHBOARD =====
include('conexion.php');

// Verificar conexión
if (!$conexion) {
    die("❌ Error de conexión: " . mysqli_connect_error());
}

// Obtener parámetros de filtro
$search = isset($_GET['search']) ? mysqli_real_escape_string($conexion, $_GET['search']) : '';
$filter = isset($_GET['filter']) ? mysqli_real_escape_string($conexion, $_GET['filter']) : '';

// Obtener mensajes de éxito y error
$success = isset($_GET['success']) ? $_GET['success'] : '';
$error = isset($_GET['error']) ? $_GET['error'] : '';

// Consulta accesorios con categoría
$sql = "SELECT accesorio.*, categoria.nombre AS categoria
        FROM accesorio
        LEFT JOIN categoria ON accesorio.id_categoria = categoria.id_categoria
        WHERE 1=1";

if(!empty($search)){
    $sql .= " AND (
        accesorio.nombre LIKE '%$search%' OR
        accesorio.marca LIKE '%$search%' OR
        accesorio.modelo LIKE '%$search%'
    )";
}

if(!empty($filter)){
    $sql .= " AND accesorio.id_categoria = '$filter'";
}

$sql .= " ORDER BY accesorio.id_accesorio DESC";
$resultado = mysqli_query($conexion, $sql);

if (!$resultado) {
    die("❌ Error en la consulta: " . mysqli_error($conexion));
}

$total_registros = mysqli_num_rows($resultado);

// Categorías para filtro
$categorias_sql = "SELECT * FROM categoria ORDER BY nombre";
$categorias_result = mysqli_query($conexion, $categorias_sql);

// ===== GUARDAR DATOS EN UN ARRAY PARA EL PDF =====
$datos_productos = array();
while($fila = mysqli_fetch_assoc($resultado)) {
    $datos_productos[] = array(
        'id' => $fila['id_accesorio'],
        'nombre' => $fila['nombre'],
        'marca' => $fila['marca'],
        'modelo' => $fila['modelo'],
        'precio' => $fila['precio'],
        'cantidad' => $fila['cantidad'],
        'categoria' => $fila['categoria']
    );
}

// Volver a ejecutar la consulta para la tabla HTML
$sql = "SELECT accesorio.*, categoria.nombre AS categoria
        FROM accesorio
        LEFT JOIN categoria ON accesorio.id_categoria = categoria.id_categoria
        WHERE 1=1";

if(!empty($search)){
    $sql .= " AND (
        accesorio.nombre LIKE '%$search%' OR
        accesorio.marca LIKE '%$search%' OR
        accesorio.modelo LIKE '%$search%'
    )";
}

if(!empty($filter)){
    $sql .= " AND accesorio.id_categoria = '$filter'";
}

$sql .= " ORDER BY accesorio.id_accesorio DESC";
$resultado = mysqli_query($conexion, $sql);
?>

<!-- CONTENIDO DE listar.php -->
<div class="d-flex justify-content-between align-items-center mb-4">
    <h2><i class="fas fa-box me-2 text-primary"></i>Gestión de Productos</h2>
    <div>
        <a href="Producto/nuevo.php" class="btn btn-primary me-2">
    <i class="fas fa-plus me-1"></i> Nuevo Producto
</a>
        <a href="menu.php" class="btn btn-secondary">
            <i class="fas fa-arrow-left me-1"></i> Volver
        </a>
    </div>
</div>

<!-- MOSTRAR TOTAL DE REGISTROS -->
<?php if($total_registros > 0): ?>
<div class="alert alert-success">
    <i class="fas fa-check-circle me-2"></i>
    <strong>✅ Conexión exitosa!</strong> Se encontraron <strong><?php echo $total_registros; ?></strong> productos.
</div>
<?php else: ?>
<div class="alert alert-warning">
    <i class="fas fa-exclamation-triangle me-2"></i>
    <strong>⚠️ No se encontraron productos</strong> en la base de datos.
</div>
<?php endif; ?>

<!-- Mensajes de éxito -->
<?php if($success == 'creado'): ?>
<div class="alert alert-success alert-dismissible fade show" role="alert">
    <i class="fas fa-check-circle me-2"></i>
    Producto creado correctamente.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<?php if($success == 'actualizado'): ?>
<div class="alert alert-success alert-dismissible fade show" role="alert">
    <i class="fas fa-check-circle me-2"></i>
    Producto actualizado correctamente.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<?php if($success == 'eliminado'): ?>
<div class="alert alert-success alert-dismissible fade show" role="alert">
    <i class="fas fa-check-circle me-2"></i>
    Producto eliminado correctamente.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<!-- Mensajes de error -->
<?php if($error == 'producto_no_encontrado'): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
    <i class="fas fa-exclamation-circle me-2"></i>
    El producto no existe.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<?php if($error == 'error_eliminacion'): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
    <i class="fas fa-exclamation-circle me-2"></i>
    Error al eliminar el producto. Intenta nuevamente.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<?php if($error == 'campos_vacios'): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
    <i class="fas fa-exclamation-circle me-2"></i>
    Por favor, completa todos los campos del formulario.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<?php if($error == 'error_creacion'): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
    <i class="fas fa-exclamation-circle me-2"></i>
    Error al crear el producto. Intenta nuevamente.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<?php if($error == 'error_actualizacion'): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
    <i class="fas fa-exclamation-circle me-2"></i>
    Error al actualizar el producto. Intenta nuevamente.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<?php if($error == 'id_invalido'): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
    <i class="fas fa-exclamation-circle me-2"></i>
    ID de producto inválido.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<?php if($error == 'categoria_no_existe'): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
    <i class="fas fa-exclamation-circle me-2"></i>
    La categoría seleccionada no existe.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<!-- Filtros y Búsqueda -->
<div class="table-container mb-4">
    <form method="GET" action="menu.php" id="filterForm" class="row g-3">
        <input type="hidden" name="page" value="productos">
        
        <div class="col-md-4">
            <div class="input-group">
                <span class="input-group-text bg-white border-end-0">
                    <i class="fas fa-search text-muted"></i>
                </span>
                <input type="text" name="search" class="form-control search-box"
                    placeholder="Buscar por nombre, marca o modelo..."
                    value="<?php echo htmlspecialchars($search); ?>">
            </div>
        </div>
        <div class="col-md-3">
            <select name="filter" class="form-select filter-select" onchange="this.form.submit()">
                <option value="">Todas las categorías</option>
                <?php while($cat = mysqli_fetch_assoc($categorias_result)): ?>
                <option value="<?php echo $cat['id_categoria']; ?>"
                    <?php echo $filter == $cat['id_categoria'] ? 'selected' : ''; ?>>
                    <?php echo $cat['nombre']; ?>
                </option>
                <?php endwhile; ?>
            </select>
        </div>
        <div class="col-md-2">
            <button type="submit" class="btn btn-primary w-100">
                <i class="fas fa-filter me-1"></i> Filtrar
            </button>
        </div>
        <div class="col-md-3 text-end">
            <?php if(!empty($search) || !empty($filter)): ?>
            <a href="menu.php?page=productos" class="btn btn-outline-secondary">
                <i class="fas fa-times me-1"></i> Limpiar filtros
            </a>
            <?php endif; ?>
            <button type="button" class="btn btn-pdf" id="exportPdf">
                <i class="fas fa-file-pdf me-1"></i> Exportar PDF
            </button>
        </div>
    </form>

    <?php if(!empty($search) || !empty($filter)): ?>
    <div class="mt-3">
        <span class="badge-filter">
            <i class="fas fa-filter"></i> Filtros activos
            <?php if(!empty($search)): ?>
            <span class="badge bg-secondary">Buscar: <?php echo htmlspecialchars($search); ?></span>
            <?php endif; ?>
            <?php if(!empty($filter)): 
                $cat_nombre = "SELECT nombre FROM categoria WHERE id_categoria = '$filter'";
                $cat_result = mysqli_query($conexion, $cat_nombre);
                $cat_row = mysqli_fetch_assoc($cat_result);
                $categoria_nombre = $cat_row ? $cat_row['nombre'] : $filter;
            ?>
            <span class="badge bg-secondary">Categoría: <?php echo $categoria_nombre; ?></span>
            <?php endif; ?>
            <a href="menu.php?page=productos" class="remove-filter">
                <i class="fas fa-times-circle"></i>
            </a>
        </span>
        <span class="text-muted ms-2">
            <i class="fas fa-info-circle"></i>
            <?php echo $total_registros; ?> registro(s) encontrado(s)
        </span>
    </div>
    <?php endif; ?>
</div>

<!-- Tabla de Productos -->
<div class="table-container">
    <?php if($total_registros > 0): ?>
    <div class="table-responsive">
        <table class="table table-hover align-middle" id="tablaProductos">
            <thead>
                <tr>
                    <th>ID</th>
                    <th>Nombre</th>
                    <th>Marca</th>
                    <th>Modelo</th>
                    <th>Precio</th>
                    <th>Cantidad</th>
                    <th>Categoría</th>
                    <th class="text-center">Acciones</th>
                </tr>
            </thead>
            <tbody>
                <?php while($fila = mysqli_fetch_assoc($resultado)): ?>
                <tr>
                    <td><span class="badge bg-secondary">#<?php echo $fila['id_accesorio']; ?></span></td>
                    <td>
                        <div class="d-flex align-items-center">
                            <div class="avatar-sm me-2">
                                <i class="fas fa-box text-secondary"></i>
                            </div>
                            <strong><?php echo htmlspecialchars($fila['nombre']); ?></strong>
                        </div>
                    </td>
                    <td><?php echo htmlspecialchars($fila['marca']); ?></td>
                    <td><?php echo htmlspecialchars($fila['modelo']); ?></td>
                    <td><span class="badge bg-success">S/. <?php echo number_format($fila['precio'], 2); ?></span></td>
                    <td>
                        <span class="badge <?php echo $fila['cantidad'] <= 5 ? 'bg-danger' : 'bg-info text-dark'; ?>">
                            <?php echo $fila['cantidad']; ?>
                        </span>
                    </td>
                    <td><span class="badge bg-primary"><?php echo htmlspecialchars($fila['categoria']); ?></span></td>
                    <td class="text-center action-buttons">
                        <a href="Producto/editar.php?id=<?php echo $fila['id_accesorio']; ?>"
                            class="btn btn-edit btn-sm" title="Editar">
                            <i class="fas fa-edit"></i>
                        </a>
                        <a href="Producto/eliminar.php?id=<?php echo $fila['id_accesorio']; ?>"
                            class="btn btn-delete btn-sm"
                            onclick="return confirm('¿Estás seguro de eliminar este producto?')"
                            title="Eliminar">
                            <i class="fas fa-trash-alt"></i>
                        </a>
                    </td>
                </tr>
                <?php endwhile; ?>
            </tbody>
        </table>
    </div>
    <?php else: ?>
    <div class="empty-state">
        <i class="fas fa-box-open"></i>
        <h5>No se encontraron productos</h5>
        <p class="text-muted">Prueba ajustando los filtros de búsqueda</p>
        <a href="Producto/nuevo.php" class="btn btn-primary mt-2">
            <i class="fas fa-plus me-1"></i> Crear nuevo producto
        </a>
    </div>
    <?php endif; ?>
</div>

<script>
$(document).ready(function() {
    // Inicializar DataTable
    $('#tablaProductos').DataTable({
        language: {
            url: '//cdn.datatables.net/plug-ins/1.13.6/i18n/es-ES.json'
        },
        pageLength: 10,
        lengthMenu: [[5, 10, 25, 50, -1], [5, 10, 25, 50, "Todos"]],
        dom: '<"d-flex justify-content-between"lf>tip'
    });

    // ===== EXPORTAR PDF =====
    $('#exportPdf').click(function() {
        // DATOS DIRECTAMENTE DESDE PHP
        var datos = <?php echo json_encode($datos_productos, JSON_UNESCAPED_UNICODE); ?>;
        
        if(datos.length === 0) {
            alert('No hay datos para exportar');
            return;
        }

        // Verificar que jsPDF existe
        if (typeof window.jspdf === 'undefined') {
            alert('Error: jsPDF no está cargado. Por favor, recarga la página.');
            return;
        }

        // Preparar datos para el PDF
        var rows = [];
        for(var i = 0; i < datos.length; i++) {
            var d = datos[i];
            rows.push([
                d.id,
                d.nombre,
                d.marca,
                d.modelo,
                'S/. ' + parseFloat(d.precio).toFixed(2),
                d.cantidad,
                d.categoria
            ]);
        }

        const { jsPDF } = window.jspdf;
        const doc = new jsPDF({
            orientation: 'landscape',
            unit: 'mm',
            format: 'a4'
        });

        doc.setFontSize(16);
        doc.setTextColor(0, 40, 85);
        doc.text('Lista de Productos - Sistema Web', 14, 20);

        doc.setFontSize(10);
        doc.setTextColor(100);
        doc.text('Fecha de exportación: ' + new Date().toLocaleString(), 14, 27);

        // Filtros
        let filtros = [];
        <?php if(!empty($search)): ?>
        filtros.push('Búsqueda: <?php echo addslashes($search); ?>');
        <?php endif; ?>
        <?php if(!empty($filter)): 
            $cat_nombre = "SELECT nombre FROM categoria WHERE id_categoria = '$filter'";
            $cat_result = mysqli_query($conexion, $cat_nombre);
            $cat_row = mysqli_fetch_assoc($cat_result);
            $categoria_nombre = $cat_row ? $cat_row['nombre'] : $filter;
        ?>
        filtros.push('Categoría: <?php echo addslashes($categoria_nombre); ?>');
        <?php endif; ?>
        if(filtros.length > 0) {
            doc.setFontSize(9);
            doc.text('Filtros: ' + filtros.join(' | '), 14, 33);
        }

        var headers = ['ID', 'Nombre', 'Marca', 'Modelo', 'Precio', 'Cantidad', 'Categoría'];
        
        doc.autoTable({
            head: [headers],
            body: rows,
            startY: 37,
            theme: 'grid',
            headStyles: {
                fillColor: [0, 40, 85],
                textColor: [255, 255, 255],
                fontSize: 10,
                halign: 'center'
            },
            bodyStyles: {
                fontSize: 9
            },
            columnStyles: {
                0: { cellWidth: 15, halign: 'center' },
                1: { cellWidth: 40 },
                2: { cellWidth: 25 },
                3: { cellWidth: 25 },
                4: { cellWidth: 25, halign: 'center' },
                5: { cellWidth: 20, halign: 'center' },
                6: { cellWidth: 30, halign: 'center' }
            },
            margin: { left: 14, right: 14 }
        });

        var pageCount = doc.internal.getNumberOfPages();
        for (var i = 1; i <= pageCount; i++) {
            doc.setPage(i);
            doc.setFontSize(8);
            doc.setTextColor(150);
            doc.text('Sistema Web - Página ' + i + ' de ' + pageCount, 14, doc.internal.pageSize.height - 10);
        }

        doc.save('productos_' + new Date().toISOString().slice(0,10) + '.pdf');
    });
});
</script>