<?php
// api_poligrafia/estudio_seguridad/read_by_candidate.php

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

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

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

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

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

function cleanInt($v) {
  if ($v === null || $v === '' || $v === false) return null;
  return (int)$v;
}

try {
  if ($_SERVER['REQUEST_METHOD'] !== 'GET') {
    respond(false, "Método no permitido", null, 405);
  }

  // Recibir ID del Candidato
  $ID_CANDIDATO_EMPRESA = cleanInt($_GET['id_candidato_empresa'] ?? null);

  if (!$ID_CANDIDATO_EMPRESA) {
    respond(false, "Falta el parámetro id_candidato_empresa", null, 400);
  }

  // 1. Buscar si existe un estudio para este candidato
  // NOTA: El ID del candidato en CANDIDATO_EMPRESA es ID_EMPRESA
  $sqlStudy = "SELECT ID_ESTUDIO 
               FROM ESTUDIO_SEGURIDAD 
               WHERE ID_CANDIDATO_EMPRESA = ? 
               LIMIT 1";
               
  $stmtStudy = $mysqli->prepare($sqlStudy);
  if (!$stmtStudy) {
    respond(false, "Error preparando búsqueda de estudio: " . $mysqli->error, null, 500);
  }
  
  $stmtStudy->bind_param("i", $ID_CANDIDATO_EMPRESA);
  $stmtStudy->execute();
  $resStudy = $stmtStudy->get_result();
  $studyRow = $resStudy->fetch_assoc();
  $stmtStudy->close();

  if (!$studyRow) {
    // Si no hay estudio, devolvemos success true pero con exists false para no tirar error en el frontend
    respond(true, "No se encontró estudio para este candidato", ["exists" => false], 200);
  }

  $ID_ESTUDIO = (int)$studyRow['ID_ESTUDIO'];

  // 2. Obtener Datos Personales
  $sqlPersonal = "SELECT * FROM ESTUDIO_DATOS_PERSONALES WHERE ID_ESTUDIO = ? AND ESTADO_REGISTRO = 1 LIMIT 1";
  $stmtP = $mysqli->prepare($sqlPersonal);
  $stmtP->bind_param("i", $ID_ESTUDIO);
  $stmtP->execute();
  $resP = $stmtP->get_result();
  $personal = $resP->fetch_assoc();
  $stmtP->close();

  // 3. Concepto 1
  $sqlC1 = "SELECT * FROM ESTUDIO_CONCEPTO_1 WHERE ID_ESTUDIO = ? AND ESTADO_REGISTRO = 1 LIMIT 1";
  $stmtC1 = $mysqli->prepare($sqlC1);
  $stmtC1->bind_param("i", $ID_ESTUDIO);
  $stmtC1->execute();
  $resC1 = $stmtC1->get_result();
  $c1 = $resC1->fetch_assoc();
  $stmtC1->close();

  // 4. Concepto 2
  $sqlC2 = "SELECT * FROM ESTUDIO_CONCEPTO_2 WHERE ID_ESTUDIO = ? AND ESTADO_REGISTRO = 1 LIMIT 1";
  $stmtC2 = $mysqli->prepare($sqlC2);
  $stmtC2->bind_param("i", $ID_ESTUDIO);
  $stmtC2->execute();
  $resC2 = $stmtC2->get_result();
  $c2 = $resC2->fetch_assoc();
  $stmtC2->close();

  // 5. Concepto 3
  $sqlC3 = "SELECT * FROM ESTUDIO_CONCEPTO_3 WHERE ID_ESTUDIO = ? AND ESTADO_REGISTRO = 1 LIMIT 1";
  $stmtC3 = $mysqli->prepare($sqlC3);
  $stmtC3->bind_param("i", $ID_ESTUDIO);
  $stmtC3->execute();
  $resC3 = $stmtC3->get_result();
  $c3 = $resC3->fetch_assoc();
  $stmtC3->close();

  // 6. Archivos
  $sqlArc = "SELECT * FROM ESTUDIO_ARCHIVOS_EVIDENCIAS WHERE ID_ESTUDIO = ? AND ESTADO_REGISTRO = 1 LIMIT 1";
  $stmtArc = $mysqli->prepare($sqlArc);
  $stmtArc->bind_param("i", $ID_ESTUDIO);
  $stmtArc->execute();
  $resArc = $stmtArc->get_result();
  $archivos = $resArc->fetch_assoc();
  $stmtArc->close();

  // 7. Familiares
  $sqlFam = "SELECT * FROM ESTUDIO_FAMILIARES WHERE ID_ESTUDIO = ? AND ESTADO_REGISTRO = 1";
  $stmtFam = $mysqli->prepare($sqlFam);
  $stmtFam->bind_param("i", $ID_ESTUDIO);
  $stmtFam->execute();
  $resFam = $stmtFam->get_result();
  $familiares = [];
  while ($row = $resFam->fetch_assoc()) {
    $familiares[] = $row;
  }
  $stmtFam->close();

  // 8. Laboral
  $sqlLab = "SELECT * FROM ESTUDIO_INFO_LABORAL WHERE ID_ESTUDIO = ? AND ESTADO_REGISTRO = 1";
  $stmtLab = $mysqli->prepare($sqlLab);
  $stmtLab->bind_param("i", $ID_ESTUDIO);
  $stmtLab->execute();
  $resLab = $stmtLab->get_result();
  $laboral = [];
  while ($row = $resLab->fetch_assoc()) {
    $laboral[] = $row;
  }
  $stmtLab->close();

  // 9. Académica
  $sqlAca = "SELECT * FROM ESTUDIO_INFO_ACADEMICA WHERE ID_ESTUDIO = ? AND ESTADO_REGISTRO = 1";
  $stmtAca = $mysqli->prepare($sqlAca);
  $stmtAca->bind_param("i", $ID_ESTUDIO);
  $stmtAca->execute();
  $resAca = $stmtAca->get_result();
  $academica = [];
  while ($row = $resAca->fetch_assoc()) {
    $academica[] = $row;
  }
  $stmtAca->close();

  // Decodificar JSONs para arrays (APORTES, EGRESOS, COMODIDADES, ADJUNTOS)
  if ($c1) {
    $c1['comodidades'] = $c1['COMODIDADES_JSON'] ? json_decode($c1['COMODIDADES_JSON'], true) : [];
    $c1['aportes'] = $c1['APORTES_JSON'] ? json_decode($c1['APORTES_JSON'], true) : [];
    $c1['egresos'] = $c1['EGRESOS_JSON'] ? json_decode($c1['EGRESOS_JSON'], true) : [];
  }

  if ($archivos) {
    $archivos['adjuntosVisita'] = $archivos['ADJUNTOS_VISITA_JSON'] ? json_decode($archivos['ADJUNTOS_VISITA_JSON'], true) : [];
  }

  respond(true, "Estudio cargado correctamente", [
    "id_estudio" => $ID_ESTUDIO,
    "personal" => $personal,
    "concepto1" => $c1,
    "concepto2" => $c2,
    "concepto3" => $c3,
    "archivos" => $archivos,
    "familiares" => $familiares,
    "laboral" => $laboral,
    "academica" => $academica
  ]);

} catch (Exception $e) {
  respond(false, $e->getMessage(), null, 500);
}