<?php
/**
 * api/notificaciones.php
 * ob_start() evita que warnings/redirects contaminen el JSON
 */
ob_start();

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

// Sesión sin redirigir
if (session_status() === PHP_SESSION_NONE) {
    session_name(SESSION_NAME);
    session_start();
}

ob_clean();
header('Content-Type: application/json; charset=utf-8');

// Buscar id_usuario en sesión (compatible con distintas claves)
$idUsuario = $_SESSION['user_id']
          ?? $_SESSION['id_usuario']
          ?? ($_SESSION['user']['id'] ?? null);

if (!$idUsuario) {
    echo json_encode(['ok'=>false,'total'=>0,'rows'=>[]]);
    exit;
}

try {
    $db = getDB();
    $st = $db->prepare("
        SELECT id_notif, asunto, mensaje, leida, created_at
        FROM notificaciones
        WHERE id_usuario = :uid AND tipo = 'sistema'
        ORDER BY created_at DESC
        LIMIT 20
    ");
    $st->execute([':uid' => $idUsuario]);
    $rows = $st->fetchAll(PDO::FETCH_ASSOC);

    $noLeidas = count(array_filter($rows, fn($r) => !$r['leida']));

    foreach ($rows as &$r) {
        $ts   = strtotime($r['created_at']);
        $diff = time() - $ts;
        if ($diff < 60)         $r['hace'] = 'ahora';
        elseif ($diff < 3600)   $r['hace'] = floor($diff/60)    . ' min';
        elseif ($diff < 86400)  $r['hace'] = floor($diff/3600)  . ' h';
        elseif ($diff < 604800) $r['hace'] = floor($diff/86400) . ' d';
        else                    $r['hace'] = date('d/m/Y', $ts);
    }
    unset($r);

    echo json_encode(['ok'=>true,'total'=>$noLeidas,'rows'=>$rows]);
} catch (Exception $e) {
    echo json_encode(['ok'=>false,'total'=>0,'rows'=>[],'error'=>$e->getMessage()]);
}