<?php
declare(strict_types=1);

require_once __DIR__ . '/../auth/guard.php';
require_once __DIR__ . '/../conexion.php';
require_once __DIR__ . '/../_helpers.php';

$u = require_login();
require_module_write($u, "instrumentos");
$in = read_json_body();

$cod = trim((string)($in['codigo_familia'] ?? ''));
$rels = $in['relaciones'] ?? [];

if ($cod === '') json_response(['ok'=>false,'message'=>'Código familia requerido'], 400);
if (!is_array($rels)) $rels = [];

try {
  $pdo->beginTransaction();

  $st = $pdo->prepare("INSERT INTO instrumentos_genograma (codigo_familia, registrado_por) VALUES (:cod, :reg)");
  $st->execute([':cod'=>$cod, ':reg'=>($u['rut'] ?? null)]);
  $genId = (int)$pdo->lastInsertId();

  $ins = $pdo->prepare("
    INSERT INTO instrumentos_genograma_rel (genograma_id, rut_a, rut_b, tipo)
    VALUES (:gid, NULLIF(:a,''), NULLIF(:b,''), NULLIF(:t,''))
  ");

  $count = 0;
  foreach ($rels as $r) {
    if (!is_array($r)) continue;
    $a = normalize_rut((string)($r['rut_a'] ?? ''));
    $b = normalize_rut((string)($r['rut_b'] ?? ''));
    $t = trim((string)($r['tipo'] ?? ''));
    if ($a === '' || $b === '' || $t === '') continue;
    $ins->execute([':gid'=>$genId, ':a'=>$a, ':b'=>$b, ':t'=>$t]);
    $count++;
  }

  $stH = $pdo->prepare("
    INSERT INTO instrumentos_historial
      (codigo_familia, instrumento, ref_id, fecha, puntaje, resultado, registrado_por)
    VALUES
      (:cod, 'GENOGRAMA', :ref, CURDATE(), NULL, :res, :reg)
  ");
  $stH->execute([
    ':cod'=>$cod,
    ':ref'=>$genId,
    ':res'=>"Relaciones: {$count}",
    ':reg'=>($u['rut'] ?? null),
  ]);

  $pdo->commit();
  fp_log_activity($pdo, $u, 'Instrumentos', 'Guardar genograma', 'Se registró genograma para familia ' . $cod . ' con ' . $count . ' relaciones.', 'genograma', (string)$genId);
  json_response(['ok'=>true,'id'=>$genId,'relaciones'=>$count]);

} catch (Throwable $e) {
  if ($pdo->inTransaction()) $pdo->rollBack();
  error_log("GEN SAVE ERROR: ".$e->getMessage());
  json_response(['ok'=>false,'message'=>'Error guardando Genograma.'], 500);
}
