<?php
// referencias_laborales/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;
}

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
  http_response_code(405);
  echo json_encode(["success" => false, "message" => "Método no permitido. Usa POST."]);
  exit;
}

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

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

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

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

function cleanDate($v) {
  $v = clean($v);
  if (!$v) return null;

  // Acepta "YYYY-MM-DD" o "DD/MM/YYYY"
  if (preg_match('/^\d{4}-\d{2}-\d{2}$/', $v)) return $v;
  if (preg_match('/^\d{2}\/\d{2}\/\d{4}$/', $v)) {
    [$d,$m,$y] = explode('/', $v);
    return "$y-$m-$d";
  }
  return null;
}

 $ID_ESTUDIO = clean($data['ID_ESTUDIO'] ?? null);
 $ID_CANDIDATO_EMPRESA = clean($data['ID_CANDIDATO_EMPRESA'] ?? null);
 $USUARIO_CREA = clean($data['USUARIO_CREA'] ?? null);

 $referencias = $data['referencias'] ?? [];

if (!$ID_ESTUDIO || !$ID_CANDIDATO_EMPRESA || !$USUARIO_CREA) {
  http_response_code(400);
  echo json_encode([
    "success" => false,
    "message" => "Faltan datos obligatorios: ID_ESTUDIO, ID_CANDIDATO_EMPRESA, USUARIO_CREA."
  ]);
  exit;
}

if (!is_array($referencias) || count($referencias) === 0) {
  http_response_code(400);
  echo json_encode([
    "success" => false,
    "message" => "No se recibieron referencias."
  ]);
  exit;
}

// ✅ CAMBIA este nombre por tu tabla real
 $TABLE = "REFERENCIAS_LABORALES";

 $mysqli->begin_transaction();

try {
  $affected = 0;
  $savedRows = [];

  foreach ($referencias as $r) {
    $ID_REFERENCIA = clean($r['ID_REFERENCIA_LABORAL'] ?? null);
    $EMPRESA = clean($r['EMPRESA'] ?? null);
    $CARGO = clean($r['CARGO'] ?? null);
    $MOTIVO_RETIRO = clean($r['MOTIVO_RETIRO'] ?? null);
    $FECHA_INICIO = cleanDate($r['FECHA_INICIO'] ?? null);
    $FECHA_RETIRO = cleanDate($r['FECHA_RETIRO'] ?? null);
    $DESEMPENO = clean($r['DESEMPENO'] ?? null);
    $TELEFONO = clean($r['TELEFONO'] ?? null);
    $CIUDAD = clean($r['CIUDAD'] ?? null);
    $REFERENCIA_NOMBRE = clean($r['REFERENCIA_NOMBRE'] ?? null);
    $REFERENCIA_CARGO = clean($r['REFERENCIA_CARGO'] ?? null);

    // ✅ Ignora filas vacías
    if (!$EMPRESA && !$CARGO && !$TELEFONO && !$REFERENCIA_NOMBRE) {
      continue;
    }

    if ($ID_REFERENCIA) {
      // Update
      $sql = "
        UPDATE $TABLE SET
          EMPRESA = ?,
          CARGO = ?,
          MOTIVO_RETIRO = ?,
          FECHA_INICIO = ?,
          FECHA_RETIRO = ?,
          DESEMPENO = ?,
          TELEFONO = ?,
          CIUDAD = ?,
          REFERENCIA_NOMBRE = ?,
          REFERENCIA_CARGO = ?
        WHERE ID_REFERENCIA_LABORAL = ?
      ";
      
      $stmt = $mysqli->prepare($sql);
      $stmt->bind_param(
        "ssssssssssi",
        $EMPRESA,
        $CARGO,
        $MOTIVO_RETIRO,
        $FECHA_INICIO,
        $FECHA_RETIRO,
        $DESEMPENO,
        $TELEFONO,
        $CIUDAD,
        $REFERENCIA_NOMBRE,
        $REFERENCIA_CARGO,
        $ID_REFERENCIA
      );
      $stmt->execute();
      $affected += $stmt->affected_rows;
      
      if ($stmt->affected_rows > 0) {
        $savedRows[] = [
          "ID" => $ID_REFERENCIA,
          "ID_ESTUDIO" => $ID_ESTUDIO,
          "ID_CANDIDATO_EMPRESA" => $ID_CANDIDATO_EMPRESA,
          "EMPRESA" => $EMPRESA,
          "CARGO" => $CARGO,
          "MOTIVO_RETIRO" => $MOTIVO_RETIRO,
          "FECHA_INICIO" => $FECHA_INICIO,
          "FECHA_RETIRO" => $FECHA_RETIRO,
          "DESEMPENO" => $DESEMPENO,
          "TELEFONO" => $TELEFONO,
          "CIUDAD" => $CIUDAD,
          "REFERENCIA_NOMBRE" => $REFERENCIA_NOMBRE,
          "REFERENCIA_CARGO" => $REFERENCIA_CARGO,
          "USUARIO_CREA" => $USUARIO_CREA
        ];
      }
    } else {
      // Create
      $sql = "
        INSERT INTO $TABLE
        (
          ID_ESTUDIO,
          ID_CANDIDATO_EMPRESA,
          EMPRESA,
          CARGO,
          MOTIVO_RETIRO,
          FECHA_INICIO,
          FECHA_RETIRO,
          DESEMPENO,
          TELEFONO,
          CIUDAD,
          REFERENCIA_NOMBRE,
          REFERENCIA_CARGO,
          USUARIO_CREA
        )
        VALUES
        (
          ?,?,?,?,?,?,?,?,?,?,?,?,?
        )
      ";
      
      $stmt = $mysqli->prepare($sql);
      $stmt->bind_param(
        "sssssssssssss",
        $ID_ESTUDIO,
        $ID_CANDIDATO_EMPRESA,
        $EMPRESA,
        $CARGO,
        $MOTIVO_RETIRO,
        $FECHA_INICIO,
        $FECHA_RETIRO,
        $DESEMPENO,
        $TELEFONO,
        $CIUDAD,
        $REFERENCIA_NOMBRE,
        $REFERENCIA_CARGO,
        $USUARIO_CREA
      );
      $stmt->execute();
      $affected++;
      
      $savedRows[] = [
        "ID" => $mysqli->insert_id,
        "ID_ESTUDIO" => $ID_ESTUDIO,
        "ID_CANDIDATO_EMPRESA" => $ID_CANDIDATO_EMPRESA,
        "EMPRESA" => $EMPRESA,
        "CARGO" => $CARGO,
        "MOTIVO_RETIRO" => $MOTIVO_RETIRO,
        "FECHA_INICIO" => $FECHA_INICIO,
        "FECHA_RETIRO" => $FECHA_RETIRO,
        "DESEMPENO" => $DESEMPENO,
        "TELEFONO" => $TELEFONO,
        "CIUDAD" => $CIUDAD,
        "REFERENCIA_NOMBRE" => $REFERENCIA_NOMBRE,
        "REFERENCIA_CARGO" => $REFERENCIA_CARGO,
        "USUARIO_CREA" => $USUARIO_CREA
      ];
    }
  }

  $mysqli->commit();

  echo json_encode([
    "success" => true,
    "message" => "Referencias laborales guardadas correctamente.",
    "affected" => $affected,
    "data" => $savedRows
  ]);
} catch (Exception $e) {
  $mysqli->rollback();
  http_response_code(500);
  echo json_encode([
    "success" => false,
    "message" => "Error guardando referencias laborales.",
    "error" => $e->getMessage()
  ]);
}