<?php
/**
 * Gestion des Utilisateurs Admin - SERVICES-AE
 * Interface pour créer, modifier et supprimer les utilisateurs admin
 */

// Protection d'authentification (comme les autres pages admin)
require_once __DIR__ . '/auth-check.php';

// Inclure les dépendances
require_once '../config/config.php';
require_once '../config/db.php';
require_once __DIR__ . '/AdminUser.php';

// Initialiser AdminUser
$adminUser = new AdminUser($pdo);

// Vérifier et créer la table si nécessaire
if (!$adminUser->tableExists()) {
    $adminUser->createTable();
}

// Variables pour les messages
$success_message = '';
$error_message = '';

// Traitement des actions POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $action = $_POST['action'] ?? '';
    
    switch ($action) {
        case 'create_user':
            $username = trim($_POST['username'] ?? '');
            $password = $_POST['password'] ?? '';
            $confirm_password = $_POST['confirm_password'] ?? '';
            $role = $_POST['role'] ?? '';
            $email = trim($_POST['email'] ?? '');
            
            // Validation
            if (empty($username) || empty($password) || empty($role)) {
                $error_message = "Le nom d'utilisateur, le mot de passe et le rôle sont requis.";
            } elseif (strlen($username) < 3) {
                $error_message = "Le nom d'utilisateur doit contenir au moins 3 caractères.";
            } elseif (strlen($password) < 6) {
                $error_message = "Le mot de passe doit contenir au moins 6 caractères.";
            } elseif ($password !== $confirm_password) {
                $error_message = "Les mots de passe ne correspondent pas.";
            } elseif (!in_array($role, ['admin', 'moderator', 'user'])) {
                $error_message = "Rôle invalide sélectionné.";
            } else {
                // Vérifier si l'utilisateur existe déjà
                $existingUser = $adminUser->getByUsername($username);
                if ($existingUser) {
                    $error_message = "Un utilisateur avec ce nom existe déjà.";
                } else {
                    // Vérifier si l'email est fourni et s'il n'est pas déjà utilisé
                    if (!empty($email)) {
                        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                            $error_message = "Format d'email invalide.";
                        } else {
                            $existingEmail = $adminUser->getByEmail($email);
                            if ($existingEmail) {
                                $error_message = "Cet email est déjà utilisé par un autre utilisateur.";
                            }
                        }
                    }
                    
                    // Créer l'utilisateur si pas d'erreur
                    if (empty($error_message)) {
                        if ($adminUser->create($username, $password, $email, $role)) {
                            $success_message = "Utilisateur '$username' créé avec succès avec le rôle '$role' !";
                            
                            // Log de création
                            error_log("New admin user created: $username (role: $role) by " . ($_SESSION['admin_username'] ?? 'unknown') . " at " . date('Y-m-d H:i:s'));
                        } else {
                            $error_message = "Erreur lors de la création de l'utilisateur.";
                        }
                    }
                }
            }
            
            // Réponse AJAX
            if (isset($_POST['ajax'])) {
                header('Content-Type: application/json');
                echo json_encode([
                    'success' => !empty($success_message),
                    'message' => $success_message ?: $error_message
                ]);
                exit;
            }
            break;
            
        case 'update_user':
            $user_id = (int)($_POST['user_id'] ?? 0);
            $username = trim($_POST['username'] ?? '');
            $new_password = $_POST['new_password'] ?? '';
            
            if ($user_id <= 0) {
                $error_message = "ID utilisateur invalide.";
            } elseif (empty($username)) {
                $error_message = "Le nom d'utilisateur est requis.";
            } elseif (strlen($username) < 3) {
                $error_message = "Le nom d'utilisateur doit contenir au moins 3 caractères.";
            } else {
                // Récupérer l'utilisateur actuel
                $currentUser = $adminUser->getById($user_id);
                if (!$currentUser) {
                    $error_message = "Utilisateur non trouvé.";
                } else {
                    // Vérifier si le nouveau nom d'utilisateur existe déjà (sauf pour l'utilisateur actuel)
                    $existingUser = $adminUser->getByUsername($username);
                    if ($existingUser && $existingUser['id'] != $user_id) {
                        $error_message = "Un autre utilisateur avec ce nom existe déjà.";
                    } else {
                        // Mise à jour du nom d'utilisateur
                        $stmt = $pdo->prepare("UPDATE admin_users SET username = ?, updated_at = NOW() WHERE id = ?");
                        if ($stmt->execute([$username, $user_id])) {
                            $success_message = "Nom d'utilisateur mis à jour avec succès.";
                            
                            // Mise à jour du mot de passe si fourni
                            if (!empty($new_password)) {
                                if (strlen($new_password) < 6) {
                                    $error_message = "Le nouveau mot de passe doit contenir au moins 6 caractères.";
                                    $success_message = '';
                                } else {
                                    $hashed_password = password_hash($new_password, PASSWORD_DEFAULT);
                                    $stmt = $pdo->prepare("UPDATE admin_users SET password = ? WHERE id = ?");
                                    if ($stmt->execute([$hashed_password, $user_id])) {
                                        $success_message .= " Mot de passe également mis à jour.";
                                    }
                                }
                            }
                            
                            // Log de modification
                            error_log("Admin user updated: ID $user_id ($username) by " . ($_SESSION['admin_username'] ?? 'unknown') . " at " . date('Y-m-d H:i:s'));
                        } else {
                            $error_message = "Erreur lors de la mise à jour.";
                        }
                    }
                }
            }
            
            // Réponse AJAX
            if (isset($_POST['ajax'])) {
                header('Content-Type: application/json');
                echo json_encode([
                    'success' => !empty($success_message),
                    'message' => $success_message ?: $error_message
                ]);
                exit;
            }
            break;
            
        case 'delete_user':
            $user_id = (int)($_POST['user_id'] ?? 0);
            
            if ($user_id <= 0) {
                $error_message = "ID utilisateur invalide.";
            } elseif ($user_id == ($_SESSION['admin_user_id'] ?? 0)) {
                $error_message = "Vous ne pouvez pas supprimer votre propre compte.";
            } else {
                $userToDelete = $adminUser->getById($user_id);
                if (!$userToDelete) {
                    $error_message = "Utilisateur non trouvé.";
                } else {
                    // Supprimer l'avatar s'il existe
                    if ($userToDelete['avatar']) {
                        $avatar_path = __DIR__ . '/uploads/avatars/' . $userToDelete['avatar'];
                        if (file_exists($avatar_path)) {
                            unlink($avatar_path);
                        }
                    }
                    
                    // Supprimer l'utilisateur
                    $stmt = $pdo->prepare("DELETE FROM admin_users WHERE id = ?");
                    if ($stmt->execute([$user_id])) {
                        $success_message = "Utilisateur '" . htmlspecialchars($userToDelete['username']) . "' supprimé avec succès.";
                        
                        // Log de suppression
                        error_log("Admin user deleted: ID $user_id ({$userToDelete['username']}) by " . ($_SESSION['admin_username'] ?? 'unknown') . " at " . date('Y-m-d H:i:s'));
                    } else {
                        $error_message = "Erreur lors de la suppression.";
                    }
                }
            }
            
            // Réponse AJAX
            if (isset($_POST['ajax'])) {
                header('Content-Type: application/json');
                echo json_encode([
                    'success' => !empty($success_message),
                    'message' => $success_message ?: $error_message
                ]);
                exit;
            }
            break;
            
        case 'toggle_status':
            $user_id = (int)($_POST['user_id'] ?? 0);
            
            if ($user_id <= 0) {
                $error_message = "ID utilisateur invalide.";
            } elseif ($user_id == ($_SESSION['admin_user_id'] ?? 0)) {
                $error_message = "Vous ne pouvez pas modifier votre propre statut.";
            } else {
                $userToToggle = $adminUser->getById($user_id);
                if (!$userToToggle) {
                    $error_message = "Utilisateur non trouvé.";
                } else {
                    if ($adminUser->toggleUserStatus($user_id)) {
                        $newStatus = ($userToToggle['status'] === 'active') ? 'inactive' : 'active';
                        $statusText = ($newStatus === 'active') ? 'activé' : 'désactivé';
                        $success_message = "L'utilisateur '" . htmlspecialchars($userToToggle['username']) . "' a été $statusText avec succès.";
                        
                        // Log du changement de statut
                        error_log("Admin user status changed: ID $user_id ({$userToToggle['username']}) -> $newStatus by " . ($_SESSION['admin_username'] ?? 'unknown') . " at " . date('Y-m-d H:i:s'));
                    } else {
                        $error_message = "Erreur lors du changement de statut.";
                    }
                }
            }
            
            // Réponse AJAX
            if (isset($_POST['ajax'])) {
                header('Content-Type: application/json');
                echo json_encode([
                    'success' => !empty($success_message),
                    'message' => $success_message ?: $error_message
                ]);
                exit;
            }
            break;
            
        case 'reset_password':
            $user_id = (int)($_POST['user_id'] ?? 0);
            $new_password = $_POST['new_password'] ?? '';
            
            if ($user_id <= 0) {
                $error_message = "ID utilisateur invalide.";
            } elseif (empty($new_password)) {
                $error_message = "Le nouveau mot de passe est requis.";
            } elseif (strlen($new_password) < 6) {
                $error_message = "Le mot de passe doit contenir au moins 6 caractères.";
            } else {
                // Récupérer l'utilisateur
                $targetUser = $adminUser->getById($user_id);
                if (!$targetUser) {
                    $error_message = "Utilisateur non trouvé.";
                } else {
                    // Réinitialiser le mot de passe
                    if ($adminUser->resetPassword($user_id, $new_password)) {
                        $success_message = "Mot de passe réinitialisé avec succès pour l'utilisateur '" . htmlspecialchars($targetUser['username']) . "'.";
                        
                        // Log de réinitialisation
                        error_log("Password reset for user: ID $user_id ({$targetUser['username']}) by " . ($_SESSION['admin_username'] ?? 'unknown') . " at " . date('Y-m-d H:i:s'));
                    } else {
                        $error_message = "Erreur lors de la réinitialisation du mot de passe.";
                    }
                }
            }
            
            // Réponse AJAX
            if (isset($_POST['ajax'])) {
                header('Content-Type: application/json');
                echo json_encode([
                    'success' => !empty($success_message),
                    'message' => $success_message ?: $error_message
                ]);
                exit;
            }
            break;
    }
}

// Récupérer tous les utilisateurs
$search = $_GET['search'] ?? '';
$status_filter = $_GET['status'] ?? '';
$page = max(1, (int)($_GET['page'] ?? 1));
$per_page = 10;
$offset = ($page - 1) * $per_page;

// Utiliser les méthodes de la classe AdminUser
$total_users = $adminUser->countUsers($search, $status_filter);
$users = $adminUser->getAllUsers($search, $offset, $per_page, $status_filter);
$total_pages = ceil($total_users / $per_page);

// Fonction helper pour les paramètres de pagination
function buildPaginationParams($search, $status_filter) {
    $params = [];
    if (!empty($search)) $params[] = 'search=' . urlencode($search);
    if (!empty($status_filter)) $params[] = 'status=' . urlencode($status_filter);
    return !empty($params) ? '&' . implode('&', $params) : '';
}

// Configuration pour le template (comme admin-profile.php)
$page_title = "Gestion des Utilisateurs";
$current_page = "users";

// Configuration pour le contenu de la page
ob_start(); // Commencer la capture du contenu
?>

<!-- Messages d'alerte -->
<div id="alertContainer">
    <?php if ($success_message): ?>
        <div class="alert alert-success alert-dismissible fade show" role="alert">
            <i class="ri ri-check-circle-line me-2"></i>
            <?= htmlspecialchars($success_message) ?>
            <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
        </div>
    <?php endif; ?>
    
    <?php if ($error_message): ?>
        <div class="alert alert-danger alert-dismissible fade show" role="alert">
            <i class="ri ri-error-warning-line me-2"></i>
            <?= htmlspecialchars($error_message) ?>
            <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
        </div>
    <?php endif; ?>
</div>

<!-- Page Content -->
<div class="row">
    <div class="col-12">
        <!-- Page Header -->
        <div class="d-flex justify-content-between align-items-center mb-4">
            <div>
                <h4 class="fw-bold mb-1">
                    <i class="ri ri-group-line me-2 text-primary"></i>Gestion des Utilisateurs
                </h4>
                <p class="mb-0 text-muted">Créer, modifier et gérer les comptes administrateurs</p>
            </div>
            <nav aria-label="breadcrumb">
                <ol class="breadcrumb mb-0">
                    <li class="breadcrumb-item">
                        <a href="index.php" class="text-decoration-none">Accueil</a>
                    </li>
                    <li class="breadcrumb-item active">Utilisateurs</li>
                </ol>
            </nav>
        </div>

        <div class="row">
            <!-- Statistiques -->
            <div class="col-xl-2 col-lg-3 col-md-4 mb-4">
                <div class="card border border-primary">
                    <div class="card-body text-center">
                        <div class="mx-auto mb-3">
                            <i class="ri ri-group-line text-primary" style="font-size: 3rem;"></i>
                        </div>
                        <h4 class="fw-bold text-primary"><?= $total_users ?></h4>
                        <p class="mb-0 text-muted">Total</p>
                    </div>
                </div>
            </div>
            
            <div class="col-xl-2 col-lg-3 col-md-4 mb-4">
                <div class="card border border-success">
                    <div class="card-body text-center">
                        <div class="mx-auto mb-3">
                            <i class="ri ri-checkbox-circle-line text-success" style="font-size: 3rem;"></i>
                        </div>
                        <h4 class="fw-bold text-success"><?= $adminUser->countUsers('', 'active') ?></h4>
                        <p class="mb-0 text-muted">Actifs</p>
                    </div>
                </div>
            </div>
            
            <div class="col-xl-2 col-lg-3 col-md-4 mb-4">
                <div class="card border border-danger">
                    <div class="card-body text-center">
                        <div class="mx-auto mb-3">
                            <i class="ri ri-close-circle-line text-danger" style="font-size: 3rem;"></i>
                        </div>
                        <h4 class="fw-bold text-danger"><?= $adminUser->countUsers('', 'inactive') ?></h4>
                        <p class="mb-0 text-muted">Inactifs</p>
                    </div>
                </div>
            </div>

            <!-- Bouton d'action -->
            <div class="col-xl-6 col-lg-3 col-md-12 mb-4">
                <div class="card border border-success">
                    <div class="card-body d-flex justify-content-between align-items-center">
                        <div>
                            <h6 class="fw-bold text-success mb-1">Nouveau Utilisateur</h6>
                            <p class="mb-0 text-muted">Ajouter un nouvel administrateur</p>
                        </div>
                        <button type="button" class="btn btn-success" data-bs-toggle="modal" data-bs-target="#createUserModal">
                            <i class="ri ri-user-add-line me-2"></i>Créer
                        </button>
                    </div>
                </div>
            </div>
        </div>

        <!-- Recherche et filtres -->
        <div class="card border border-info mb-4">
            <div class="card-header">
                <h5 class="mb-0 text-info">
                    <i class="ri ri-search-line me-2"></i>Recherche et Filtres
                </h5>
            </div>
            <div class="card-body">
                <form method="GET" class="row g-3">
                    <div class="col-md-4">
                        <input type="text" 
                               name="search" 
                               class="form-control" 
                               placeholder="Rechercher par nom d'utilisateur..."
                               value="<?= htmlspecialchars($search) ?>">
                    </div>
                    <div class="col-md-3">
                        <select name="status" class="form-select">
                            <option value="">Tous les statuts</option>
                            <option value="active" <?= $status_filter === 'active' ? 'selected' : '' ?>>
                                <i class="ri ri-checkbox-circle-line"></i> Actifs
                            </option>
                            <option value="inactive" <?= $status_filter === 'inactive' ? 'selected' : '' ?>>
                                <i class="ri ri-close-circle-line"></i> Inactifs
                            </option>
                        </select>
                    </div>
                    <div class="col-md-3">
                        <button type="submit" class="btn btn-primary">
                            <i class="ri ri-search-line me-2"></i>Rechercher
                        </button>
                    </div>
                    <div class="col-md-2">
                        <?php if ($search || $status_filter): ?>
                            <a href="admin-users.php" class="btn btn-outline-secondary w-100">
                                <i class="ri ri-close-line me-2"></i>Effacer
                            </a>
                        <?php endif; ?>
                    </div>
                </form>
            </div>
        </div>

        <!-- Table des utilisateurs -->
        <div class="card border border-warning">
            <div class="card-header">
                <h5 class="mb-0 text-warning">
                    <i class="ri ri-user-settings-line me-2"></i>Liste des Utilisateurs
                </h5>
            </div>
            
            <div class="card-body p-0">
                <?php if (empty($users)): ?>
                    <div class="text-center py-5">
                        <div class="mx-auto mb-3">
                            <i class="ri ri-user-search-line text-muted" style="font-size: 4rem;"></i>
                        </div>
                        <h6 class="text-muted">
                            <?php if ($search || $status_filter): ?>
                                Aucun utilisateur trouvé avec les critères :
                                <?= $search ? "\"$search\"" : '' ?>
                                <?= $status_filter ? ($search ? ' et ' : '') . "statut: $status_filter" : '' ?>
                            <?php else: ?>
                                Aucun utilisateur trouvé
                            <?php endif; ?>
                        </h6>
                        <p class="text-muted mb-0">Commencez par créer un nouvel utilisateur</p>
                    </div>
                <?php else: ?>
                    <div class="table-responsive">
                        <table class="table table-hover mb-0">
                            <thead class="table-light">
                                <tr>
                                    <th>ID</th>
                                    <th>Avatar</th>
                                    <th>Nom d'utilisateur</th>
                                    <th>Rôle</th>
                                    <th>Créé le</th>
                                    <th>Dernière connexion</th>
                                    <th>Statut</th>
                                    <th class="text-center">Actions</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php foreach ($users as $user): ?>
                                    <tr>
                                        <td class="align-middle">
                                            <span class="badge bg-primary">#<?= $user['id'] ?></span>
                                        </td>
                                        <td class="align-middle">
                                            <?php if ($user['avatar'] && file_exists(__DIR__ . '/uploads/avatars/' . $user['avatar'])): ?>
                                                <img src="uploads/avatars/<?= htmlspecialchars($user['avatar']) ?>" 
                                                     alt="Avatar" 
                                                     class="rounded-circle"
                                                     style="width: 40px; height: 40px; object-fit: cover;">
                                            <?php else: ?>
                                                <div class="d-flex align-items-center justify-content-center" style="width: 40px; height: 40px;">
                                                    <i class="ri ri-user-line text-secondary" style="font-size: 1.5rem;"></i>
                                                </div>
                                            <?php endif; ?>
                                        </td>
                                        <td class="align-middle">
                                            <div>
                                                <span class="fw-medium"><?= htmlspecialchars($user['username']) ?></span>
                                                <?php if ($user['id'] == ($_SESSION['admin_user_id'] ?? 0)): ?>
                                                    <span class="badge bg-info ms-2">Vous</span>
                                                <?php endif; ?>
                                            </div>
                                        </td>
                                        <td class="align-middle">
                                            <?php
                                            $roleClass = '';
                                            $roleIcon = '';
                                            switch ($user['role']) {
                                                case 'admin':
                                                    $roleClass = 'bg-danger';
                                                    $roleIcon = 'ri-shield-user-line';
                                                    break;
                                                case 'moderator':
                                                    $roleClass = 'bg-warning';
                                                    $roleIcon = 'ri-user-star-line';
                                                    break;
                                                case 'user':
                                                default:
                                                    $roleClass = 'bg-primary';
                                                    $roleIcon = 'ri-user-line';
                                                    break;
                                            }
                                            ?>
                                            <span class="badge <?= $roleClass ?>">
                                                <i class="<?= $roleIcon ?> me-1"></i>
                                                <?= ucfirst($user['role'] ?? 'user') ?>
                                            </span>
                                        </td>
                                        <td class="align-middle">
                                            <?php if ($user['created_at']): ?>
                                                <small class="text-muted">
                                                    <i class="ri ri-calendar-line me-1"></i>
                                                    <?= date('d/m/Y H:i', strtotime($user['created_at'])) ?>
                                                </small>
                                            <?php else: ?>
                                                <small class="text-muted">-</small>
                                            <?php endif; ?>
                                        </td>
                                        <td class="align-middle">
                                            <?php if ($user['last_login']): ?>
                                                <small class="text-success">
                                                    <i class="ri ri-time-line me-1"></i>
                                                    <?= date('d/m/Y H:i', strtotime($user['last_login'])) ?>
                                                </small>
                                            <?php else: ?>
                                                <span class="badge bg-warning">Jamais connecté</span>
                                            <?php endif; ?>
                                        </td>
                                        <td class="align-middle">
                                            <?php if ($user['status'] === 'active'): ?>
                                                <span class="badge bg-success">
                                                    <i class="ri ri-checkbox-circle-line me-1"></i>Actif
                                                </span>
                                            <?php else: ?>
                                                <span class="badge bg-danger">
                                                    <i class="ri ri-close-circle-line me-1"></i>Inactif
                                                </span>
                                            <?php endif; ?>
                                        </td>
                                        <td class="text-center align-middle">
                                            <div class="dropdown">
                                                <button class="btn btn-sm btn-outline-primary dropdown-toggle" 
                                                        type="button" 
                                                        data-bs-toggle="dropdown">
                                                    <i class="ri ri-more-2-line"></i>
                                                </button>
                                                <ul class="dropdown-menu">
                                                    <li>
                                                        <button class="dropdown-item" 
                                                                onclick="editUser(<?= $user['id'] ?>, '<?= htmlspecialchars($user['username']) ?>')">
                                                            <i class="ri ri-edit-line me-2"></i>Modifier
                                                        </button>
                                                    </li>
                                                    <li>
                                                        <button class="dropdown-item text-warning" 
                                                                onclick="resetPassword(<?= $user['id'] ?>, '<?= htmlspecialchars($user['username']) ?>')">
                                                            <i class="ri ri-key-2-line me-2"></i>Réinitialiser mot de passe
                                                        </button>
                                                    </li>
                                                    <?php if ($user['id'] != ($_SESSION['admin_user_id'] ?? 0)): ?>
                                                    <li><hr class="dropdown-divider"></li>
                                                    <li>
                                                        <?php if ($user['status'] === 'active'): ?>
                                                            <button class="dropdown-item text-warning" 
                                                                    onclick="toggleUserStatus(<?= $user['id'] ?>, '<?= htmlspecialchars($user['username']) ?>', 'inactive')">
                                                                <i class="ri ri-pause-circle-line me-2"></i>Désactiver
                                                            </button>
                                                        <?php else: ?>
                                                            <button class="dropdown-item text-success" 
                                                                    onclick="toggleUserStatus(<?= $user['id'] ?>, '<?= htmlspecialchars($user['username']) ?>', 'active')">
                                                                <i class="ri ri-play-circle-line me-2"></i>Activer
                                                            </button>
                                                        <?php endif; ?>
                                                    </li>
                                                    <li>
                                                        <button class="dropdown-item text-danger" 
                                                                onclick="deleteUser(<?= $user['id'] ?>, '<?= htmlspecialchars($user['username']) ?>')">
                                                            <i class="ri ri-delete-bin-line me-2"></i>Supprimer
                                                        </button>
                                                    </li>
                                                    <?php endif; ?>
                                                </ul>
                                            </div>
                                        </td>
                                    </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                    </div>
                <?php endif; ?>
            </div>

            <!-- Pagination -->
            <?php if ($total_pages > 1): ?>
                <div class="card-footer">
                    <nav aria-label="Pagination">
                        <ul class="pagination justify-content-center mb-0">
                            <?php 
                            $paginationParams = buildPaginationParams($search, $status_filter);
                            ?>
                            
                            <?php if ($page > 1): ?>
                                <li class="page-item">
                                    <a class="page-link" href="?page=<?= $page - 1 ?><?= $paginationParams ?>">
                                        <i class="ri ri-arrow-left-s-line"></i>
                                    </a>
                                </li>
                            <?php endif; ?>

                            <?php
                            $start = max(1, $page - 2);
                            $end = min($total_pages, $page + 2);
                            
                            for ($i = $start; $i <= $end; $i++):
                            ?>
                                <li class="page-item <?= $i == $page ? 'active' : '' ?>">
                                    <a class="page-link" href="?page=<?= $i ?><?= $paginationParams ?>">
                                        <?= $i ?>
                                    </a>
                                </li>
                            <?php endfor; ?>

                            <?php if ($page < $total_pages): ?>
                                <li class="page-item">
                                    <a class="page-link" href="?page=<?= $page + 1 ?><?= $paginationParams ?>">
                                        <i class="ri ri-arrow-right-s-line"></i>
                                    </a>
                                </li>
                            <?php endif; ?>
                        </ul>
                    </nav>
                </div>
            <?php endif; ?>
        </div>
    </div>
</div>

    <!-- Modal Créer Utilisateur -->
    <div class="modal fade" id="createUserModal" tabindex="-1">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title">
                        <i class="ri-user-add-line me-2"></i>Nouvel Utilisateur
                    </h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
                </div>
                <form id="createUserForm">
                    <div class="modal-body">
                        <div class="mb-3">
                            <label for="createUsername" class="form-label">Nom d'utilisateur</label>
                            <input type="text" 
                                   class="form-control" 
                                   id="createUsername" 
                                   name="username" 
                                   required 
                                   minlength="3"
                                   placeholder="Entrez le nom d'utilisateur">
                            <div class="form-text">Au moins 3 caractères</div>
                        </div>
                        <div class="mb-3">
                            <label for="createPassword" class="form-label">Mot de passe</label>
                            <input type="password" 
                                   class="form-control" 
                                   id="createPassword" 
                                   name="password" 
                                   required 
                                   minlength="6"
                                   placeholder="Entrez le mot de passe">
                            <div class="form-text">Au moins 6 caractères</div>
                        </div>
                        <div class="mb-3">
                            <label for="createConfirmPassword" class="form-label">Confirmer le mot de passe</label>
                            <input type="password" 
                                   class="form-control" 
                                   id="createConfirmPassword" 
                                   name="confirm_password" 
                                   required
                                   placeholder="Confirmez le mot de passe">
                        </div>
                        <div class="mb-3">
                            <label for="createRole" class="form-label">Rôle</label>
                            <select class="form-select" 
                                    id="createRole" 
                                    name="role" 
                                    required>
                                <option value="">Sélectionner un rôle</option>
                                <option value="admin">Administrateur</option>
                                <option value="moderator">Modérateur</option>
                                <option value="user">Utilisateur</option>
                            </select>
                            <div class="form-text">Définit les permissions de l'utilisateur</div>
                        </div>
                        <div class="mb-3">
                            <label for="createEmail" class="form-label">Email (optionnel)</label>
                            <input type="email" 
                                   class="form-control" 
                                   id="createEmail" 
                                   name="email" 
                                   placeholder="Entrez l'adresse email">
                            <div class="form-text">Si vide, sera généré automatiquement</div>
                        </div>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Annuler</button>
                        <button type="submit" class="btn btn-primary">
                            <i class="ri-user-add-line me-2"></i>Créer l'utilisateur
                        </button>
                    </div>
                </form>
            </div>
        </div>
    </div>

    <!-- Modal Modifier Utilisateur -->
    <div class="modal fade" id="editUserModal" tabindex="-1">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title">
                        <i class="ri-edit-line me-2"></i>Modifier l'utilisateur
                    </h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
                </div>
                <form id="editUserForm">
                    <input type="hidden" id="editUserId" name="user_id">
                    <div class="modal-body">
                        <div class="mb-3">
                            <label for="editUsername" class="form-label">Nom d'utilisateur</label>
                            <input type="text" 
                                   class="form-control" 
                                   id="editUsername" 
                                   name="username" 
                                   required 
                                   minlength="3">
                        </div>
                        <div class="mb-3">
                            <label for="editPassword" class="form-label">Nouveau mot de passe</label>
                            <input type="password" 
                                   class="form-control" 
                                   id="editPassword" 
                                   name="new_password" 
                                   minlength="6"
                                   placeholder="Laisser vide pour ne pas changer">
                            <div class="form-text">Laisser vide pour conserver le mot de passe actuel</div>
                        </div>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Annuler</button>
                        <button type="submit" class="btn btn-primary">
                            <i class="ri-save-line me-2"></i>Sauvegarder
                        </button>
                    </div>
                </form>
            </div>
        </div>
    </div>

    <!-- Modal Réinitialiser Mot de Passe -->
    <div class="modal fade" id="resetPasswordModal" tabindex="-1">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title">
                        <i class="ri-key-2-line me-2"></i>Réinitialiser le mot de passe
                    </h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
                </div>
                <form id="resetPasswordForm">
                    <input type="hidden" id="resetUserId" name="user_id">
                    <div class="modal-body">
                        <div class="alert alert-warning">
                            <i class="ri-alert-line me-2"></i>
                            Vous êtes sur le point de réinitialiser le mot de passe de l'utilisateur 
                            <strong><span id="resetUsername"></span></strong>
                        </div>
                        <div class="mb-3">
                            <label for="newPassword" class="form-label">Nouveau mot de passe</label>
                            <input type="password" 
                                   class="form-control" 
                                   id="newPassword" 
                                   name="new_password" 
                                   required 
                                   minlength="6"
                                   placeholder="Entrez le nouveau mot de passe">
                            <div class="form-text">Au moins 6 caractères</div>
                        </div>
                        <div class="mb-3">
                            <label for="confirmNewPassword" class="form-label">Confirmer le nouveau mot de passe</label>
                            <input type="password" 
                                   class="form-control" 
                                   id="confirmNewPassword" 
                                   name="confirm_new_password" 
                                   required
                                   placeholder="Confirmez le nouveau mot de passe">
                        </div>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Annuler</button>
                        <button type="submit" class="btn btn-warning">
                            <i class="ri-key-2-line me-2"></i>Réinitialiser
                        </button>
                    </div>
                </form>
            </div>
        </div>
    </div>

<script>
// Fonction pour afficher les alertes
function showAlert(message, type = 'success') {
    const alertContainer = document.getElementById('alertContainer');
    const alertId = 'alert_' + Date.now();
    
    const alertHtml = `
        <div id="${alertId}" class="alert alert-${type} alert-dismissible fade show" role="alert">
            <i class="ri-${type === 'success' ? 'check-circle' : 'error-warning'}-line me-2"></i>
            ${message}
            <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
        </div>
    `;
    
    alertContainer.insertAdjacentHTML('afterbegin', alertHtml);
    
    // Auto-dismiss after 5 seconds
    setTimeout(() => {
        const alert = document.getElementById(alertId);
        if (alert) {
            const bsAlert = new bootstrap.Alert(alert);
            bsAlert.close();
        }
    }, 5000);
}

// Créer un utilisateur
document.getElementById('createUserForm').addEventListener('submit', function(e) {
    e.preventDefault();
    
    const formData = new FormData(this);
    formData.append('action', 'create_user');
    formData.append('ajax', '1');
    
    // Validation des mots de passe
    const password = formData.get('password');
    const confirmPassword = formData.get('confirm_password');
    
    if (password !== confirmPassword) {
        showAlert('Les mots de passe ne correspondent pas.', 'danger');
        return;
    }
    
    // Désactiver le bouton
    const submitBtn = this.querySelector('button[type="submit"]');
    const originalText = submitBtn.innerHTML;
    submitBtn.disabled = true;
    submitBtn.innerHTML = '<i class="ri-loader-4-line ri-spin me-2"></i>Création...';
    
    fetch('admin-users.php', {
        method: 'POST',
        body: formData
    })
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            showAlert(data.message, 'success');
            bootstrap.Modal.getInstance(document.getElementById('createUserModal')).hide();
            this.reset();
            
            // Recharger la page après 1 seconde
            setTimeout(() => location.reload(), 1000);
        } else {
            showAlert(data.message, 'danger');
        }
    })
    .catch(error => {
        console.error('Erreur:', error);
        showAlert('Erreur de connexion au serveur.', 'danger');
    })
    .finally(() => {
        submitBtn.disabled = false;
        submitBtn.innerHTML = originalText;
    });
});

// Modifier un utilisateur
function editUser(userId, username) {
    document.getElementById('editUserId').value = userId;
    document.getElementById('editUsername').value = username;
    
    const modal = new bootstrap.Modal(document.getElementById('editUserModal'));
    modal.show();
}

document.getElementById('editUserForm').addEventListener('submit', function(e) {
    e.preventDefault();
    
    const formData = new FormData(this);
    formData.append('action', 'update_user');
    formData.append('ajax', '1');
    
    const submitBtn = this.querySelector('button[type="submit"]');
    const originalText = submitBtn.innerHTML;
    submitBtn.disabled = true;
    submitBtn.innerHTML = '<i class="ri-loader-4-line ri-spin me-2"></i>Sauvegarde...';
    
    fetch('admin-users.php', {
        method: 'POST',
        body: formData
    })
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            showAlert(data.message, 'success');
            bootstrap.Modal.getInstance(document.getElementById('editUserModal')).hide();
            
            // Recharger la page après 1 seconde
            setTimeout(() => location.reload(), 1000);
        } else {
            showAlert(data.message, 'danger');
        }
    })
    .catch(error => {
        console.error('Erreur:', error);
        showAlert('Erreur de connexion au serveur.', 'danger');
    })
    .finally(() => {
        submitBtn.disabled = false;
        submitBtn.innerHTML = originalText;
    });
});

// Changer le statut d'un utilisateur (activer/désactiver)
function toggleUserStatus(userId, username, newStatus) {
    const action = newStatus === 'active' ? 'activer' : 'désactiver';
    const confirmMessage = `Êtes-vous sûr de vouloir ${action} l'utilisateur "${username}" ?`;
    
    if (confirm(confirmMessage)) {
        const formData = new FormData();
        formData.append('action', 'toggle_status');
        formData.append('user_id', userId);
        formData.append('ajax', '1');
        
        fetch('admin-users.php', {
            method: 'POST',
            body: formData
        })
        .then(response => response.json())
        .then(data => {
            if (data.success) {
                showAlert(data.message, 'success');
                
                // Recharger la page après 1 seconde
                setTimeout(() => location.reload(), 1000);
            } else {
                showAlert(data.message, 'danger');
            }
        })
        .catch(error => {
            console.error('Erreur:', error);
            showAlert('Erreur de connexion au serveur.', 'danger');
        });
    }
}

// Supprimer un utilisateur
function deleteUser(userId, username) {
    if (confirm(`Êtes-vous sûr de vouloir supprimer l'utilisateur "${username}" ?\n\nCette action est irréversible.`)) {
        const formData = new FormData();
        formData.append('action', 'delete_user');
        formData.append('user_id', userId);
        formData.append('ajax', '1');
        
        fetch('admin-users.php', {
            method: 'POST',
            body: formData
        })
        .then(response => response.json())
        .then(data => {
            if (data.success) {
                showAlert(data.message, 'success');
                
                // Recharger la page après 1 seconde
                setTimeout(() => location.reload(), 1000);
            } else {
                showAlert(data.message, 'danger');
            }
        })
        .catch(error => {
            console.error('Erreur:', error);
            showAlert('Erreur de connexion au serveur.', 'danger');
        });
    }
}

// Réinitialiser le mot de passe d'un utilisateur
function resetPassword(userId, username) {
    document.getElementById('resetUserId').value = userId;
    document.getElementById('resetUsername').textContent = username;
    document.getElementById('resetPasswordForm').reset();
    
    const modal = new bootstrap.Modal(document.getElementById('resetPasswordModal'));
    modal.show();
}

document.getElementById('resetPasswordForm').addEventListener('submit', function(e) {
    e.preventDefault();
    
    const formData = new FormData(this);
    const newPassword = formData.get('new_password');
    const confirmPassword = formData.get('confirm_new_password');
    
    // Validation des mots de passe
    if (newPassword !== confirmPassword) {
        showAlert('Les mots de passe ne correspondent pas.', 'danger');
        return;
    }
    
    formData.append('action', 'reset_password');
    formData.append('ajax', '1');
    
    const submitBtn = this.querySelector('button[type="submit"]');
    const originalText = submitBtn.innerHTML;
    submitBtn.disabled = true;
    submitBtn.innerHTML = '<i class="ri-loader-4-line ri-spin me-2"></i>Réinitialisation...';
    
    fetch('admin-users.php', {
        method: 'POST',
        body: formData
    })
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            showAlert(data.message, 'success');
            bootstrap.Modal.getInstance(document.getElementById('resetPasswordModal')).hide();
            
            // Recharger la page après 1 seconde
            setTimeout(() => location.reload(), 1000);
        } else {
            showAlert(data.message, 'danger');
        }
    })
    .catch(error => {
        console.error('Erreur:', error);
        showAlert('Erreur de connexion au serveur.', 'danger');
    })
    .finally(() => {
        submitBtn.disabled = false;
        submitBtn.innerHTML = originalText;
    });
});

// Validation en temps réel pour les mots de passe
document.getElementById('createConfirmPassword').addEventListener('input', function() {
    const password = document.getElementById('createPassword').value;
    const confirmPassword = this.value;
    
    if (confirmPassword && password !== confirmPassword) {
        this.setCustomValidity('Les mots de passe ne correspondent pas');
        this.classList.add('is-invalid');
    } else {
        this.setCustomValidity('');
        this.classList.remove('is-invalid');
    }
});

// Validation en temps réel pour la réinitialisation de mot de passe
document.getElementById('confirmNewPassword').addEventListener('input', function() {
    const newPassword = document.getElementById('newPassword').value;
    const confirmPassword = this.value;
    
    if (confirmPassword && newPassword !== confirmPassword) {
        this.setCustomValidity('Les mots de passe ne correspondent pas');
        this.classList.add('is-invalid');
    } else {
        this.setCustomValidity('');
        this.classList.remove('is-invalid');
    }
});
</script>

<?php
// Capturer le contenu
$page_content = ob_get_clean();

// Inclure le template avec le contenu
include 'template.php';
?>