<?php
session_start();
require_once 'config.php';
require_once 'function.php';

if (!isset($_SESSION['user_role']) || !in_array($_SESSION['user_role'], ['super_admin', 'admin'])) {
    header('Location: login.php');
    exit();
}

$current_user = getCurrentUserInfo($pdo);
$message = '';

// Liste des mois
$mois_liste = [
    1 => 'Janvier', 2 => 'Février', 3 => 'Mars', 4 => 'Avril',
    5 => 'Mai', 6 => 'Juin', 7 => 'Juillet', 8 => 'Août',
    9 => 'Septembre', 10 => 'Octobre', 11 => 'Novembre', 12 => 'Décembre'
];

// Traitement AJOUT étudiant
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['action'])) {
    if ($_POST['action'] == 'ajouter_etudiant') {
        try {
            $check = $pdo->prepare("SELECT id_etudiant FROM etudiants WHERE id_etudiant = ?");
            $check->execute([$_POST['id_etudiant']]);
            if ($check->rowCount() > 0) {
                $message = '<div class="alert-error">Cet ID étudiant existe déjà !</div>';
            } else {
                $check_groupe = $pdo->prepare("SELECT id_groupe FROM groupe WHERE id_groupe = ? AND id_formation = ?");
                $check_groupe->execute([$_POST['id_groupe'], $_POST['id_formation']]);
                if ($check_groupe->rowCount() == 0) {
                    throw new Exception("Le groupe sélectionné n'appartient pas à la formation choisie");
                }
                
                $login = $_POST['id_etudiant'];
                $mot_de_passe = 'etudiant123';
                
                $sql_user = "INSERT INTO utilisateur (nom, prenom, email, login, mot_de_passe, role, etat_compte) 
                            VALUES (:nom, :prenom, '', :login, :mot_de_passe, 'etudiant', 'actif')";
                $stmt_user = $pdo->prepare($sql_user);
                $stmt_user->execute([
                    ':nom' => $_POST['nom'],
                    ':prenom' => $_POST['prenom'],
                    ':login' => $login,
                    ':mot_de_passe' => $mot_de_passe
                ]);
                
                $id_user = $pdo->lastInsertId();
                
                // Initialiser tous les mois à 'non_paye'
                $paiements_init = [];
                for ($i = 1; $i <= 12; $i++) {
                    $paiements_init[$i] = 'non_paye';
                }
                $paiements_json = json_encode($paiements_init);
                
                $sql = "INSERT INTO etudiants (id_etudiant, id_user, nom, prenom, date_naissance, telephone, adresse, id_groupe, paiements_mensuels) 
                        VALUES (:id_etudiant, :id_user, :nom, :prenom, :date_naissance, :telephone, :adresse, :id_groupe, :paiements)";
                
                $stmt = $pdo->prepare($sql);
                $stmt->execute([
                    ':id_etudiant' => $_POST['id_etudiant'],
                    ':id_user' => $id_user,
                    ':nom' => $_POST['nom'],
                    ':prenom' => $_POST['prenom'],
                    ':date_naissance' => $_POST['date_naissance'],
                    ':telephone' => $_POST['telephone'],
                    ':adresse' => $_POST['adresse'],
                    ':id_groupe' => $_POST['id_groupe'],
                    ':paiements' => $paiements_json
                ]);
                
                $message = '<div class="alert-success">Étudiant ajouté! Login: ' . $login . ', Mot de passe: etudiant123</div>';
            }
        } catch(PDOException $e) {
            $message = '<div class="alert-error">Erreur : ' . $e->getMessage() . '</div>';
        } catch(Exception $e) {
            $message = '<div class="alert-error">Erreur : ' . $e->getMessage() . '</div>';
        }
    }
    
    if ($_POST['action'] == 'supprimer_etudiant' && isset($_POST['id_etudiant'])) {
        try {
            $stmt = $pdo->prepare("SELECT id_user FROM etudiants WHERE id_etudiant = ?");
            $stmt->execute([$_POST['id_etudiant']]);
            $etudiant = $stmt->fetch();
            
            if ($etudiant && !empty($etudiant['id_user'])) {
                $pdo->prepare("DELETE FROM absence_etudiant WHERE id_etudiant = ?")->execute([$_POST['id_etudiant']]);
                $pdo->prepare("DELETE FROM notes WHERE id_etudiant = ?")->execute([$_POST['id_etudiant']]);
                $pdo->prepare("DELETE FROM etudiants WHERE id_etudiant = ?")->execute([$_POST['id_etudiant']]);
                $pdo->prepare("DELETE FROM utilisateur WHERE id_user = ?")->execute([$etudiant['id_user']]);
            }
            $message = '<div class="alert-success">Étudiant supprimé!</div>';
        } catch(PDOException $e) {
            $message = '<div class="alert-error">Erreur : ' . $e->getMessage() . '</div>';
        }
    }
    
    if ($_POST['action'] == 'modifier_etudiant' && isset($_POST['id_etudiant'])) {
        try {
            $check_groupe = $pdo->prepare("SELECT id_groupe FROM groupe WHERE id_groupe = ? AND id_formation = ?");
            $check_groupe->execute([$_POST['id_groupe'], $_POST['id_formation']]);
            if ($check_groupe->rowCount() == 0) {
                throw new Exception("Le groupe sélectionné n'appartient pas à la formation choisie");
            }

            $sql = "UPDATE etudiants SET 
                    nom = :nom, prenom = :prenom, date_naissance = :date_naissance,
                    telephone = :telephone, adresse = :adresse, id_groupe = :id_groupe
                    WHERE id_etudiant = :id_etudiant";
            
            $stmt = $pdo->prepare($sql);
            $stmt->execute([
                ':nom' => $_POST['nom'],
                ':prenom' => $_POST['prenom'],
                ':date_naissance' => $_POST['date_naissance'],
                ':telephone' => $_POST['telephone'],
                ':adresse' => $_POST['adresse'],
                ':id_groupe' => $_POST['id_groupe'],
                ':id_etudiant' => $_POST['id_etudiant']
            ]);
            
            if (!empty($_POST['id_user'])) {
                $sql_user = "UPDATE utilisateur SET nom = :nom, prenom = :prenom WHERE id_user = :id_user";
                $stmt_user = $pdo->prepare($sql_user);
                $stmt_user->execute([
                    ':nom' => $_POST['nom'],
                    ':prenom' => $_POST['prenom'],
                    ':id_user' => $_POST['id_user']
                ]);
            }
            
            $message = '<div class="alert-success">✅ Étudiant modifié!</div>';
            echo '<meta http-equiv="refresh" content="2">';
        } catch(PDOException $e) {
            $message = '<div class="alert-error">❌ Erreur : ' . $e->getMessage() . '</div>';
        } catch(Exception $e) {
            $message = '<div class="alert-error">❌ Erreur : ' . $e->getMessage() . '</div>';
        }
    }
    
    // Traitement PAIEMENT par mois
    if ($_POST['action'] == 'update_paiement' && isset($_POST['id_etudiant'])) {
        $mois = $_POST['mois'];
        $statut = $_POST['statut_paiement'];
        
        // Récupérer les paiements actuels
        $stmt = $pdo->prepare("SELECT paiements_mensuels FROM etudiants WHERE id_etudiant = ?");
        $stmt->execute([$_POST['id_etudiant']]);
        $result = $stmt->fetch(PDO::FETCH_ASSOC);
        
        $paiements = [];
        if ($result && $result['paiements_mensuels']) {
            $paiements = json_decode($result['paiements_mensuels'], true);
        }
        
        // Mettre à jour le mois
        $paiements[$mois] = $statut;
        
        // Sauvegarder
        $update = $pdo->prepare("UPDATE etudiants SET paiements_mensuels = ? WHERE id_etudiant = ?");
        if ($update->execute([json_encode($paiements), $_POST['id_etudiant']])) {
            $message = '<div class="alert-success">💰 Paiement du mois mis à jour !</div>';
        } else {
            $message = '<div class="alert-error">❌ Erreur lors de la mise à jour</div>';
        }
    }
}

// Récupérer les données
$etudiants = [];
try {
    // Ajouter la colonne paiements_mensuels si elle n'existe pas
    $check_column = $pdo->query("SHOW COLUMNS FROM etudiants LIKE 'paiements_mensuels'");
    if ($check_column->rowCount() == 0) {
        $pdo->exec("ALTER TABLE etudiants ADD COLUMN paiements_mensuels TEXT NULL");
    }
    
    $sql = "SELECT e.*, g.nom_groupe, g.id_formation, f.nom_formation, e.id_user
            FROM etudiants e 
            LEFT JOIN groupe g ON e.id_groupe = g.id_groupe 
            LEFT JOIN formation f ON g.id_formation = f.id_formation
            ORDER BY e.id_etudiant DESC";
    $stmt = $pdo->query($sql);
    $etudiants = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    foreach ($etudiants as &$etudiant) {
        $taux_global = calculerTauxAbsenceGlobal($pdo, $etudiant['id_etudiant']);
        $etudiant['total_absences'] = $taux_global['total_absences'];
        $etudiant['taux_absence_global'] = $taux_global['taux_global'];
        
        // Décoder les paiements mensuels
        if (!empty($etudiant['paiements_mensuels'])) {
            $etudiant['paiements'] = json_decode($etudiant['paiements_mensuels'], true);
        } else {
            $etudiant['paiements'] = [];
            for ($i = 1; $i <= 12; $i++) {
                $etudiant['paiements'][$i] = 'non_paye';
            }
        }
    }
} catch(PDOException $e) {
    $message = '<div class="alert-error">Erreur de chargement</div>';
}

// Récupérer les formations et groupes
$formations = [];
$groupes_par_formation = [];
try {
    $stmt = $pdo->query("SELECT * FROM formation ORDER BY nom_formation");
    $formations = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    foreach ($formations as $f) {
        $stmt = $pdo->prepare("SELECT * FROM groupe WHERE id_formation = ? ORDER BY nom_groupe");
        $stmt->execute([$f['id_formation']]);
        $groupes_par_formation[$f['id_formation']] = $stmt->fetchAll(PDO::FETCH_ASSOC);
    }
} catch(Exception $e) {}
?>

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>Gestion Étudiants | CPN</title>
    <style>
        * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Poppins', sans-serif; }
        @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600&display=swap');
        
        body { background: #eff0f1; }
        
        header {
            background: linear-gradient(135deg, #e3e5ee 0%, #2f6d8c 50%, #095175 100%);
            padding: 15px 30px;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        
        .logo { width: 150px; height: auto; }
        .header-title h1 { color: #0a3144; font-size: 1.5rem; }
        .back-btn { background: #0a3144; color: white; padding: 8px 20px; text-decoration: none; border-radius: 8px; }
        
        .container { padding: 30px; }
        
        .card {
            background: white;
            padding: 25px;
            border-radius: 16px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.08);
            margin-bottom: 30px;
        }
        
        .header-actions {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 40px;
            flex-wrap: wrap;
            gap: 15px;
        }
        
        .btn-ajouter {
            background: #1e6f9f;
            color: white;
            border: none;
            padding: 15px 25px;
            border-radius: 12px;
            cursor: pointer;
        }
        
        .btn-success { background: #28a745; }
        .btn-danger { background: #dc3545; }
        .btn-modifier { background: #ffc107; color: #000; }
        .btn-supprimer { background: #dc3545; color: white; }
        .btn-action { padding: 5px 10px; margin: 0 2px; border: none; border-radius: 5px; cursor: pointer; }
        
        .btn-paiement {
            background: #17a2b8;
            color: white;
            padding: 5px 10px;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            font-size: 12px;
        }
        .btn-paiement:hover {
            background: #138496;
        }
        
        table {
            width: 100%;
            border-collapse: collapse;
            background: white;
            border-radius: 16px;
            overflow: hidden;
        }
        
        table th {
            background: #0a3144;
            color: white;
            padding: 12px;
        }
        
        table td {
            padding: 10px;
            text-align: center;
            border-bottom: 1px solid #eee;
        }
        
        table tr:hover { background: #f0f8ff; }
        
        .form-container {
            background: white;
            padding: 25px;
            border-radius: 16px;
            margin-bottom: 25px;
            display: none;
            border: 2px solid #6ab0e6;
        }
        
        .form-grid {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 15px;
        }
        
        .form-grid input, .form-grid select {
            padding: 10px;
            border: 2px solid #e9ecef;
            border-radius: 8px;
            width: 100%;
        }
        
        .form-group { display: flex; flex-direction: column; }
        .form-group label { font-weight: 500; margin-bottom: 5px; color: #0a3144; }
        .full-width { grid-column: span 2; }
        
        .form-buttons {
            display: flex;
            gap: 10px;
            justify-content: flex-end;
            margin-top: 20px;
        }
        
        .alert-success {
            background: #d4edda;
            color: #155724;
            padding: 15px;
            border-radius: 8px;
            margin-bottom: 20px;
            border-left: 5px solid #28a745;
        }
        
        .alert-error {
            background: #f8d7da;
            color: #721c24;
            padding: 15px;
            border-radius: 8px;
            margin-bottom: 20px;
            border-left: 5px solid #dc3545;
        }
        
        .badge {
            padding: 5px 10px;
            border-radius: 20px;
            font-size: 12px;
            display: inline-block;
        }
        
        .badge-paye { background: #d4edda; color: #155724; }
        .badge-non_paye { background: #f8d7da; color: #721c24; }
        
        .taux-faible { background: #d4edda; color: #155724; }
        .taux-moyen { background: #fff3cd; color: #856404; }
        .taux-eleve { background: #f8d7da; color: #721c24; }
        .taux-critique { background: #dc3545; color: white; }
        
        .paiement-cell {
            font-size: 11px;
        }
        .paiement-cell span {
            display: inline-block;
            margin: 2px;
            padding: 2px 5px;
            border-radius: 4px;
            font-size: 10px;
        }
        .paye { background: #28a74520; color: #155724; border: 1px solid #28a745; }
        .non_paye { background: #dc354520; color: #721c24; border: 1px solid #dc3545; }
        
        @media(max-width: 768px) {
            .form-grid { grid-template-columns: 1fr; }
            .full-width { grid-column: span 1; }
            table { font-size: 11px; }
            table th, table td { padding: 5px; }
            .paiement-cell span { font-size: 8px; padding: 1px 3px; }
        }
        
        .modal {
            display: none;
            position: fixed;
            z-index: 1000;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0,0,0,0.5);
        }
        .modal-content {
            background-color: white;
            margin: 10% auto;
            padding: 25px;
            border-radius: 15px;
            width: 400px;
            text-align: center;
        }
        .modal-buttons {
            display: flex;
            gap: 10px;
            justify-content: center;
            margin-top: 20px;
            flex-wrap: wrap;
        }
        .modal-btn {
            padding: 10px 20px;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            font-weight: bold;
        }
        .modal-btn-paye { background: #28a745; color: white; }
        .modal-btn-non_paye { background: #dc3545; color: white; }
        .modal-btn-close { background: #6c757d; color: white; }
        
        .mois-select {
            width: 100%;
            padding: 10px;
            margin: 15px 0;
            border: 2px solid #e9ecef;
            border-radius: 8px;
            font-size: 14px;
        }
        
        .info-text {
            color: #666;
            font-size: 12px;
            margin-top: 10px;
        }
        
        .paiement-summary {
            display: flex;
            gap: 10px;
            justify-content: center;
            margin-top: 10px;
            font-size: 11px;
        }
    </style>
</head>
<body>
    <header>
        <img src="logo.png" alt="Logo" class="logo" onerror="this.style.display='none'">
        <div class="header-title">
            <h1>🎓 Gestion des Étudiants</h1>
        </div>
        <a href="admin.php" class="back-btn">← Retour</a>
    </header>
    
    <div class="container">
        <?php echo $message; ?>
        
        <div class="card">
            <div class="header-actions">
                <h2>Liste des étudiants</h2>
                <button class="btn-ajouter" onclick="toggleFormulaire()">+ Ajouter Étudiant</button>
            </div>
            
            <div id="formulaireEtudiant" class="form-container">
                <h3>Nouvel Étudiant</h3>
                <form method="POST" action="">
                    <input type="hidden" name="action" value="ajouter_etudiant">
                    <div class="form-grid">
                        <div class="form-group">
                            <label>ID Étudiant *</label>
                            <input type="text" name="id_etudiant" placeholder="Ex: C0111" required>
                        </div>
                        <div class="form-group">
                            <label>Nom *</label>
                            <input type="text" name="nom" required>
                        </div>
                        <div class="form-group">
                            <label>Prénom *</label>
                            <input type="text" name="prenom" required>
                        </div>
                        <div class="form-group">
                            <label>Date naissance *</label>
                            <input type="date" name="date_naissance" required>
                        </div>
                        <div class="form-group">
                            <label>Téléphone *</label>
                            <input type="tel" name="telephone" required>
                        </div>
                       
                        <div class="form-group full-width">
                            <label>Adresse *</label>
                            <input type="text" name="adresse" required>
                        </div>
                        <div class="form-group">
                            <label>Formation *</label>
                            <select name="id_formation" id="id_formation" required onchange="chargerGroupes()">
                                <option value="">Sélectionner</option>
                                <?php foreach ($formations as $f): ?>
                                    <option value="<?php echo $f['id_formation']; ?>"><?php echo htmlspecialchars($f['nom_formation']); ?></option>
                                <?php endforeach; ?>
                            </select>
                        </div>
                        <div class="form-group">
                            <label>Groupe *</label>
                            <select name="id_groupe" id="id_groupe" required>
                                <option value="">D'abord choisir formation</option>
                            </select>
                        </div>
                    </div>
                    <div class="form-buttons">
                        <button type="submit" class="btn-ajouter btn-success">Enregistrer</button>
                        <button type="button" class="btn-ajouter btn-danger" onclick="toggleFormulaire()">Annuler</button>
                    </div>
                </form>
            </div>
            
            <div style="overflow-x: auto;">
            <table>
                <thead>
                    <tr>
                        <th>ID</th><th>Nom</th><th>Prénom</th><th>Date Naiss.</th>
                        <th>Téléphone</th><th>Formation</th><th>Groupe</th>
                        <th>Absences</th><th>Taux</th><th>Paiements</th><th>Action</th>
                    </tr>
                </thead>
                <tbody>
                    <?php foreach ($etudiants as $e): 
                        $taux = $e['taux_absence_global'] ?? 0;
                        $taux_class = $taux < 10 ? 'taux-faible' : ($taux < 20 ? 'taux-moyen' : ($taux < 40 ? 'taux-eleve' : 'taux-critique'));
                        $paiements = $e['paiements'] ?? [];
                        
                        // Compter les mois payés
                        $payes = 0;
                        $total = 0;
                        foreach ($paiements as $statut) {
                            $total++;
                            if ($statut == 'paye') $payes++;
                        }
                    ?>
                    <tr>
                        <td><?php echo htmlspecialchars($e['id_etudiant']); ?></td>
                        <td><?php echo htmlspecialchars($e['nom']); ?></td>
                        <td><?php echo htmlspecialchars($e['prenom']); ?></td>
                        <td><?php echo date('d/m/Y', strtotime($e['date_naissance'])); ?></td>
                        <td><?php echo htmlspecialchars($e['telephone']); ?></td>
                        <td><?php echo htmlspecialchars($e['nom_formation'] ?? '-'); ?></td>
                        <td><?php echo htmlspecialchars($e['nom_groupe'] ?? '-'); ?></td>
                        <td><?php echo $e['total_absences'] ?? 0; ?></td>
                        <td><span class="badge <?php echo $taux_class; ?>"><?php echo $taux; ?>%</span></td>
                        <td class="paiement-cell">
                            <?php foreach ($mois_liste as $num => $nom): ?>
                                <span class="<?php echo ($paiements[$num] ?? 'non_paye') == 'paye' ? 'paye' : 'non_paye'; ?>" title="<?php echo $nom; ?>">
                                    <?php echo substr($nom, 0, 3); ?>: <?php echo ($paiements[$num] ?? 'non_paye') == 'paye' ? '✅' : '❌'; ?>
                                </span>
                            <?php endforeach; ?>
                            <div class="paiement-summary">
                                <span style="color: #28a745;">✅ <?php echo $payes; ?></span> / <span style="color: #dc3545;">❌ <?php echo $total - $payes; ?></span>
                            </div>
                          </td>
                        <td>
                            <button class="btn-action btn-paiement" onclick="ouvrirModalPaiement('<?php echo $e['id_etudiant']; ?>', '<?php echo htmlspecialchars($e['nom'] . ' ' . $e['prenom']); ?>', <?php echo htmlspecialchars(json_encode($paiements)); ?>)">
                                💰 Paiement
                            </button>
                            <button class="btn-action btn-modifier" onclick='ouvrirModal(<?php echo json_encode($e); ?>)'>✏️</button>
                            <form method="POST" style="display: inline;">
                                <input type="hidden" name="action" value="supprimer_etudiant">
                                <input type="hidden" name="id_etudiant" value="<?php echo $e['id_etudiant']; ?>">
                                <button type="submit" class="btn-action btn-supprimer" onclick="return confirm('Supprimer ?')">🗑️</button>
                            </form>
                          </td>
                    </tr>
                    <?php endforeach; ?>
                </tbody>
            </table>
            </div>
        </div>
    </div>
    
    <!-- Modal Paiement -->
    <div id="modalPaiement" class="modal">
        <div class="modal-content">
            <h3>💰 Gestion des paiements mensuels</h3>
            <p id="nomEtudiantPaiement" style="margin: 10px 0; color: #666;"></p>
            
            <form method="POST" action="">
                <input type="hidden" name="action" value="update_paiement">
                <input type="hidden" name="id_etudiant" id="paiement_id_etudiant">
                <input type="hidden" name="statut_paiement" id="statut_paiement" value="">
                
                <label style="display: block; text-align: left; margin: 10px 0 5px; font-weight: bold;">Choisir le mois :</label>
                <select id="mois_select" class="mois-select" required>
                    <option value="">-- Sélectionnez un mois --</option>
                    <option value="1">Janvier</option>
                    <option value="2">Février</option>
                    <option value="3">Mars</option>
                    <option value="4">Avril</option>
                    <option value="5">Mai</option>
                    <option value="6">Juin</option>
                    <option value="7">Juillet</option>
                    <option value="8">Août</option>
                    <option value="9">Septembre</option>
                    <option value="10">Octobre</option>
                    <option value="11">Novembre</option>
                    <option value="12">Décembre</option>
                </select>
                <input type="hidden" name="mois" id="mois_value">
                
                <div class="modal-buttons">
                    <button type="submit" class="modal-btn modal-btn-paye" onclick="document.getElementById('statut_paiement').value='paye'; document.getElementById('mois_value').value = document.getElementById('mois_select').value; if(!document.getElementById('mois_value').value){alert('Veuillez sélectionner un mois'); return false;}">
                        ✅ Marquer Payé
                    </button>
                    <button type="submit" class="modal-btn modal-btn-non_paye" onclick="document.getElementById('statut_paiement').value='non_paye'; document.getElementById('mois_value').value = document.getElementById('mois_select').value; if(!document.getElementById('mois_value').value){alert('Veuillez sélectionner un mois'); return false;}">
                        ❌ Marquer Non payé
                    </button>
                    <button type="button" class="modal-btn modal-btn-close" onclick="fermerModalPaiement()">Fermer</button>
                </div>
            </form>
            
            <div class="info-text">
                📌 Statut actuel des mois affiché dans le tableau (J:✅, F:❌, etc.)
            </div>
        </div>
    </div>
    
    <!-- Modal modification -->
    <div id="modalEtudiant" style="display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.5); z-index:1000;">
        <div style="background:white; width:90%; max-width:700px; margin:50px auto; padding:30px; border-radius:15px;">
            <h3>✏️ Modifier l'étudiant</h3>
            <form method="POST" action="">
                <input type="hidden" name="action" value="modifier_etudiant">
                <input type="hidden" name="id_etudiant" id="edit_id">
                <input type="hidden" name="id_user" id="edit_id_user">
                <div class="form-grid">
                    <div class="form-group"><label>Nom</label><input type="text" name="nom" id="edit_nom" required></div>
                    <div class="form-group"><label>Prénom</label><input type="text" name="prenom" id="edit_prenom" required></div>
                    <div class="form-group"><label>Date naissance</label><input type="date" name="date_naissance" id="edit_date" required></div>
                    <div class="form-group"><label>Téléphone</label><input type="tel" name="telephone" id="edit_tel" required></div>
                    <div class="form-group full-width"><label>Adresse</label><input type="text" name="adresse" id="edit_adresse" required></div>
                    <div class="form-group"><label>Formation</label>
                        <select name="id_formation" id="edit_formation" required onchange="chargerGroupesEdit()">
                            <option value="">Sélectionner</option>
                            <?php foreach ($formations as $f): ?>
                                <option value="<?php echo $f['id_formation']; ?>"><?php echo htmlspecialchars($f['nom_formation']); ?></option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                    <div class="form-group"><label>Groupe</label>
                        <select name="id_groupe" id="edit_groupe" required>
                            <option value="">Sélectionner</option>
                        </select>
                    </div>
                </div>
                <div class="form-buttons">
                    <button type="submit" class="btn-ajouter btn-success">Enregistrer</button>
                    <button type="button" class="btn-ajouter btn-danger" onclick="fermerModal()">Annuler</button>
                </div>
            </form>
        </div>
    </div>
    
    <script>
        const groupesParFormation = <?php echo json_encode($groupes_par_formation); ?>;
        
        function toggleFormulaire() {
            let form = document.getElementById('formulaireEtudiant');
            form.style.display = form.style.display === 'none' ? 'block' : 'none';
        }
        
        function chargerGroupes() {
            let formationId = document.getElementById('id_formation').value;
            let groupeSelect = document.getElementById('id_groupe');
            groupeSelect.innerHTML = '<option value="">Sélectionner</option>';
            if (formationId && groupesParFormation[formationId]) {
                groupesParFormation[formationId].forEach(g => {
                    let option = document.createElement('option');
                    option.value = g.id_groupe;
                    option.textContent = g.nom_groupe || 'Groupe ' + g.id_groupe;
                    groupeSelect.appendChild(option);
                });
            }
        }
        
        function chargerGroupesEdit() {
            let formationId = document.getElementById('edit_formation').value;
            let groupeSelect = document.getElementById('edit_groupe');
            groupeSelect.innerHTML = '<option value="">Sélectionner</option>';
            if (formationId && groupesParFormation[formationId]) {
                groupesParFormation[formationId].forEach(g => {
                    let option = document.createElement('option');
                    option.value = g.id_groupe;
                    option.textContent = g.nom_groupe || 'Groupe ' + g.id_groupe;
                    groupeSelect.appendChild(option);
                });
            }
        }
        
        function ouvrirModal(etudiant) {
            document.getElementById('edit_id').value = etudiant.id_etudiant;
            document.getElementById('edit_id_user').value = etudiant.id_user || '';
            document.getElementById('edit_nom').value = etudiant.nom;
            document.getElementById('edit_prenom').value = etudiant.prenom;
            document.getElementById('edit_date').value = etudiant.date_naissance;
            document.getElementById('edit_tel').value = etudiant.telephone;
            document.getElementById('edit_adresse').value = etudiant.adresse || '';
            
            let formationSelect = document.getElementById('edit_formation');
            if (etudiant.id_formation) {
                formationSelect.value = etudiant.id_formation;
            } else {
                formationSelect.value = '';
            }
            
            chargerGroupesEdit();
            
            setTimeout(function() {
                if (etudiant.id_groupe) {
                    document.getElementById('edit_groupe').value = etudiant.id_groupe;
                }
            }, 100);
            
            document.getElementById('modalEtudiant').style.display = 'block';
        }
        
        function fermerModal() {
            document.getElementById('modalEtudiant').style.display = 'none';
        }
        
        function ouvrirModalPaiement(id, nom, paiements) {
            document.getElementById('paiement_id_etudiant').value = id;
            
            // Afficher le statut actuel des mois
            let moisNoms = {1:'Jan',2:'Fév',3:'Mar',4:'Avr',5:'Mai',6:'Juin',7:'Juil',8:'Aoû',9:'Sep',10:'Oct',11:'Nov',12:'Déc'};
            let statusText = '<strong>' + nom + '</strong><br>Statuts actuels:<br>';
            if (paiements) {
                for (let i = 1; i <= 12; i++) {
                    statusText += moisNoms[i] + ': ' + (paiements[i] == 'paye' ? '✅' : '❌') + ' ';
                    if (i % 6 == 0) statusText += '<br>';
                }
            }
            document.getElementById('nomEtudiantPaiement').innerHTML = statusText;
            
            document.getElementById('modalPaiement').style.display = 'block';
        }
        
        function fermerModalPaiement() {
            document.getElementById('modalPaiement').style.display = 'none';
            document.getElementById('mois_select').value = '';
        }
        
        window.onclick = function(event) {
            let modal = document.getElementById('modalEtudiant');
            let modalPaiement = document.getElementById('modalPaiement');
            if (event.target == modal) {
                fermerModal();
            }
            if (event.target == modalPaiement) {
                fermerModalPaiement();
            }
        }
    </script>
</body>
</html>