<?php
session_start();
require_once(__DIR__ . '/../db/conexion.php');
header('Content-Type: application/json; charset=utf-8');

if (!isset($_SESSION['rol']) || !in_array($_SESSION['rol'], ['admin', 'adminTi', 'coordinador'])) {
    echo json_encode(['success' => false, 'message' => 'Acceso denegado']);
    exit;
}

// Recibir el JSON del body
$input = json_decode(file_get_contents('php://input'), true);

$inicio = isset($input['inicio']) ? $input['inicio'] : null;
$fin = isset($input['fin']) ? $input['fin'] : null;
$reclutadores = isset($input['reclutadores']) ? $input['reclutadores'] : [];
$incluirAnteriores = isset($input['incAnt']) ? (bool)$input['incAnt'] : false;

// Construir condición IN para reclutadores
$placeholders = implode(',', array_fill(0, count($reclutadores), '?'));
$condicionReclutadores = "AND a.attuid IN ($placeholders)";

$condPendientes = '';
$secCondPendientes = '';
$condPendAcum = '';
$condPendBanco = '';
$paramsPendientes = [];
$tiposPendientes = '';

if ($inicio && $fin) {

    if(!$incluirAnteriores){
        $condPendientes = "WHERE DATE(fecha) <= ?";
        $secCondPendientes = "AND DATE(a.fecha_registro) <= ?";
        $condPendAcum = "AND DATE(a.fecha_registro) >= ?";
        $condPendBanco = "AND DATE(fecha_ingreso) <= ?";
        $paramsPendientes = [$fin, $fin, $inicio, $fin];
        $tiposPendientes = 'ssss';

    }else {
        $condPendientes = "WHERE DATE(fecha) <= ?";
        $secCondPendientes = "AND DATE(a.fecha_registro) <= ?";
        $condPendBanco = "AND DATE(fecha_ingreso) <= ?";
        $paramsPendientes = [$fin, $fin, $fin];
        $tiposPendientes = 'sss';
    }
}   

$paramsPendientes = array_merge($paramsPendientes, $reclutadores);
$tiposPendientes .= str_repeat('s', count($reclutadores));

$sqlPendientes= "
SELECT a.id, a.nombre, a.apellido_paterno, a.apellido_materno, DATE(a.fecha_registro) AS fecha
FROM aspirantes a
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
        $condPendientes
        GROUP BY aspirante_id
    ) s2 ON s1.id = s2.max_id
) s ON a.id = s.aspirante_id
WHERE COALESCE(s.estatus, 'asignado') = 'asignado'
$secCondPendientes
$condPendAcum
AND a.id NOT IN (
    SELECT aspirante_id FROM banco_registros WHERE estatus = 'pendiente'
    $condPendBanco
)
$condicionReclutadores
";
$_stmt = $conn->prepare($sqlPendientes);
if (!empty($paramsPendientes)) {
    $_stmt->bind_param($tiposPendientes, ...$paramsPendientes);
}
$_stmt->execute();
$result = $_stmt->get_result();

$data =[];
while ($row = $result->fetch_assoc()) {
    $nombre = strtoupper($row['nombre'] . ' ' . $row['apellido_paterno'] . ' ' . $row['apellido_materno']);
    $data[] = [
        'id' => $row['id'],
        'nombre' => $nombre,
        'fecha' => date('d/m/Y', strtotime($row['fecha']))
    ];
}
echo json_encode(['success' => true, 'data' => $data]);

?>