<?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 detalle_venta con accesorio
$sql = "SELECT detalle_venta.*, accesorio.nombre AS producto
        FROM detalle_venta
        LEFT JOIN accesorio ON detalle_venta.id_producto = accesorio.id_accesorio
        WHERE 1=1";

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

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

$sql .= " ORDER BY detalle_venta.id_detalle DESC";
$resultado = mysqli_query($conexion, $sql);

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

$total_registros = mysqli_num_rows($resultado);

// IDs de venta para filtro
$ventas_sql = "SELECT DISTINCT id_venta FROM detalle_venta ORDER BY id_venta DESC";
$ventas_result = mysqli_query($conexion, $ventas_sql);

// ===== GUARDAR DATOS EN UN ARRAY PARA EL PDF =====
$datos_detalles = array();
while($fila = mysqli_fetch_assoc($resultado)) {
    $datos_detalles[] = array(
        'id_detalle' => $fila['id_detalle'],
        'id_venta' => $fila['id_venta'],
        'producto' => $fila['producto'],
        'cantidad' => $fila['cantidad'],
        'precio_unitario' => number_format($fila['precio_unitario'], 2),
        'subtotal' => number_format($fila['subtotal'], 2)
    );
}

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

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

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

$sql .= " ORDER BY detalle_venta.id_detalle 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-list me-2 text-primary"></i>Gestión de Detalle de Ventas</h2>
    <div>
        <a href="Detalleventa/nuevo.php" class="btn btn-primary me-2">
            <i class="fas fa-plus me-1"></i> Nuevo Detalle
        </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> detalles de venta.
</div>
<?php else: ?>
<div class="alert alert-warning">
    <i class="fas fa-exclamation-triangle me-2"></i>
    <strong>⚠️ No se encontraron detalles de venta</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>
    Detalle de venta 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>
    Detalle de venta 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>
    Detalle de venta eliminado correctamente.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

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

<?php if($error == 'venta_no_existe'): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
    <i class="fas fa-exclamation-circle me-2"></i>
    La venta seleccionada no existe.
    <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 detalle. 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 detalle. 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 detalle inválido.
    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<?php if($error == 'cantidad_invalida'): ?>
<div class="alert alert-danger alert-dismissible fade show" role="alert">
    <i class="fas fa-exclamation-circle me-2"></i>
    La cantidad debe ser mayor a 0.
    <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="detalleventas">
        
        <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 producto o ID venta..."
                    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="">Todos los ID Venta</option>
                <?php while($venta = mysqli_fetch_assoc($ventas_result)): ?>
                <option value="<?php echo $venta['id_venta']; ?>"
                    <?php echo $filter == $venta['id_venta'] ? 'selected' : ''; ?>>
                    Venta #<?php echo $venta['id_venta']; ?>
                </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=detalleventas" 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)): ?>
            <span class="badge bg-secondary">Venta #<?php echo htmlspecialchars($filter); ?></span>
            <?php endif; ?>
            <a href="menu.php?page=detalleventas" 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 Detalles de Venta -->
<div class="table-container">
    <?php if($total_registros > 0): ?>
    <div class="table-responsive">
        <table class="table table-hover align-middle" id="tablaDetalles">
            <thead>
                <tr>
                    <th>ID Detalle</th>
                    <th>ID Venta</th>
                    <th>Producto</th>
                    <th>Cantidad</th>
                    <th>Precio Unitario</th>
                    <th>Subtotal</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_detalle']; ?></span></td>
                    <td><span class="badge bg-primary">#<?php echo $fila['id_venta']; ?></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['producto']); ?></strong>
                        </div>
                    </td>
                    <td>
                        <span class="badge bg-info text-dark">
                            <i class="fas fa-cubes me-1"></i> <?php echo $fila['cantidad']; ?>
                        </span>
                    </td>
                    <td>S/. <?php echo number_format($fila['precio_unitario'], 2); ?></td>
                    <td><span class="badge bg-success">S/. <?php echo number_format($fila['subtotal'], 2); ?></span></td>
                    <td class="text-center action-buttons">
                        <a href="Detalleventa/editar.php?id=<?php echo $fila['id_detalle']; ?>"
                            class="btn btn-edit btn-sm" title="Editar">
                            <i class="fas fa-edit"></i>
                        </a>
                        <a href="Detalleventa/eliminar.php?id=<?php echo $fila['id_detalle']; ?>"
                            class="btn btn-delete btn-sm"
                            onclick="return confirm('¿Estás seguro de eliminar este detalle?')"
                            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-receipt"></i>
        <h5>No se encontraron detalles de venta</h5>
        <p class="text-muted">Prueba ajustando los filtros de búsqueda</p>
        <a href="Detalleventa/nuevo.php" class="btn btn-primary mt-2">
            <i class="fas fa-plus me-1"></i> Crear nuevo detalle
        </a>
    </div>
    <?php endif; ?>
</div>

<script>
$(document).ready(function() {
    // Inicializar DataTable
    $('#tablaDetalles').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_detalles, JSON_UNESCAPED_UNICODE); ?>;
        
        console.log('Datos Detalles:', datos); // Ver en consola del navegador
        
        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_detalle,
                d.id_venta,
                d.producto,
                d.cantidad,
                'S/. ' + d.precio_unitario,
                'S/. ' + d.subtotal
            ]);
        }

        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 Detalles de Venta - 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)): ?>
        filtros.push('Venta #<?php echo addslashes($filter); ?>');
        <?php endif; ?>
        if(filtros.length > 0) {
            doc.setFontSize(9);
            doc.text('Filtros: ' + filtros.join(' | '), 14, 33);
        }

        var headers = ['ID Detalle', 'ID Venta', 'Producto', 'Cantidad', 'Precio Unitario', 'Subtotal'];
        
        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: 20, halign: 'center' },
                1: { cellWidth: 20, halign: 'center' },
                2: { cellWidth: 45 },
                3: { cellWidth: 20, halign: 'center' },
                4: { cellWidth: 30, halign: 'center' },
                5: { 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('detalle_ventas_' + new Date().toISOString().slice(0,10) + '.pdf');
    });
});
</script>