<?php
if (session_status() === PHP_SESSION_NONE) {
  session_start();
}
error_reporting(0);
ini_set('display_errors', 0);

header('Content-Type: application/json');
require_once(__DIR__ . '/../db/conexion.php');

$attuid = $_SESSION['attuid'];
$inicio = $_GET['inicio'] ?? null;
$fin = $_GET['fin'] ?? null;
$IncluirAnteriores = isset($_GET['incAnt']) ? (bool)$_GET['incAnt'] : false;

$condEnProceso = '';
$secCondEnProceso = '';
$condProcAcum = '';
$condProcBanco = '';
$paramsEnProceso = [];
$tiposEnProceso = '';

if ($fin) {

  if(!$IncluirAnteriores){
    $condEnProceso = "WHERE DATE(fecha) <= ?";
    $secCondEnProceso = "AND DATE(a.fecha_registro) <= ?";
    $condProcAcum = "AND DATE(a.fecha_registro) >= ?";
    $condProcBanco = "AND DATE(fecha_ingreso) <= ?";
    $paramsEnProceso = [ $fin, $fin, $inicio, $attuid, $fin ];
    $tiposEnProceso = 'sssss';

  }else{
    $condEnProceso = "WHERE DATE(fecha) <= ?";
    $secCondEnProceso = "AND DATE(a.fecha_registro) <= ?";
    $condProcBanco = "AND DATE(fecha_ingreso) <= ?";
    $paramsEnProceso = [ $fin, $fin, $attuid, $fin ];
    $tiposEnProceso = 'ssss';

  }

} else {
  $paramsEnProceso = [$attuid];
  $tiposEnProceso = 's';
}

$sqlEnProceso = "
  SELECT 
    a.id,
    a.nombre,
    a.apellido_paterno,
    a.apellido_materno,
    COALESCE(s.estatus, 'asignado') as estatus_actual,
    a.attuid,
    r.nombre AS reclutador_nombre,
    r.apellido_paterno AS reclutador_ap,
    r.apellido_materno AS reclutador_am
  FROM aspirantes a
  INNER JOIN reclutadores r ON a.attuid = r.attuid
  LEFT JOIN (
      SELECT s1.aspirante_id, s1.estatus, s1.fecha
      FROM seguimiento_estatus s1
      INNER JOIN (
          SELECT MAX(id) as max_id
          FROM seguimiento_estatus
          $condEnProceso
          GROUP BY aspirante_id
      ) s2 ON s1.id = s2.max_id
  ) s ON a.id = s.aspirante_id
    WHERE COALESCE(s.estatus, 'asignado') NOT IN (
      'asignado',  'rechazado', 'contratado', 'en_pre_alta', 'en_plantilla', 'proceso_concluido'
    )
        $secCondEnProceso
        $condProcAcum
    AND a.attuid = ?
    AND a.id NOT IN (
        SELECT aspirante_id FROM banco_registros WHERE estatus = 'pendiente'
        $condProcBanco
    )
  ORDER BY r.nombre, COALESCE(s.estatus, 'asignado')
";

$smt = $conn->prepare($sqlEnProceso);
if (!empty($paramsEnProceso)) {
    $smt->bind_param($tiposEnProceso, ...$paramsEnProceso);
}
$smt->execute();
$result = $smt->get_result();

$data = [];
while ($row = $result->fetch_assoc()) {
    $nombre = strtoupper($row['nombre'] . ' ' . $row['apellido_paterno'] . ' ' . $row['apellido_materno']);
    $reclutador = strtoupper($row['reclutador_nombre'] . ' ' . $row['reclutador_ap'] . ' ' . $row['reclutador_am']);
    
    // Agrupar por reclutador
    if (!isset($data[$reclutador])) {
        $data[$reclutador] = [];
    }
    
    $data[$reclutador][] = [
        'id' => $row['id'],
        'nombre' => $nombre,
        'estatus' => strtoupper($row['estatus_actual'])
    ];
}

echo json_encode(['success' => true, 'data' => $data]);
?>