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

function clamp_q($v): int {
  if (!is_numeric($v)) return 0;
  $n = (int)$v;
  if ($n < 0) $n = 0;
  if ($n > 2) $n = 2;
  return $n;
}

$cod  = trim((string)($in['codigo_familia'] ?? ''));
$fecha = trim((string)($in['fecha_aplicacion'] ?? ''));
$rutR  = normalize_rut((string)($in['rut_respondiente'] ?? ''));

$q1 = clamp_q($in['q1'] ?? 0);
$q2 = clamp_q($in['q2'] ?? 0);
$q3 = clamp_q($in['q3'] ?? 0);
$q4 = clamp_q($in['q4'] ?? 0);
$q5 = clamp_q($in['q5'] ?? 0);

$obs = trim((string)($in['observaciones'] ?? ''));

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

$total = $q1 + $q2 + $q3 + $q4 + $q5;
$clas = ($total >= 7) ? 'Buena funcionalidad' : (($total >= 4) ? 'Disfunción moderada' : 'Disfunción severa');

try {
  $pdo->beginTransaction();

  $st = $pdo->prepare("
    INSERT INTO instrumentos_apgar
      (codigo_familia, fecha_aplicacion, rut_respondiente, q1,q2,q3,q4,q5, total, clasificacion, observaciones, registrado_por)
    VALUES
      (:cod, NULLIF(:fecha,''), NULLIF(:rut,''), :q1,:q2,:q3,:q4,:q5, :total, :clas, NULLIF(:obs,''), :reg)
  ");
  $st->execute([
    ':cod'=>$cod,
    ':fecha'=>$fecha,
    ':rut'=>$rutR,
    ':q1'=>$q1,':q2'=>$q2,':q3'=>$q3,':q4'=>$q4,':q5'=>$q5,
    ':total'=>$total,
    ':clas'=>$clas,
    ':obs'=>$obs,
    ':reg'=>($u['rut'] ?? null),
  ]);

  $id = (int)$pdo->lastInsertId();

  $stH = $pdo->prepare("
    INSERT INTO instrumentos_historial
      (codigo_familia, instrumento, ref_id, fecha, puntaje, resultado, registrado_por)
    VALUES
      (:cod, 'APGAR', :ref, NULLIF(:fecha,''), :puntaje, :res, :reg)
  ");
  $stH->execute([
    ':cod'=>$cod,
    ':ref'=>$id,
    ':fecha'=>$fecha,
    ':puntaje'=>$total,
    ':res'=>$clas,
    ':reg'=>($u['rut'] ?? null),
  ]);

  $pdo->commit();
  fp_log_activity($pdo, $u, 'Instrumentos', 'Guardar APGAR', 'Se registró APGAR para familia ' . $cod . ' con resultado ' . $clas, 'apgar', (string)$id);
  json_response(['ok'=>true,'id'=>$id,'total'=>$total,'clasificacion'=>$clas]);

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