<?php
declare(strict_types=1);

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

$u = require_login();
require_module_access($u, "usuarios");

try {
  fp_ensure_percapita_columns($pdo);

  // Auto-reparación defensiva: un percapitado FONASA siempre cuenta como inscrito CESFAM.
  // El rol monitor es solo lectura, por lo tanto no ejecuta reparaciones automáticas.
  if (!is_monitor_user($u)) {
    $pdo->exec("UPDATE usuarios SET inscrito_cesfam = 1 WHERE percapitado = 1 AND fecha_actualizacion_percapita IS NOT NULL AND COALESCE(inscrito_cesfam, 0) <> 1");
  }

  $total = (int)$pdo->query("SELECT COUNT(*) FROM usuarios")->fetchColumn();
  $ins   = (int)$pdo->query("SELECT COUNT(*) FROM usuarios WHERE inscrito_cesfam = 1")->fetchColumn();
  $noins = $total - $ins;
  $percapitados = (int)$pdo->query("SELECT COUNT(*) FROM usuarios WHERE percapitado = 1")->fetchColumn();
  $no_percapitados = $total - $percapitados;

  json_response([
    "ok" => true,
    "data" => [
      "total" => $total,
      "inscritos" => $ins,
      "no_inscritos" => $noins,
      "percapitados" => $percapitados,
      "no_percapitados" => $no_percapitados
    ]
  ]);
} catch (Throwable $e) {
  error_log("PERSONAS STATS ERROR: " . $e->getMessage());
  json_response(["ok" => false, "message" => "Error obteniendo estadísticas."], 500);
}
