<?php
// consultas_entidades/create.php

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

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

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

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

// Leer cuerpo crudo
$raw  = file_get_contents("php://input");
$data = json_decode($raw, true);

if (!$data) {
  http_response_code(400);
  echo json_encode([
    "success" => false,
    "message" => "No se recibieron datos válidos (JSON inválido o vacío).",
    "raw"     => $raw
  ]);
  exit;
}

// Helpers
function cleanText($v) {
  if (!isset($v)) return null;
  $v = trim((string)$v);
  return $v === '' ? null : $v;
}

/**
 * Acepta:
 * - array -> se guarda como JSON string
 * - string JSON -> se intenta normalizar (si es JSON válido se guarda como string)
 * - string normal -> se guarda tal cual (por si ya viene stringify)
 */
function cleanJsonField($v) {
  if (!isset($v) || $v === null) return null;

  // Si viene como array/obj -> stringify
  if (is_array($v) || is_object($v)) {
    $json = json_encode($v, JSON_UNESCAPED_UNICODE);
    return ($json === false) ? null : $json;
  }

  // Si viene como string
  $s = trim((string)$v);
  if ($s === '') return null;

  // Si parece JSON, valida
  $first = substr($s, 0, 1);
  if ($first === '{' || $first === '[') {
    json_decode($s, true);
    if (json_last_error() === JSON_ERROR_NONE) {
      return $s; // ya es JSON válido
    }
    // si no es válido, igual lo guardamos como texto para no romper
    return $s;
  }

  // texto normal
  return $s;
}

// === Mapear campos base ===
$ID_ESTUDIO = (isset($data['ID_ESTUDIO']) && $data['ID_ESTUDIO'] !== '' && $data['ID_ESTUDIO'] !== null)
  ? (int)$data['ID_ESTUDIO']
  : null;

$ID_CANDIDATO_EMPRESA = isset($data['ID_CANDIDATO_EMPRESA']) ? (int)$data['ID_CANDIDATO_EMPRESA'] : null;

$USUARIO_CREA    = isset($data['USUARIO_CREA']) ? (int)$data['USUARIO_CREA'] : 1;
$ESTADO_REGISTRO = isset($data['ESTADO_REGISTRO']) ? (int)$data['ESTADO_REGISTRO'] : 1;

// === Textareas (observaciones/resultados) ===
$PROCURADURIA           = cleanText($data['PROCURADURIA'] ?? null);
$POLICIA_NACIONAL       = cleanText($data['POLICIA_NACIONAL'] ?? null);
$FISCALIA               = cleanText($data['FISCALIA'] ?? null);
$CONTRALORIA            = cleanText($data['CONTRALORIA'] ?? null);
$DIJIN                  = cleanText($data['DIJIN'] ?? null);
$RUNT_CE                = cleanText($data['RUNT_CE'] ?? null);
$RAMA_JUDICIAL_PP_CE     = cleanText($data['RAMA_JUDICIAL_PP_CE'] ?? null);

// ✅ NUEVOS CAMPOS (Noticia Criminal + Observaciones)
$NOTICIA_CRIMINAL              = cleanText($data['NOTICIA_CRIMINAL'] ?? null);
$NOTICIA_CRIMINAL_OBSERVACIONES = cleanText($data['NOTICIA_CRIMINAL_OBSERVACIONES'] ?? null);

// === Detalles modales (JSON) ===
$PROCURADURIA_DETALLE_JSON            = cleanJsonField($data['PROCURADURIA_DETALLE_JSON'] ?? null);
$POLICIA_NACIONAL_DETALLE_JSON        = cleanJsonField($data['POLICIA_NACIONAL_DETALLE_JSON'] ?? null);
$FISCALIA_DETALLE_JSON                = cleanJsonField($data['FISCALIA_DETALLE_JSON'] ?? null);
$CONTRALORIA_DETALLE_JSON             = cleanJsonField($data['CONTRALORIA_DETALLE_JSON'] ?? null);
$DIJIN_DETALLE_JSON                   = cleanJsonField($data['DIJIN_DETALLE_JSON'] ?? null);
$RUNT_CE_DETALLE_JSON                 = cleanJsonField($data['RUNT_CE_DETALLE_JSON'] ?? null);
$RAMA_JUDICIAL_PP_CE_DETALLE_JSON     = cleanJsonField($data['RAMA_JUDICIAL_PP_CE_DETALLE_JSON'] ?? null);


if (empty($ID_CANDIDATO_EMPRESA)) {
  echo json_encode([
    "success" => false,
    "message" => "ID_CANDIDATO_EMPRESA es obligatorio.",
    "debug_received" => $data
  ]);
  exit;
}


//CONSULTA PARA INGRESAR LAS CONSULTAS DE


$sql = "INSERT INTO CONSULTAS_ENTIDADES (
          ID_ESTUDIO,
          ID_CANDIDATO_EMPRESA,

          PROCURADURIA,
          PROCURADURIA_DETALLE_JSON,

          POLICIA_NACIONAL,
          POLICIA_NACIONAL_DETALLE_JSON,

          FISCALIA,
          FISCALIA_DETALLE_JSON,

          CONTRALORIA,
          CONTRALORIA_DETALLE_JSON,

          DIJIN,
          DIJIN_DETALLE_JSON,

          RUNT_CE,
          RUNT_CE_DETALLE_JSON,

          RAMA_JUDICIAL_PP_CE,
          RAMA_JUDICIAL_PP_CE_DETALLE_JSON,

          NOTICIA_CRIMINAL,
          NOTICIA_CRIMINAL_OBSERVACIONES,

          USUARIO_CREA,
          ESTADO_REGISTRO
        ) VALUES (
          ?, ?,
          ?, ?,
          ?, ?,
          ?, ?,
          ?, ?,
          ?, ?,
          ?, ?,
          ?, ?,
          ?, ?,
          ?, ?
        )";

$stmt = $mysqli->prepare($sql);

if ($stmt === false) {
  http_response_code(500);
  echo json_encode([
    "success" => false,
    "message" => "Error al preparar la consulta: " . $mysqli->error
  ]);
  exit;
}


$stmt->bind_param(
  "iissssssssssssssssii",
  $ID_ESTUDIO,
  $ID_CANDIDATO_EMPRESA,

  $PROCURADURIA,
  $PROCURADURIA_DETALLE_JSON,

  $POLICIA_NACIONAL,
  $POLICIA_NACIONAL_DETALLE_JSON,

  $FISCALIA,
  $FISCALIA_DETALLE_JSON,

  $CONTRALORIA,
  $CONTRALORIA_DETALLE_JSON,

  $DIJIN,
  $DIJIN_DETALLE_JSON,

  $RUNT_CE,
  $RUNT_CE_DETALLE_JSON,

  $RAMA_JUDICIAL_PP_CE,
  $RAMA_JUDICIAL_PP_CE_DETALLE_JSON,

  $NOTICIA_CRIMINAL,
  $NOTICIA_CRIMINAL_OBSERVACIONES,

  $USUARIO_CREA,
  $ESTADO_REGISTRO
);






if ($stmt->execute()) {
  echo json_encode([
    "success"     => true,
    "message"     => "Consultas de entidades creadas correctamente.",
    "id_consulta" => $stmt->insert_id,
    "debug_saved" => [
      "ID_ESTUDIO" => $ID_ESTUDIO,
      "ID_CANDIDATO_EMPRESA" => $ID_CANDIDATO_EMPRESA,
      "PROCURADURIA" => $PROCURADURIA,
      "POLICIA_NACIONAL" => $POLICIA_NACIONAL,
      "FISCALIA" => $FISCALIA,
      "CONTRALORIA" => $CONTRALORIA,
      "DIJIN" => $DIJIN,
      "RUNT_CE" => $RUNT_CE,
      "RAMA_JUDICIAL_PP_CE" => $RAMA_JUDICIAL_PP_CE,
      "NOTICIA_CRIMINAL" => $NOTICIA_CRIMINAL,
      "NOTICIA_CRIMINAL_OBSERVACIONES" => $NOTICIA_CRIMINAL_OBSERVACIONES
    ]
  ]);
} else {
  http_response_code(500);
  echo json_encode([
    "success" => false,
    "message" => "Error al ejecutar la consulta: " . $stmt->error,
    "debug_received" => $data
  ]);
}

$stmt->close();
$mysqli->close();
