<?php
// superadmin/auth_sa.php
// Incluir en todos los archivos del superadmin
// Uso: require_once __DIR__ . '/auth_sa.php';

require_once __DIR__ . '/../config/app.php';
require_once __DIR__ . '/../config/database.php';
require_once __DIR__ . '/../includes/functions.php';

session_name('sigvp_sa_sess');
session_start();

// Verificar que la sesión existe y no expiró (2 horas)
if (
    empty($_SESSION['superadmin']) ||
    (time() - ($_SESSION['superadmin']['login_at'] ?? 0)) > 7200
) {
    session_destroy();
    header('Location: ' . BASE_URL . '/superadmin/login.php?msg=timeout');
    exit;
}

// Renovar tiempo de sesión
$_SESSION['superadmin']['login_at'] = time();

// Helper global
function sa_user(): array { return $_SESSION['superadmin']; }

// Helper: obtener estado de licencia de un instituto
function getLicenciaEstado(PDO $db, int $idInstituto): array {
    $st = $db->prepare("
        SELECT l.*, i.nombre AS instituto_nombre
        FROM licencias l
        JOIN institutos i ON i.id_instituto = l.id_instituto
        WHERE l.id_instituto = :id AND l.activa = 1
        ORDER BY l.fecha_fin DESC LIMIT 1
    ");
    $st->execute([':id' => $idInstituto]);
    $lic = $st->fetch(PDO::FETCH_ASSOC);
    if (!$lic) return ['estado' => 'sin_licencia', 'dias_restantes' => 0];

    $hoy   = new DateTime();
    $fin   = new DateTime($lic['fecha_fin']);
    $dias  = (int)$hoy->diff($fin)->format('%r%a');

    $estado = 'activa';
    if ($dias < 0)  $estado = 'vencida';
    elseif ($dias <= 30) $estado = 'por_vencer';

    return array_merge($lic, ['estado' => $estado, 'dias_restantes' => $dias]);
}