<?php
session_start();
if (!isset($_SESSION['attuid'])) {
    header('Location: ../../../index.php');
    exit();
}

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

$id = isset($_GET['id']) ? intval($_GET['id']) : 0;
if ($id <= 0) die('ID inválido');

// Datos del aspirante
$stmt = $conn->prepare("
 SELECT a.id, a.nombre, a.apellido_paterno, a.apellido_materno,
       a.puesto, a.correo, a.telefono, a.ubicacion, a.curp, a.nss, a.rfc,
       a.cv_path, a.fecha_registro, a.estatus_actual, a.pdv_sugerido,
       a.vacante_puesto, a.vacante_pdv, a.Ruta_expediente,
       a.procedencia_cv,
       (
         SELECT estatus 
         FROM banco_registros 
         WHERE aspirante_id = a.id AND estatus = 'activado'
         LIMIT 1
       ) AS reactivado
 FROM aspirantes a
 WHERE a.id = ?
");
$stmt->bind_param("i", $id);
$stmt->execute();
$res = $stmt->get_result();
if (!$res->num_rows) die('Candidato no encontrado');

$c = $res->fetch_assoc();

// Obtener el nombre de la procedencia de CV si existe
$procedencia_cv_nombre = null;
if (!empty($c['procedencia_cv'])) {
    $stmtProc = $conn->prepare("SELECT nombre FROM Procedencia_CV WHERE id = ? LIMIT 1");
    $stmtProc->bind_param("s", $c['procedencia_cv']);
    $stmtProc->execute();
    $resProc = $stmtProc->get_result();
    if ($rowProc = $resProc->fetch_assoc()) {
        $procedencia_cv_nombre = $rowProc['nombre'];
    }
    $stmtProc->close();
}
$c['procedencia_cv_nombre'] = $procedencia_cv_nombre;

$nombreCompleto = "{$c['nombre']} {$c['apellido_paterno']} {$c['apellido_materno']}";
$estatusActual = $c['estatus_actual'];

// Vacante asignada
$vacanteAsignada = null;
$stmtVac = $conn->prepare("SELECT vacante_codigo, vacante_puesto, vacante_pdv FROM aspirantes WHERE id = ?");
$stmtVac->bind_param("i", $id);
$stmtVac->execute();
$resVac = $stmtVac->get_result();
if ($resVac && $resVac->num_rows > 0) {
    $vacanteAsignada = $resVac->fetch_assoc();
}

// Ubicación
$ubicacionNombre = "Ubicación no disponible";
if (!empty($c['ubicacion'])) {
    $ubicacion_id = intval($c['ubicacion']);
    $stmtUbicacion = $conn->prepare("SELECT municipio, estado FROM catalogo_ubicaciones WHERE id = ?");
    $stmtUbicacion->bind_param("i", $ubicacion_id);
    $stmtUbicacion->execute();
    $resUbicacion = $stmtUbicacion->get_result();
    if ($rowUbicacion = $resUbicacion->fetch_assoc()) {
        $ubicacionNombre = $rowUbicacion['municipio'] . ', ' . $rowUbicacion['estado'];
    }
}

// Historial de estatus
$historial = [];
$stmtHist = $conn->prepare("SELECT estatus, fecha, comentario FROM seguimiento_estatus WHERE aspirante_id = ? ORDER BY fecha ASC");
$stmtHist->bind_param("i", $id);
$stmtHist->execute();
$resHist = $stmtHist->get_result();
while ($row = $resHist->fetch_assoc()) {
    $clave = $row['estatus'];
    $historial[$clave] = [
        'fecha' => date('d M Y', strtotime($row['fecha'])),
        'comentario' => $row['comentario'] ?? ''
    ];
}
if (!isset($historial['asignado'])) {
    $historial['asignado'] = [
        'fecha' => date('d M Y', strtotime($c['fecha_registro'])),
        'comentario' => ''
    ];
}

// Experiencia
$stmtExp = $conn->prepare("SELECT empresa, puesto, inicio, fin, actualmente FROM experiencia WHERE aspirante_id = ? ORDER BY inicio DESC");
$stmtExp->bind_param("i", $id);
$stmtExp->execute();
$experiencias = $stmtExp->get_result()->fetch_all(MYSQLI_ASSOC);

// Educación
$stmtEdu = $conn->prepare("SELECT institucion, titulo, inicio, fin, actualmente FROM educacion WHERE aspirante_id = ? ORDER BY inicio DESC");
$stmtEdu->bind_param("i", $id);
$stmtEdu->execute();
$educaciones = $stmtEdu->get_result()->fetch_all(MYSQLI_ASSOC);

// Catálogo de estatus
$estatusOrden = [];
$estatusLabels = [];
$stmtEst = $conn->query("SELECT clave, etiqueta, orden_step, siguiente_estatus FROM catalogo_estatus ORDER BY orden_step ASC");
while ($row = $stmtEst->fetch_assoc()) {
    $estatusOrden[] = $row['clave'];
    $estatusLabels[$row['clave']] = $row['etiqueta'];
    if ($row['clave'] === $estatusActual) {
        $siguienteOpciones = json_decode($row['siguiente_estatus'] ?? '[]', true) ?: [];
        $siguienteOpciones = is_array($siguienteOpciones) ? $siguienteOpciones : [];
    }
}
$indexActual = array_search($estatusActual, $estatusOrden);
