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

// Validación de sesión y rol
if (!isset($_SESSION['rol']) || !in_array($_SESSION['rol'], ['admin', 'coordinador', 'reclutador'])) {
  echo json_encode(['success' => false, 'message' => 'Acceso denegado']);
  exit;
}

$aspirante_id = $_POST['aspirante_id'] ?? null;
$comentario = trim($_POST['comentario'] ?? '');
$usuario = $_SESSION['attuid'] ?? 'sistema';

if (!$aspirante_id) {
  echo json_encode(['success' => false, 'message' => 'ID no recibido']);
  exit;
}

if (empty($comentario)) {
  echo json_encode(['success' => false, 'message' => 'El comentario es obligatorio']);
  exit;
}

// Validar si ya está como pendiente
$sqlCheck = "SELECT estatus FROM banco_registros WHERE aspirante_id = ? ORDER BY fecha_ingreso DESC LIMIT 1";
$stmtCheck = $conn->prepare($sqlCheck);
$stmtCheck->bind_param("i", $aspirante_id);
$stmtCheck->execute();
$resCheck = $stmtCheck->get_result();
if ($resCheck->num_rows > 0 && $resCheck->fetch_assoc()['estatus'] === 'pendiente') {
  echo json_encode(['success' => false, 'message' => 'El aspirante ya se encuentra en el banco como pendiente.']);
  exit;
}

// Obtener estatus actual
$sqlEstatus = "SELECT estatus_actual FROM aspirantes WHERE id = ?";
$stmtE = $conn->prepare($sqlEstatus);
$stmtE->bind_param("i", $aspirante_id);
$stmtE->execute();
$resE = $stmtE->get_result();

if ($resE->num_rows === 0) {
  echo json_encode(['success' => false, 'message' => 'Aspirante no encontrado']);
  exit;
}

$estatusActual = $resE->fetch_assoc()['estatus_actual'];

// Obtener orden_step de 'referencias'
$sqlRef = "SELECT orden_step FROM catalogo_estatus WHERE clave = 'referencias'";
$resRef = $conn->query($sqlRef);
$ordenReferencias = $resRef->fetch_assoc()['orden_step'] ?? null;

$sqlOrdenActual = "SELECT orden_step FROM catalogo_estatus WHERE clave = ?";
$stmtOrden = $conn->prepare($sqlOrdenActual);
$stmtOrden->bind_param("s", $estatusActual);
$stmtOrden->execute();
$resOrden = $stmtOrden->get_result();
$ordenActual = $resOrden->fetch_assoc()['orden_step'] ?? null;

// Determinar tipo
if ($ordenActual === null || $ordenReferencias === null) {
  echo json_encode(['success' => false, 'message' => 'Error al obtener el orden del estatus']);
  exit;
}

$tipo = ($ordenActual < $ordenReferencias) ? 'aspirante' : 'candidato';

// Insertar
$sqlInsert = "INSERT INTO banco_registros (aspirante_id, tipo, estatus, activado_por, comentario) 
              VALUES (?, ?, 'pendiente', ?, ?)";
$stmtInsert = $conn->prepare($sqlInsert);
$stmtInsert->bind_param("isss", $aspirante_id, $tipo, $usuario, $comentario);

if ($stmtInsert->execute()) {
  echo json_encode(['success' => true]);
} else {
  echo json_encode(['success' => false, 'message' => 'Error al insertar en el banco']);
}
?>
