<?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'] ?? ''));
$fecha = trim((string)($in['fecha_aplicacion'] ?? ''));
$etapa = trim((string)($in['etapa'] ?? ''));
$obs   = trim((string)($in['observaciones'] ?? ''));

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

try {
  $pdo->beginTransaction();

  $st = $pdo->prepare("
    INSERT INTO instrumentos_ciclo_vida
      (codigo_familia, fecha_aplicacion, etapa, observaciones, registrado_por)
    VALUES
      (:cod, NULLIF(:fecha,''), NULLIF(:etapa,''), NULLIF(:obs,''), :reg)
  ");
  $st->execute([
    ':cod'=>$cod,
    ':fecha'=>$fecha,
    ':etapa'=>$etapa,
    ':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, 'CICLO_VIDA', :ref, NULLIF(:fecha,''), NULL, :res, :reg)
  ");
  $stH->execute([
    ':cod'=>$cod,
    ':ref'=>$id,
    ':fecha'=>$fecha,
    ':res'=>($etapa !== '' ? "Etapa: {$etapa}" : 'Ciclo de vida registrado'),
    ':reg'=>($u['rut'] ?? null),
  ]);

  $pdo->commit();
  fp_log_activity($pdo, $u, 'Instrumentos', 'Guardar ciclo vital', 'Se registró ciclo vital para familia ' . $cod, 'ciclo_vida', (string)$id);
  json_response(['ok'=>true,'id'=>$id]);

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