<?php
session_start();
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

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

if (!isset($_SESSION['attuid'])) {
    echo json_encode(['status' => 'error', 'message' => 'No autorizado']);
    exit;
}

$aspirante_id = $_POST['aspirante_id'] ?? null;

if (!$aspirante_id) {
    echo json_encode(['status' => 'error', 'message' => 'ID de aspirante inválido']);
    exit;
}

// Obtener datos del aspirante
$stmt = $conn->prepare("SELECT nombre, apellido_paterno, apellido_materno, curp, rfc FROM aspirantes WHERE id = ?");
$stmt->bind_param("i", $aspirante_id);
$stmt->execute();
$res = $stmt->get_result();

if (!$res->num_rows) {
    echo json_encode(['status' => 'error', 'message' => 'Aspirante no encontrado']);
    exit;
}

$aspirante = $res->fetch_assoc();

$attuid = $_SESSION['attuid'];

$rfc = strtoupper(trim($aspirante['rfc'] ?? ''));
if (empty($rfc)) {
    http_response_code(400);
    echo json_encode(['status' => 'error', 'message' => 'RFC no registrado, primero captura el RFC del aspirante.']);
    exit;
}

// Mayúsculas para nombres
$nombreS = mb_strtoupper(trim($aspirante['nombre']), 'UTF-8');
$apellidoPaterno = mb_strtoupper(trim($aspirante['apellido_paterno']), 'UTF-8');
$apellidoMaterno = mb_strtoupper(trim($aspirante['apellido_materno']), 'UTF-8');
$nombreCompleto = "{$apellidoPaterno} {$apellidoMaterno} {$nombreS}";
$curp = trim($aspirante['curp']);

if (empty($curp)) {
    http_response_code(400);
    echo json_encode(['status' => 'error', 'message' => 'CURP no registrado']);
    return;
}

// Verificar si ya existe en Referencias
$check = $conn->prepare("SELECT `NOMBRE COMPLETO` FROM Referencias WHERE `CURP` = ?");
$check->bind_param("s", $curp);
$check->execute();
$checkResult = $check->get_result();

if ($checkResult->num_rows > 0) {
    // Si ya existe, actualiza Solicitado_por
    $update = $conn->prepare("UPDATE Referencias SET Solicitado_por = ? WHERE CURP = ?");
    $update->bind_param("ss", $attuid, $curp);
    $update->execute();
    echo json_encode(['status' => 'error', 'message' => 'El aspirante ya fue enviado a referencias, se actualizó el solicitante.']);
    exit;
}

// Extraer estado de nacimiento desde el CURP
$curpEstadoCode = strtoupper(substr($curp, 11, 2));

$catalogoEstados = [
    'AS' => 'AGUASCALIENTES', 'BC' => 'BAJA CALIFORNIA', 'BS' => 'BAJA CALIFORNIA SUR', 'CC' => 'CAMPECHE',
    'CL' => 'COAHUILA', 'CM' => 'COLIMA', 'CS' => 'CHIAPAS', 'CH' => 'CHIHUAHUA', 'DF' => 'CIUDAD DE MÉXICO',
    'DG' => 'DURANGO', 'GT' => 'GUANAJUATO', 'GR' => 'GUERRERO', 'HG' => 'HIDALGO', 'JC' => 'JALISCO',
    'MC' => 'MÉXICO', 'MN' => 'MICHOACÁN', 'MS' => 'MORELOS', 'NT' => 'NAYARIT', 'NL' => 'NUEVO LEÓN',
    'OC' => 'OAXACA', 'PL' => 'PUEBLA', 'QT' => 'QUERÉTARO', 'QR' => 'QUINTANA ROO', 'SP' => 'SAN LUIS POTOSÍ',
    'SL' => 'SINALOA', 'SR' => 'SONORA', 'TC' => 'TABASCO', 'TS' => 'TAMAULIPAS', 'TL' => 'TLAXCALA',
    'VZ' => 'VERACRUZ', 'YN' => 'YUCATÁN', 'ZS' => 'ZACATECAS', 'NE' => 'NACIDO EN EL EXTRANJERO'
];

$capitales = [
    'AGUASCALIENTES' => 'AGUASCALIENTES', 'BAJA CALIFORNIA' => 'MEXICALI', 'BAJA CALIFORNIA SUR' => 'LA PAZ',
    'CAMPECHE' => 'SAN FRANCISCO DE CAMPECHE', 'COAHUILA' => 'SALTILLO', 'COLIMA' => 'COLIMA',
    'CHIAPAS' => 'TUXTLA GUTIÉRREZ', 'CHIHUAHUA' => 'CHIHUAHUA', 'CIUDAD DE MÉXICO' => 'CIUDAD DE MÉXICO',
    'DURANGO' => 'DURANGO', 'GUANAJUATO' => 'GUANAJUATO', 'GUERRERO' => 'CHILPANCINGO', 'HIDALGO' => 'PACHUCA',
    'JALISCO' => 'GUADALAJARA', 'MÉXICO' => 'TOLUCA', 'MICHOACÁN' => 'MORELIA', 'MORELOS' => 'CUERNAVACA',
    'NAYARIT' => 'TEPIC', 'NUEVO LEÓN' => 'MONTERREY', 'OAXACA' => 'OAXACA DE JUÁREZ', 'PUEBLA' => 'PUEBLA',
    'QUERÉTARO' => 'QUERÉTARO', 'QUINTANA ROO' => 'CHETUMAL', 'SAN LUIS POTOSÍ' => 'SAN LUIS POTOSÍ',
    'SINALOA' => 'CULIACÁN', 'SONORA' => 'HERMOSILLO', 'TABASCO' => 'VILLAHERMOSA', 'TAMAULIPAS' => 'CIUDAD VICTORIA',
    'TLAXCALA' => 'TLAXCALA', 'VERACRUZ' => 'XALAPA', 'YUCATÁN' => 'MÉRIDA', 'ZACATECAS' => 'ZACATECAS',
    'NACIDO EN EL EXTRANJERO' => 'N/A'
];

$estadoNacimiento = mb_strtoupper($catalogoEstados[$curpEstadoCode] ?? 'DESCONOCIDO', 'UTF-8');
$ciudadNacimiento = mb_strtoupper($capitales[$estadoNacimiento] ?? 'DESCONOCIDA', 'UTF-8');

// Insertar en tabla
$insert = $conn->prepare("
    INSERT INTO Referencias (
        `NOMBRE COMPLETO`, `NOMBRE (s)`, `APELLIDO PATERNO`, `APELLIDO MATERNO`, `CURP`,
        `estadoNacimiento`, `ciudadNacimiento`, `Solicitado_por`, `RFC`
    ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
");

$insert->bind_param(
    "sssssssss",
    $nombreCompleto, $nombreS, $apellidoPaterno, $apellidoMaterno, $curp,
    $estadoNacimiento, $ciudadNacimiento, $attuid, $rfc
);

if ($insert->execute()) {
    // >>>> ENVÍO DE CORREO <<<<
    $attuid = $_SESSION['attuid'];
    $stmtR = $conn->prepare("SELECT nombre, apellido_paterno FROM reclutadores WHERE attuid = ?");
    $stmtR->bind_param("s", $attuid);
    $stmtR->execute();
    $resR = $stmtR->get_result();
    $rowR = $resR->fetch_assoc();
    $nombreReclutador = $rowR ? mb_strtoupper("{$rowR['nombre']} {$rowR['apellido_paterno']}", 'UTF-8') : $attuid;

    date_default_timezone_set('America/Merida');
    $fechaEnvio = date("Y-m-d H:i:s");
    enviarCorreoReferencia($attuid, $nombreReclutador, $nombreCompleto, $fechaEnvio);
    // >>>> FIN CORREO <<<<

    // >>>> REGISTRO EN refsDetails <<<<
    $mensajeDetalle = "Reclutador {$attuid} añadió la referencia";
    $stmtDetalle = $conn->prepare("INSERT INTO refsDetails (CURP, queSeHizo) VALUES (?, ?)");
    $stmtDetalle->bind_param("ss", $curp, $mensajeDetalle);
    $stmtDetalle->execute();
    // >>>> FIN REGISTRO <<<<

    echo json_encode(['status' => 'success', 'message' => 'Aspirante enviado a referencias']);
} else {
    echo json_encode(['status' => 'error', 'message' => 'Error al enviar a referencias']);
}

?>
