<?php
require '../vendor/autoload.php';
include("../config/conexion.php");

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\Color;

// Validar datos del formulario
if (isset($_POST['grado'], $_POST['carrera'], $_POST['seccion'], $_POST['fecha_inicio'], $_POST['fecha_fin'])) {
    $grado = $_POST['grado'];
    $carrera = $_POST['carrera'];
    $seccion = $_POST['seccion'];
    $fechaInicio = $_POST['fecha_inicio'];
    $fechaFin = $_POST['fecha_fin'];

    // Consulta SQL
    $sql = "SELECT rf.idregistro, rf.carnet, rf.nombre, rf.apellidos, rf.carrera, rf.grado, rf.seccion,
                   rf.falta, rf.bimestre, rf.fecha, rf.observaciones, u.nombre AS usuario
            FROM registro_falta rf
            INNER JOIN usuarios u ON rf.idusuario = u.id
            WHERE rf.grado = ? AND rf.carrera = ? AND rf.seccion = ? AND rf.fecha BETWEEN ? AND ?";

    $stmt = $conexion->prepare($sql);
    $stmt->bind_param("sssss", $grado, $carrera, $seccion, $fechaInicio, $fechaFin);
    $stmt->execute();
    $resultado = $stmt->get_result();

    if ($resultado->num_rows > 0) {
        $spreadsheet = new Spreadsheet();
        $sheet = $spreadsheet->getActiveSheet();
        $sheet->setTitle("Faltas");

        // Encabezados
        $encabezados = ['ID', 'Carnet', 'Nombre', 'Apellidos', 'Carrera', 'Grado', 'Sección', 'Falta', 'Bimestre', 'Fecha', 'Observaciones', 'Usuario'];
        $col = 'A';
        foreach ($encabezados as $titulo) {
            $sheet->setCellValue($col . '1', $titulo);
            $sheet->getStyle($col . '1')->getFont()->setBold(true)->getColor()->setARGB(Color::COLOR_WHITE);
            $sheet->getStyle($col . '1')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('4B6584');
            $col++;
        }

        // Filas de datos
        $fila = 2;
        while ($row = $resultado->fetch_assoc()) {
            $col = 'A';
            foreach ($row as $valor) {
                $sheet->setCellValue($col . $fila, $valor);
                $col++;
            }
            $fila++;
        }

        // Ajustar ancho automáticamente
        foreach (range('A', $sheet->getHighestColumn()) as $col) {
            $sheet->getColumnDimension($col)->setAutoSize(true);
        }

        // Encabezados HTTP para descarga
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header("Content-Disposition: attachment;filename=\"faltas_grado_{$grado}_{$fechaInicio}_{$fechaFin}.xlsx\"");
        header('Cache-Control: max-age=0');

        // Guardar el archivo en la salida
        $writer = new Xlsx($spreadsheet);
        $writer->save('php://output');
        exit;
    } else {
        echo "No se encontraron registros.";
    }
} else {
    echo "Parámetros incompletos.";
}
