<?php
require_once '../../config/config.php';
require_once '../../config/database.php';
require_once '../../includes/functions.php';

// 1. Verificación de seguridad
if (!isset($_SESSION['usuario_id'])) {
    header("Location: ../../index.php");
    exit();
}

// 2. Configuración de Fechas y Filtros (Predeterminado: hace 1 mes hasta hoy)
$hoy = date('Y-m-d');
$hace_un_mes = date('Y-m-d', strtotime('-1 month'));

$fecha_inicio = !empty($_GET['fecha_inicio']) ? $_GET['fecha_inicio'] : $hace_un_mes;
$fecha_fin = !empty($_GET['fecha_fin']) ? $_GET['fecha_fin'] : $hoy;
$filtro_estado = $_GET['estado'] ?? '';
$filtro_prioridad = $_GET['prioridad'] ?? '';

// 3. Construcción de la Consulta SQL con Filtro de Privacidad
$sql = "SELECT t.*, 
               e.nombre as estado_nombre, e.color_hex,
               p.nombre as prioridad_nombre,
               u.nombre as solicitante,
               TIMESTAMPDIFF(HOUR, t.fecha_creacion, NOW()) as horas_abierto,
               TIMESTAMPDIFF(MINUTE, t.fecha_creacion, NOW()) % 60 as minutos_restantes
        FROM tickets t
        JOIN ticket_estados e ON t.id_estado = e.id
        JOIN ticket_prioridades p ON t.id_prioridad = p.id
        JOIN usuarios u ON t.id_solicitante = u.id
        WHERE DATE(t.fecha_creacion) BETWEEN ? AND ?";

$params = [$fecha_inicio, $fecha_fin];

// SEGURIDAD: Si no es Admin, filtrar para que solo vea sus propios tickets
if ($_SESSION['usuario_rol'] != ROL_ADMIN) {
    $sql .= " AND t.id_solicitante = ?";
    $params[] = $_SESSION['usuario_id'];
}

// Filtros adicionales de Estado y Prioridad
if ($filtro_estado != '') {
    $sql .= " AND t.id_estado = ?";
    $params[] = $filtro_estado;
}

if ($filtro_prioridad != '') {
    $sql .= " AND t.id_prioridad = ?";
    $params[] = $filtro_prioridad;
}

// Ordenar: Primero los abiertos (id_estado != 4), luego por prioridad y fecha
$sql .= " ORDER BY (t.id_estado = 4) ASC, t.id_prioridad DESC, t.fecha_creacion DESC";

$stmt = $pdo->prepare($sql);
$stmt->execute($params);
$tickets = $stmt->fetchAll();

include '../layout/header.php';
?>

<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
    
    <div class="flex flex-col md:flex-row justify-between items-start md:items-center mb-8 gap-4">
        <div>
            <h1 class="text-3xl font-bold text-slate-800">Soporte Técnico TIC</h1>
            <p class="text-slate-500 text-sm">Mostrando reportes desde el <?php echo date('d/m/Y', strtotime($fecha_inicio)); ?> hasta hoy.</p>
        </div>
        <div class="flex gap-3">
            <button onclick="exportarExcel()" class="bg-green-600 hover:bg-green-700 text-white px-5 py-2.5 rounded-xl font-bold shadow-lg transition flex items-center gap-2 text-sm">
                <i class="fas fa-file-excel"></i> Exportar
            </button>
            <a href="nuevo.php" class="bg-blue-600 hover:bg-blue-700 text-white px-5 py-2.5 rounded-xl font-bold shadow-lg transition flex items-center gap-2 text-sm">
                <i class="fas fa-plus"></i> Nuevo Ticket
            </a>
        </div>
    </div>

    <div class="bg-white p-6 rounded-2xl shadow-sm border border-slate-100 mb-6">
        <form method="GET" class="grid grid-cols-1 md:grid-cols-5 gap-4 items-end">
            <div>
                <label class="text-[10px] font-bold text-slate-400 uppercase">Desde</label>
                <input type="date" name="fecha_inicio" value="<?php echo $fecha_inicio; ?>" class="w-full mt-1 p-2 bg-slate-50 border border-slate-200 rounded-lg text-sm">
            </div>
            <div>
                <label class="text-[10px] font-bold text-slate-400 uppercase">Hasta</label>
                <input type="date" name="fecha_fin" value="<?php echo $fecha_fin; ?>" class="w-full mt-1 p-2 bg-slate-50 border border-slate-200 rounded-lg text-sm">
            </div>
            <div>
                <label class="text-[10px] font-bold text-slate-400 uppercase">Estado</label>
                <select name="estado" class="w-full mt-1 p-2 bg-slate-50 border border-slate-200 rounded-lg text-sm">
                    <option value="">Todos</option>
                    <option value="1" <?php echo $filtro_estado == '1' ? 'selected' : ''; ?>>Abiertos</option>
                    <option value="4" <?php echo $filtro_estado == '4' ? 'selected' : ''; ?>>Cerrados</option>
                </select>
            </div>
            <div>
                <label class="text-[10px] font-bold text-slate-400 uppercase">Prioridad</label>
                <select name="prioridad" class="w-full mt-1 p-2 bg-slate-50 border border-slate-200 rounded-lg text-sm">
                    <option value="">Todas</option>
                    <option value="3" <?php echo $filtro_prioridad == '3' ? 'selected' : ''; ?>>Urgente</option>
                    <option value="2" <?php echo $filtro_prioridad == '2' ? 'selected' : ''; ?>>Normal</option>
                </select>
            </div>
            <div class="flex gap-2">
                <button type="submit" class="flex-1 bg-slate-800 text-white p-2.5 rounded-lg text-sm font-bold hover:bg-slate-900 transition">
                    Filtrar
                </button>
                <a href="index.php" class="p-2.5 bg-slate-100 text-slate-500 rounded-lg hover:bg-slate-200 transition">
                    <i class="fas fa-sync-alt"></i>
                </a>
            </div>
        </form>
    </div>

    <div class="bg-white rounded-2xl shadow-xl border border-slate-100 overflow-hidden">
        <table id="tablaTickets" class="min-w-full divide-y divide-slate-100">
            <thead class="bg-slate-50">
                <tr>
                    <th class="px-6 py-4 text-left text-[10px] font-bold text-slate-400 uppercase">ID / Fecha</th>
                    <th class="px-6 py-4 text-left text-[10px] font-bold text-slate-400 uppercase">Solicitante / Asunto</th>
                    <th class="px-6 py-4 text-center text-[10px] font-bold text-slate-400 uppercase">Prioridad</th>
                    <th class="px-6 py-4 text-center text-[10px] font-bold text-slate-400 uppercase">Estado</th>
                    <th class="px-6 py-4 text-right text-[10px] font-bold text-slate-400 uppercase">Tiempo Abierto</th>
                </tr>
            </thead>
            <tbody class="divide-y divide-slate-100">
                <?php if(empty($tickets)): ?>
                    <tr>
                        <td colspan="5" class="px-6 py-12 text-center text-slate-400 italic text-sm">No se encontraron registros en este periodo.</td>
                    </tr>
                <?php endif; ?>

                <?php foreach($tickets as $t): ?>
                <tr class="hover:bg-slate-50 transition cursor-pointer" onclick="window.location='detalle.php?id=<?php echo $t['id']; ?>'">
                    <td class="px-6 py-4">
                        <span class="text-xs font-bold text-blue-600">#<?php echo str_pad($t['id'], 4, "0", STR_PAD_LEFT); ?></span>
                        <p class="text-[10px] text-slate-400"><?php echo date('d/m/Y', strtotime($t['fecha_creacion'])); ?></p>
                    </td>
                    <td class="px-6 py-4">
                        <div class="flex flex-col">
                            <span class="text-sm font-bold text-slate-700"><?php echo htmlspecialchars($t['solicitante']); ?></span>
                            <span class="text-xs text-slate-500 truncate max-w-xs"><?php echo htmlspecialchars($t['titulo']); ?></span>
                        </div>
                    </td>
                    <td class="px-6 py-4 text-center">
                        <span class="px-2.5 py-1 rounded-md text-[9px] font-bold uppercase <?php echo ($t['id_prioridad'] == 3) ? 'bg-red-100 text-red-600' : 'bg-slate-100 text-slate-500'; ?>">
                            <?php echo $t['prioridad_nombre']; ?>
                        </span>
                    </td>
                    <td class="px-6 py-4 text-center">
                        <span class="px-3 py-1 rounded-full text-white text-[9px] font-bold shadow-sm" style="background-color: <?php echo $t['color_hex']; ?>">
                            <?php echo $t['estado_nombre']; ?>
                        </span>
                    </td>
                    <td class="px-6 py-4 text-right">
                        <?php if($t['id_estado'] == 4): ?>
                            <span class="text-[10px] text-slate-400 italic">Cerrado</span>
                        <?php else: ?>
                            <span class="text-xs font-bold <?php echo ($t['horas_abierto'] >= 24) ? 'text-red-600' : 'text-slate-700'; ?>">
                                <?php 
                                    if ($t['horas_abierto'] >= 24) {
                                        echo floor($t['horas_abierto']/24) . "d " . ($t['horas_abierto'] % 24) . "h";
                                    } else {
                                        echo $t['horas_abierto'] . "h " . $t['minutos_restantes'] . "m";
                                    }
                                ?>
                            </span>
                        <?php endif; ?>
                    </td>
                </tr>
                <?php endforeach; ?>
            </tbody>
        </table>
    </div>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
<script>
function exportarExcel() {
       // 4. Transformar los datos PHP (JSON) a un formato de Excel limpio
    const dataTickets = <?php echo json_encode($tickets); ?>;
    
    const dataLimpia = dataTickets.map(t => ({
        "ID Ticket": t.id,
        "Fecha Creación": t.fecha_creacion,
        "Solicitante": t.solicitante,
        "Asunto": t.titulo,
        "Descripción Detallada": t.descripcion,
        "Estado": t.estado_nombre,
        "Prioridad": t.prioridad_nombre,
        "Marca Equipo": t.marca || 'N/A',
        "Modelo": t.modelo || 'N/A',
        "Serie": t.serie || 'N/A',
        "Horas Abierto": t.id_estado == 4 ? 'Cerrado' : t.horas_abierto,
        "Fecha Actualización": t.fecha_actualizacion || 'Sin cambios'
    }));

    const worksheet = XLSX.utils.json_to_sheet(dataLimpia);
    const workbook = XLSX.utils.book_new();
    XLSX.utils.book_append_sheet(workbook, worksheet, "Reporte TIC Completo");

    // Ajuste de anchos de columna automático (opcional)
    worksheet['!cols'] = [{wch:10}, {wch:20}, {wch:25}, {wch:30}, {wch:50}, {wch:15}, {wch:12}, {wch:15}, {wch:15}, {wch:20}, {wch:15}, {wch:20}];

    const nombreArchivo = `Reporte_TIC_COCA_${new Date().toISOString().slice(0,10)}.xlsx`;
    XLSX.writeFile(workbook, nombreArchivo);
}
</script>

<?php include '../layout/footer.php'; ?>