<?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');

 $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;
}

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

// Determinar la operación a realizar
 $operation = $data['operation'] ?? 'create'; // create, update, delete

switch ($operation) {
  case 'create':
    // Campos del hecho/novedad
    $TIPO_NOTICIA = cleanText($data['TIPO_NOTICIA'] ?? null);
    $DELITO = cleanText($data['DELITO'] ?? null);
    $CALIDAD = cleanText($data['CALIDAD'] ?? null);
    $ESTADO = cleanText($data['ESTADO'] ?? 'Activo');
    $FECHA = cleanText($data['FECHA'] ?? null);

    // Relación / auditoría
    $ID_CANDIDATO_EMPRESA = isset($data['ID_CANDIDATO_EMPRESA']) ? (int)$data['ID_CANDIDATO_EMPRESA'] : null;
    $ID_ESTUDIO = (isset($data['ID_ESTUDIO']) && $data['ID_ESTUDIO'] !== '' && $data['ID_ESTUDIO'] !== null)
      ? (int)$data['ID_ESTUDIO']
      : null;

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

    // Validaciones
    if (!$ID_CANDIDATO_EMPRESA) {
      echo json_encode(["success" => false, "message" => "ID_CANDIDATO_EMPRESA es obligatorio."]);
      exit;
    }

    if (!$ID_ESTUDIO) {
      echo json_encode(["success" => false, "message" => "ID_ESTUDIO es obligatorio para unificar el informe."]);
      exit;
    }

    if (!$TIPO_NOTICIA) {
      echo json_encode(["success" => false, "message" => "TIPO_NOTICIA es obligatorio."]);
      exit;
    }
    if (!$DELITO) {
      echo json_encode(["success" => false, "message" => "DELITO es obligatorio."]);
      exit;
    }
    if (!$CALIDAD) {
      echo json_encode(["success" => false, "message" => "CALIDAD es obligatorio."]);
      exit;
    }

    // INSERT con ID_ESTUDIO ✅
    $sql = "INSERT INTO HECHOS_NOVEDADES (
              ID_ESTUDIO,
              ID_CANDIDATO_EMPRESA,
              TIPO_NOTICIA,
              DELITO,
              CALIDAD,
              ESTADO,
              FECHA,
              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(
      "iisssssii",
      $ID_ESTUDIO,
      $ID_CANDIDATO_EMPRESA,
      $TIPO_NOTICIA,
      $DELITO,
      $CALIDAD,
      $ESTADO,
      $FECHA,
      $USUARIO_CREA,
      $ESTADO_REGISTRO
    );

    if ($stmt->execute()) {
      echo json_encode([
        "success" => true,
        "message" => "Hecho/novedad creado correctamente.",
        "id_hecho" => $stmt->insert_id,
        "debug_saved" => [
          "ID_ESTUDIO" => $ID_ESTUDIO,
          "ID_CANDIDATO_EMPRESA" => $ID_CANDIDATO_EMPRESA
        ]
      ]);
    } else {
      http_response_code(500);
      echo json_encode([
        "success" => false,
        "message" => "Error al ejecutar la consulta: " . $stmt->error,
        "debug_received" => $data
      ]);
    }

    $stmt->close();
    break;

  case 'update':
    // Campos a actualizar
    $ID_HECHO_NOVEDAD = isset($data['ID_HECHO_NOVEDAD']) ? (int)$data['ID_HECHO_NOVEDAD'] : null;
    $TIPO_NOTICIA = cleanText($data['TIPO_NOTICIA'] ?? null);
    $DELITO = cleanText($data['DELITO'] ?? null);
    $CALIDAD = cleanText($data['CALIDAD'] ?? null);
    $ESTADO = cleanText($data['ESTADO'] ?? 'Activo');
    $FECHA = cleanText($data['FECHA'] ?? null);

    // Validaciones
    if (!$ID_HECHO_NOVEDAD) {
      echo json_encode(["success" => false, "message" => "ID_HECHO_NOVEDAD es obligatorio para actualizar."]);
      exit;
    }

    if (!$TIPO_NOTICIA) {
      echo json_encode(["success" => false, "message" => "TIPO_NOTICIA es obligatorio."]);
      exit;
    }
    if (!$DELITO) {
      echo json_encode(["success" => false, "message" => "DELITO es obligatorio."]);
      exit;
    }
    if (!$CALIDAD) {
      echo json_encode(["success" => false, "message" => "CALIDAD es obligatorio."]);
      exit;
    }

    // UPDATE
    $sql = "UPDATE HECHOS_NOVEDADES SET 
              TIPO_NOTICIA = ?,
              DELITO = ?,
              CALIDAD = ?,
              ESTADO = ?,
              FECHA = ?,
              USUARIO_CREA = ?
            WHERE ID_HECHO_NOVEDAD = ?";

    $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;
    }

    $USUARIO_CREA = isset($data['USUARIO_CREA']) ? (int)$data['USUARIO_CREA'] : 1;
    $stmt->bind_param(
      "ssssssi",
      $TIPO_NOTICIA,
      $DELITO,
      $CALIDAD,
      $ESTADO,
      $FECHA,
      $USUARIO_CREA,
      $ID_HECHO_NOVEDAD
    );

    if ($stmt->execute()) {
      echo json_encode([
        "success" => true,
        "message" => "Hecho/novedad actualizado correctamente.",
        "id_hecho" => $ID_HECHO_NOVEDAD
      ]);
    } else {
      http_response_code(500);
      echo json_encode([
        "success" => false,
        "message" => "Error al ejecutar la consulta: " . $stmt->error,
        "debug_received" => $data
      ]);
    }

    $stmt->close();
    break;

  case 'delete':
    $ID_HECHO_NOVEDAD = isset($data['ID_HECHO_NOVEDAD']) ? (int)$data['ID_HECHO_NOVEDAD'] : null;

    if (!$ID_HECHO_NOVEDAD) {
      echo json_encode(["success" => false, "message" => "ID_HECHO_NOVEDAD es obligatorio para eliminar."]);
      exit;
    }

    // Soft delete (marcar como inactivo)
    $sql = "UPDATE HECHOS_NOVEDADES SET ESTADO_REGISTRO = 0 WHERE ID_HECHO_NOVEDAD = ?";
    $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("i", $ID_HECHO_NOVEDAD);

    if ($stmt->execute()) {
      echo json_encode([
        "success" => true,
        "message" => "Hecho/novedad eliminado correctamente.",
        "id_hecho" => $ID_HECHO_NOVEDAD
      ]);
    } else {
      http_response_code(500);
      echo json_encode([
        "success" => false,
        "message" => "Error al ejecutar la consulta: " . $stmt->error,
        "debug_received" => $data
      ]);
    }

    $stmt->close();
    break;

  default:
    http_response_code(400);
    echo json_encode([
      "success" => false,
      "message" => "Operación no válida. Use 'create', 'update' o 'delete'."
    ]);
    break;
}

 $mysqli->close();