<?php
session_start();

// Validar acceso
if (!in_array($_SESSION['rol'], ['admin', 'coordinador', 'reclutador'])) {
  exit('Acceso denegado');
}

require_once(__DIR__ . '/../db/conexion.php');
require_once(__DIR__ . '/../../vendor/autoload.php');

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Style\Alignment;

// Crear Excel
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setTitle('Aspirantes Rechazados');

// Encabezados
$encabezados = [
  'Folio', 'Nombre completo', 'CURP', 'Correo', 'Teléfono',
  'Puesto', 'Ubicación', 'Fecha de registro',
  'Reclutador', 'Motivo de rechazo' 
];
$sheet->fromArray($encabezados, null, 'A1');

// Estilo encabezado
$sheet->getStyle('A1:J1')->applyFromArray([
  'font' => ['bold' => true],
  'fill' => ['fillType' => Fill::FILL_SOLID, 'startColor' => ['argb' => 'FFD9D9D9']],
  'alignment' => ['horizontal' => Alignment::HORIZONTAL_CENTER],
  'borders' => ['allBorders' => ['borderStyle' => Border::BORDER_THIN]],
]);

// Consulta con subquery de nombre del reclutador
$sql = "
SELECT 
  a.folio,
  CONCAT(a.nombre, ' ', a.apellido_paterno, ' ', a.apellido_materno) AS nombre_completo,
  a.curp,
  a.correo,
  a.telefono,
  a.puesto,
  a.ubicacion,
  a.fecha_registro,
  (
    SELECT se.comentario 
    FROM seguimiento_estatus se 
    WHERE se.aspirante_id = a.id AND se.estatus = 'rechazado' 
    ORDER BY se.fecha DESC 
    LIMIT 1
  ) AS motivo_rechazo,
  (
    SELECT CONCAT(r.nombre, ' ', r.apellido_paterno, ' ', r.apellido_materno)
    FROM seguimiento_estatus se
    JOIN reclutadores r ON r.attuid = se.usuario
    WHERE se.aspirante_id = a.id AND se.estatus = 'rechazado'
    ORDER BY se.fecha DESC 
    LIMIT 1
  ) AS reclutador_rechazo
FROM aspirantes a
WHERE a.estatus_actual = 'rechazado'
ORDER BY a.fecha_registro DESC";

$result = $conn->query($sql);

// Llenar filas
$fila = 2;
while ($r = $result->fetch_assoc()) {
    $sheet->setCellValue('A' . $fila, $r['folio']);
    $sheet->setCellValue('B' . $fila, $r['nombre_completo']);
    $sheet->setCellValue('C' . $fila, $r['curp']);
    $sheet->setCellValue('D' . $fila, $r['correo']);
    $sheet->setCellValue('E' . $fila, $r['telefono']);
    $sheet->setCellValue('F' . $fila, $r['puesto']);
    $sheet->setCellValue('G' . $fila, $r['ubicacion']);
    $sheet->setCellValue('H' . $fila, date('d/m/Y', strtotime($r['fecha_registro'])));
    $sheet->setCellValue('I' . $fila, $r['reclutador_rechazo']);
    $sheet->setCellValue('J' . $fila, $r['motivo_rechazo']);
    
    $fila++;
}

// Autoajuste de columnas
foreach (range('A', 'J') as $col) {
    $sheet->getColumnDimension($col)->setAutoSize(true);
}

// Limpiar buffers
if (ob_get_length()) ob_end_clean();

// Descargar Excel
$filename = "aspirantes_rechazados_" . date("Ymd_His") . ".xlsx";
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header("Content-Disposition: attachment; filename=\"$filename\"");
header('Cache-Control: max-age=0');

$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
exit;
