<?php
// estudio_seguridad/get_full_by_candidato.php

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// CORS
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Content-Type");
header("Access-Control-Allow-Methods: GET, OPTIONS");
header("Content-Type: application/json; charset=utf-8");

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
  http_response_code(200);
  exit;
}

require_once(__DIR__ . '/../config.php'); // $mysqli

function respond($success, $message, $data = null, $code = 200) {
  http_response_code($code);
  echo json_encode([
    "success" => $success,
    "message" => $message,
    "data" => $data
  ]);
  exit;
}

$idCandidato = isset($_GET['id_candidato_empresa']) ? intval($_GET['id_candidato_empresa']) : 0;
if ($idCandidato <= 0) {
  respond(false, "Parámetro id_candidato_empresa es requerido.", null, 400);
}

try {
  // 1) CANDIDATO (para tipo y número de documento)
  $sqlCand = "SELECT 
      ID_EMPRESA,
      UPPER(NOMBRE_CANDIDATO) AS NOMBRE_CANDIDATO,
      UPPER(APELLIDO_CANDIDATO) AS APELLIDO_CANDIDATO,
      TIPO_DOCUMENTO_CANDIDATO,
      NUMERO_DOCUMENTO_CANDIDATO,
      UPPER(CORREO_CANDIDATO) AS CORREO_CANDIDATO
    FROM CANDIDATO_EMPRESA
    WHERE ID_EMPRESA = ? AND ESTADO_CANDIDATO = 1
    LIMIT 1";
  $stmt = $mysqli->prepare($sqlCand);
  $stmt->bind_param("i", $idCandidato);
  $stmt->execute();
  $cand = $stmt->get_result()->fetch_assoc();
  $stmt->close();

  if (!$cand) {
    respond(false, "Candidato no encontrado.", null, 404);
  }

  // 2) ÚLTIMO ESTUDIO del candidato (si existe)
  $sqlEst = "SELECT ID_ESTUDIO, ID_CANDIDATO_EMPRESA, USUARIO_CREA, FECHA_CREACION,ESTADO_ESTUDIO,
  UPPER(CARGO_ASPIRA) AS CARGO_ASPIRA, TIPO_DOCUMENTO_CANDIDATO, NUMERO_DOCUMENTO_CANDIDATO
    FROM ESTUDIO_SEGURIDAD
    WHERE ID_CANDIDATO_EMPRESA = ? AND ESTADO_ESTUDIO = 1
    ORDER BY ID_ESTUDIO DESC
    LIMIT 1";
  $stmt = $mysqli->prepare($sqlEst);
  $stmt->bind_param("i", $idCandidato);
  $stmt->execute();
  $estudio = $stmt->get_result()->fetch_assoc();
  $stmt->close();

  if (!$estudio) {
    // sin estudio aún, igual devolvemos candidato
    respond(true, "OK (candidato sin estudio)", [
      "candidato" => $cand,
      "id_estudio" => null,
      "estudio" => null,
      "consultas_entidades" => null,
      "hechos_novedades" => [],
      "historial_financiero" => [],
      "referencias_laborales" => [],
      "referencias_educativas" => []
    ]);
  }

  $idEstudio = intval($estudio['ID_ESTUDIO']);

  // 3) CONSULTAS ENTIDADES (1 registro)
  $sqlCons = "SELECT *
    FROM CONSULTAS_ENTIDADES
    WHERE ID_CANDIDATO_EMPRESA = ?
      AND (ID_ESTUDIO = ? OR ID_ESTUDIO IS NULL) 
    ORDER BY ID_CONSULTA_ENTIDAD DESC
    LIMIT 1";
  $stmt = $mysqli->prepare($sqlCons);
  $stmt->bind_param("ii", $idCandidato, $idEstudio);
  $stmt->execute();
  $consultas = $stmt->get_result()->fetch_assoc();
  $stmt->close();

  // 4) HECHOS NOVEDADES
  $hechos = [];
  $sqlHechos = "SELECT ID_HECHO_NOVEDAD, ID_CANDIDATO_EMPRESA, ID_ESTUDIO, UPPER(TIPO_NOTICIA) AS TIPO_NOTICIA, UPPER(DELITO) AS DELITO,
  UPPER(CALIDAD) AS CALIDAD, UPPER(CALIDAD) AS CALIDAD,  ESTADO, FECHA, USUARIO_CREA, FECHA_CREACION, ESTADO_REGISTRO
    FROM HECHOS_NOVEDADES
    WHERE ID_CANDIDATO_EMPRESA = ?
      AND (ID_ESTUDIO = ? OR ID_ESTUDIO IS NULL)
      AND ESTADO_REGISTRO = 1
    ORDER BY ID_HECHO_NOVEDAD DESC";
  $stmt = $mysqli->prepare($sqlHechos);
  $stmt->bind_param("ii", $idCandidato, $idEstudio);
  $stmt->execute();
  $res = $stmt->get_result();
  while ($row = $res->fetch_assoc()) $hechos[] = $row;
  $stmt->close();

  // 5) HISTORIAL FINANCIERO
  $hist = [];
  $sqlHist = "SELECT ID_HISTORIAL_FINANCIERO, ID_ESTUDIO, ID_CANDIDATO_EMPRESA,  CANTIDAD_OBLIGACIONES, 
  UPPER(EMPRESAS_CON_REPORTE) AS EMPRESAS_CON_REPORTE, SECTOR, REPORTADO_NEGATIVAMENTE, CARTERA_CASTIGADA, 
    UPPER(OBSERVACIONES) AS OBSERVACIONES, USUARIO_CREA, FECHA_CREACION, ESTADO_REGISTRO
    FROM HISTORIAL_FINANCIERO
    WHERE ID_CANDIDATO_EMPRESA = ?
      AND (ID_ESTUDIO = ? OR ID_ESTUDIO IS NULL)
      AND (ESTADO_REGISTRO = 1 OR ESTADO_REGISTRO IS NULL)
    ORDER BY ID_HISTORIAL_FINANCIERO DESC";
  $stmt = $mysqli->prepare($sqlHist);
  $stmt->bind_param("ii", $idCandidato, $idEstudio);
  $stmt->execute();
  $res = $stmt->get_result();
  while ($row = $res->fetch_assoc()) $hist[] = $row;
  $stmt->close();

  // 6) REFERENCIAS LABORALES
  $refsLab = [];
  $sqlLab = "SELECT ID_REFERENCIA_LABORAL, ID_ESTUDIO, ID_CANDIDATO_EMPRESA, UPPER(EMPRESA) AS EMPRESA, UPPER(CARGO) AS CARGO,
  UPPER(MOTIVO_RETIRO) AS MOTIVO_RETIRO, FECHA_INICIO, FECHA_RETIRO, DESEMPENO, TELEFONO, UPPER(CIUDAD) AS CIUDAD, 
  UPPER(REFERENCIA_NOMBRE) AS REFERENCIA_NOMBRE, UPPER(REFERENCIA_CARGO) AS REFERENCIA_CARGO, USUARIO_CREA, FECHA_CREACION, ESTADO_REGISTRO 
    FROM REFERENCIAS_LABORALES
    WHERE ID_CANDIDATO_EMPRESA = ?
      AND (ID_ESTUDIO = ? OR ID_ESTUDIO IS NULL)
      AND ESTADO_REGISTRO = 1
    ORDER BY ID_REFERENCIA_LABORAL DESC";
  $stmt = $mysqli->prepare($sqlLab);
  $stmt->bind_param("ii", $idCandidato, $idEstudio);
  $stmt->execute();
  $res = $stmt->get_result();
  while ($row = $res->fetch_assoc()) $refsLab[] = $row;
  $stmt->close();

  // 7) REFERENCIAS EDUCATIVAS
  $refsEdu = [];
  $sqlEdu = "SELECT ID_REFERENCIA_EDUCATIVA, ID_ESTUDIO, ID_CANDIDATO_EMPRESA, UPPER(INSTITUCION) AS INSTITUCION,
   UPPER(TITULO_OBTENIDO) AS TITULO_OBTENIDO, FECHA_FIN, UPPER(CIUDAD) AS CIUDAD,
  UPPER(CONTACTO_NOMBRE) AS CONTACTO_NOMBRE, UPPER(CONTACTO_CARGO) AS CONTACTO_CARGO, UPPER(OBSERVACIONES) AS OBSERVACIONES,
   USUARIO_CREA, FECHA_CREACION, UPPER(NUMERO_ACTA) AS NUMERO_ACTA, UPPER(FOLIO) AS FOLIO, UPPER(LIBRO) AS LIBRO, ESTADO_REGISTRO
    FROM REFERENCIAS_EDUCATIVAS
    WHERE ID_CANDIDATO_EMPRESA = ?
      AND ID_ESTUDIO = ?
      AND ESTADO_REGISTRO = 1
    ORDER BY ID_REFERENCIA_EDUCATIVA DESC";
  $stmt = $mysqli->prepare($sqlEdu);
  $stmt->bind_param("ii", $idCandidato, $idEstudio);
  $stmt->execute();
  $res = $stmt->get_result();
  while ($row = $res->fetch_assoc()) $refsEdu[] = $row;
  $stmt->close();

  respond(true, "OK", [
    "candidato" => $cand,
    "id_estudio" => $idEstudio,
    "estudio" => $estudio,
    "consultas_entidades" => $consultas,
    "hechos_novedades" => $hechos,
    "historial_financiero" => $hist,
    "referencias_laborales" => $refsLab,
    "referencias_educativas" => $refsEdu
  ]);

} catch (Exception $e) {
  respond(false, "Error en el servidor", ["error" => $e->getMessage()], 500);
}
