<?php
// ============================================
// SEN RDV SANTÉ+ — Journal d'activité (Audit Log)
// GET /api/admin/audit.php
// GET /api/admin/audit.php?limite=50
// ============================================

require_once '../config/database.php';
require_once '../config/helpers.php';

if ($_SERVER['REQUEST_METHOD'] !== 'GET') {
    repondre(['erreur' => 'Méthode non autorisée'], 405);
}

$userConnecte = verifierToken();

if (!in_array($userConnecte['role'], ['admin_hopital', 'super_admin'])) {
    repondre(['erreur' => 'Accès non autorisé'], 403);
}

$db     = getDB();
$limite = min((int)($_GET['limite'] ?? 30), 100);

// je récupère les logs avec le nom de l'utilisateur qui a effectué l'action
if ($userConnecte['role'] === 'super_admin') {
    // je vois tout
    $stmt = $db->prepare("
        SELECT a.id, a.action, a.table_cible, a.enregistrement_id,
               a.details, a.created_at,
               CONCAT(u.prenom, ' ', u.nom) AS utilisateur_nom,
               u.role AS utilisateur_role
        FROM audit_log a
        LEFT JOIN utilisateurs u ON u.id = a.utilisateur_id
        ORDER BY a.created_at DESC
        LIMIT ?
    ");
    $stmt->execute([$limite]);
} else {
    // l'admin voit uniquement les actions sur son hôpital
    $stmt = $db->prepare("
        SELECT a.id, a.action, a.table_cible, a.enregistrement_id,
               a.details, a.created_at,
               CONCAT(u.prenom, ' ', u.nom) AS utilisateur_nom,
               u.role AS utilisateur_role
        FROM audit_log a
        LEFT JOIN utilisateurs u ON u.id = a.utilisateur_id
        WHERE u.hopital_id = ? OR a.utilisateur_id = ?
        ORDER BY a.created_at DESC
        LIMIT ?
    ");
    $stmt->execute([$userConnecte['hopital_id'], $userConnecte['utilisateur_id'], $limite]);
}

$logs = $stmt->fetchAll();

// je décode les détails JSON pour chaque log
foreach ($logs as &$log) {
    if ($log['details']) {
        $log['details'] = json_decode($log['details'], true);
    }
}

repondre(['succes' => true, 'logs' => $logs]);