<?php
header('Content-Type: application/json; charset=utf-8');

require_once __DIR__ . '/../../odbconexion/odbconexion.php';

function clean($v){ return trim((string)($v ?? '')); }

try {
  if($_SERVER['REQUEST_METHOD'] !== 'POST'){
    echo json_encode(["ok"=>false, "msg"=>"Método no permitido"], JSON_UNESCAPED_UNICODE);
    exit;
  }

  $db = (new odbconexion())->openconection();
  $db->set_charset("utf8mb4");

  $tipo_persona = clean($_POST['tipo_persona'] ?? 'fisica'); // fisica | moral

  $id_promotor  = (int)($_POST['id_fk_catalogo_cliente_pertenece'] ?? 0);

  // Campos comunes
  $rfc     = clean($_POST['rfc'] ?? '');
  $correo  = clean($_POST['correo_1'] ?? '');
  $cel     = clean($_POST['no_de_celular'] ?? '');
  $obs     = clean($_POST['observaciones_y_notas'] ?? '');

  // Física
  $nombre  = clean($_POST['nombre_completo'] ?? '');
  $ap      = clean($_POST['apellido_paterno'] ?? '');
  $am      = clean($_POST['apellido_materno'] ?? '');

  // Moral
  $razon   = clean($_POST['razon_social_persona_moral'] ?? '');
  $contacto= clean($_POST['nombre_de_contacto_persona_moral'] ?? '');

  // Usuario (si usas sesión)
  session_start();
  $usuario = $_SESSION['usuario'] ?? ($_SESSION['user'] ?? 'sistema');

  // Insert “mínimo”
  // Si tu tabla tiene campos obligatorios adicionales, este INSERT puede fallar: te devolverá el mensaje exacto.
  $stmt = $db->prepare("
    INSERT INTO clientes
    (
      Id_Fk_Catalogo_Cliente_Pertenece,
      Nombre_Completo, Apellido_Paterno, Apellido_Materno,
      RFC,
      Razon_Social_Persona_Moral,
      Nombre_De_Contacto_Persona_Moral,
      No_De_Celular,
      Correo_1,
      Observaciones_Y_Notas,
      Fecha_De_Registro,
      Usuario_Que_Registra
    )
    VALUES
    (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), ?)
  ");

  if(!$stmt){
    echo json_encode(["ok"=>false, "msg"=>"Prepare error: ".$db->error], JSON_UNESCAPED_UNICODE);
    exit;
  }

  // Para moral, permitimos dejar física vacía y viceversa (depende de tu UX).
  $stmt->bind_param(
    "issssssssss",
    $id_promotor,
    $nombre, $ap, $am,
    $rfc,
    $razon,
    $contacto,
    $cel,
    $correo,
    $obs,
    $usuario
  );

  $ok = $stmt->execute();
  if(!$ok){
    echo json_encode(["ok"=>false, "msg"=>"Execute error: ".$stmt->error], JSON_UNESCAPED_UNICODE);
    exit;
  }

  $newId = $stmt->insert_id;

  // Label como en el get
  $label = $razon !== '' ? $razon : trim("$nombre $ap $am");
  if($label === '') $label = "Cliente #$newId";
  if($rfc !== '') $label .= " — $rfc";

  echo json_encode([
    "ok"=>true,
    "id"=>(int)$newId,
    "text"=>$label
  ], JSON_UNESCAPED_UNICODE);

} catch (Throwable $e){
  echo json_encode(["ok"=>false, "msg"=>"Error: ".$e->getMessage()], JSON_UNESCAPED_UNICODE);
}
