<?php
// On remonte d'un dossier pour trouver les fichiers requis
require_once '../connexion/auth.php'; 

// SÉCURITÉ : Vérification de l'accès (Adapté à ta fonction hasRole)
if (!isLogged() || !hasRole('Administrateur')) {
    header('Location: ../index.php');
    exit();
}

$message = '';
$type_msg = '';

// ==========================================
// TRAITEMENT DES ACTIONS (POST)
// ==========================================
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) {
    $id_user = (int)$_POST['id_user'];
    
    // 1. Basculer la validité du compte
    if ($_POST['action'] === 'toggle_valid') {
        $nouvel_etat = ($_POST['etat_actuel'] == 1) ? 0 : 1;
        $stmt = $pdo->prepare("UPDATE utilisateurs SET est_valide = ? WHERE id = ?");
        $stmt->execute([$nouvel_etat, $id_user]);
        $message = "Statut du compte mis à jour.";
        $type_msg = "succes";
    } 
    
    // 2. Mettre à jour les rôles
    elseif ($_POST['action'] === 'update_roles') {
        // On supprime tous les rôles actuels de l'utilisateur
        $stmt = $pdo->prepare("DELETE FROM utilisateurs_roles WHERE utilisateur_id = ?");
        $stmt->execute([$id_user]);
        
        // On ajoute les nouveaux rôles cochés
        if (!empty($_POST['roles_choisis'])) {
            $stmt_ins = $pdo->prepare("INSERT INTO utilisateurs_roles (utilisateur_id, role_id) VALUES (?, ?)");
            foreach ($_POST['roles_choisis'] as $id_role) {
                $stmt_ins->execute([$id_user, (int)$id_role]);
            }
        }
        $message = "Les rôles de l'utilisateur ont été mis à jour.";
        $type_msg = "succes";
    }

    // 3. Suppression
    elseif ($_POST['action'] === 'supprimer') {
        if ($id_user == $_SESSION['user_id']) {
            $message = "Sécurité : Vous ne pouvez pas supprimer votre propre compte.";
            $type_msg = "erreur";
        } else {
            // Supprime d'abord les rôles (intégrité referentielle)
            $pdo->prepare("DELETE FROM utilisateurs_roles WHERE utilisateur_id = ?")->execute([$id_user]);
            $pdo->prepare("DELETE FROM utilisateurs WHERE id = ?")->execute([$id_user]);
            $message = "Utilisateur supprimé définitivement.";
            $type_msg = "succes";
        }
    }
}

// ==========================================
// RÉCUPÉRATION DES DONNÉES
// ==========================================

// Liste de tous les rôles possibles pour les formulaires
$tous_les_roles = $pdo->query("SELECT * FROM roles ORDER BY nom_role ASC")->fetchAll(PDO::FETCH_ASSOC);

// Liste des utilisateurs avec leurs rôles groupés (GROUP_CONCAT)
$utilisateurs = $pdo->query("
    SELECT u.*, 
    GROUP_CONCAT(r.nom_role SEPARATOR ', ') as roles_noms,
    GROUP_CONCAT(r.id SEPARATOR ',') as roles_ids
    FROM utilisateurs u
    LEFT JOIN utilisateurs_roles ur ON u.id = ur.utilisateur_id
    LEFT JOIN roles r ON ur.role_id = r.id
    GROUP BY u.id
    ORDER BY u.date_inscription DESC
")->fetchAll(PDO::FETCH_ASSOC);
?>

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>Gestion des Utilisateurs - Saint Vaast</title>
    <link rel="stylesheet" href="../css/global.css">
    <style>
        .table-container { background: white; border-radius: 15px; padding: 25px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); border: 1px solid #eee; margin-top: 20px; }
        table { width: 100%; border-collapse: collapse; text-align: left; }
        th, td { padding: 15px; border-bottom: 1px solid #eee; vertical-align: middle; }
        th { background: #f9fbf9; font-weight: bold; }
        
        .badge-valid { color: #2ecc71; font-weight: bold; }
        .badge-invalid { color: #e74c3c; font-weight: bold; }
        .role-pill { background: #e8eaf6; color: #3f51b5; padding: 3px 8px; border-radius: 5px; font-size: 0.8em; margin-right: 5px; display: inline-block; margin-bottom: 3px; }

        .btn-action { border: none; padding: 8px 12px; border-radius: 8px; font-weight: bold; cursor: pointer; font-size: 0.8em; transition: 0.2s; }
        .btn-toggle { background: #f0f0f0; color: #333; border: 1px solid #ccc; }
        .btn-danger { background: #fee; color: #e74c3c; border: 1px solid #fcc; }
        .btn-save { background: #4a7c44; color: white; margin-top: 10px; width: 100%; }

        .msg { padding: 15px; border-radius: 10px; margin-bottom: 20px; font-weight: bold; text-align: center; }
        .succes { background: #e8f5e9; color: #2ecc71; }
        .erreur { background: #fdeded; color: #e74c3c; }

        /* Style pour les checkboxes des rôles */
        .roles-form { font-size: 0.9em; display: flex; flex-direction: column; gap: 5px; }
        .roles-form label { display: flex; align-items: center; gap: 8px; cursor: pointer; }
    </style>
</head>
<body>

<div class="site-container">
    <img src="../images/banniere.png" alt="Bannière" class="banner-img" style="width: 100%;">
    <nav><?php include '../includes/menu.php'; ?></nav>

    <main class="main-wrapper">
        <h2 style="color: #4a7c44; border-bottom: 2px solid #eee; padding-bottom: 10px;">👥 Administration des Comptes</h2>

        <?php if($message): ?>
            <div class="msg <?= $type_msg ?>"><?= $message ?></div>
        <?php endif; ?>

        <div class="table-container">
            <table>
                <thead>
                    <tr>
                        <th>Utilisateur</th>
                        <th>Email / Inscription</th>
                        <th>Validité</th>
                        <th>Rôles (Modifier)</th>
                        <th>Actions</th>
                    </tr>
                </thead>
                <tbody>
                    <?php foreach ($utilisateurs as $u): 
                        $user_roles = explode(',', $u['roles_ids'] ?? '');
                    ?>
                    <tr>
                        <td>
                            <strong><?= htmlspecialchars(($u['prenom'] ?? '') . ' ' . $u['nom']) ?></strong><br>
                            <small style="color:#666;"><?= htmlspecialchars($u['adresse'] ?? '') ?></small>
                        </td>
                        <td>
                            <?= htmlspecialchars($u['email']) ?><br>
                            <small>Le <?= date('d/m/Y', strtotime($u['date_inscription'])) ?></small>
                        </td>
                        <td>
                            <form method="POST" style="margin:0;">
                                <input type="hidden" name="id_user" value="<?= $u['id'] ?>">
                                <input type="hidden" name="action" value="toggle_valid">
                                <input type="hidden" name="etat_actuel" value="<?= $u['est_valide'] ?>">
                                <button type="submit" class="btn-action btn-toggle">
                                    <?= ($u['est_valide'] == 1) ? '<span class="badge-valid">✅ ACTIF</span>' : '<span class="badge-invalid">❌ SUSPENDU</span>' ?>
                                </button>
                            </form>
                        </td>
                        <td>
                            <form method="POST" class="roles-form">
                                <input type="hidden" name="id_user" value="<?= $u['id'] ?>">
                                <input type="hidden" name="action" value="update_roles">
                                
                                <div style="max-height: 100px; overflow-y: auto; padding-right: 5px;">
                                    <?php foreach ($tous_les_roles as $r): ?>
                                        <label>
                                            <input type="checkbox" name="roles_choisis[]" value="<?= $r['id'] ?>" 
                                                <?= in_array($r['id'], $user_roles) ? 'checked' : '' ?>>
                                            <?= htmlspecialchars($r['nom_role']) ?>
                                        </label>
                                    <?php endforeach; ?>
                                </div>
                                <button type="submit" class="btn-action btn-save">OK</button>
                            </form>
                        </td>
                        <td>
                            <?php if ($u['id'] != $_SESSION['user_id']): ?>
                            <form method="POST" onsubmit="return confirm('Supprimer définitivement cet utilisateur ?');">
                                <input type="hidden" name="id_user" value="<?= $u['id'] ?>">
                                <input type="hidden" name="action" value="supprimer">
                                <button type="submit" class="btn-action btn-danger">Supprimer</button>
                            </form>
                            <?php endif; ?>
                        </td>
                    </tr>
                    <?php endforeach; ?>
                </tbody>
            </table>
        </div>
    </main>
</div>

</body>
</html>