fetchAll($queryEvals, [$user['id_utilisateur']]); } else { if ($user['id_classe']) { $queryEvals = "SELECT DISTINCT e.*, ae.date_debut as debut_acces, ae.date_fin as fin_acces, COALESCE(t.statut, 'non_commence') as statut_tentative, t.note as note_obtenue, t.date_debut as date_tentative FROM evaluations e INNER JOIN acces_evaluations ae ON e.id_evaluation = ae.id_evaluation LEFT JOIN tentatives_eleves t ON e.id_evaluation = t.id_evaluation AND t.id_eleve = ? WHERE ae.id_classe = ? AND ae.actif = 1 AND NOW() BETWEEN ae.date_debut AND ae.date_fin AND e.actif = 1 ORDER BY ae.date_fin ASC, e.titre ASC"; $evaluations = $db->fetchAll($queryEvals, [$user['id_utilisateur'], $user['id_classe']]); } else { $evaluations = []; } } // Récupérer les 4 dernières évaluations terminées $query4Dernieres = "SELECT e.id_evaluation, e.titre, e.chapitre, te.note, te.pourcentage, te.date_fin, te.temps_passe_secondes, (SELECT COUNT(*) FROM questions WHERE id_evaluation = e.id_evaluation) as nb_questions FROM tentatives_eleves te INNER JOIN evaluations e ON te.id_evaluation = e.id_evaluation WHERE te.id_eleve = ? AND te.statut = 'terminee' ORDER BY te.date_fin DESC LIMIT 4"; $dernieresEvals = $db->fetchAll($query4Dernieres, [$user['id_utilisateur']]); // Calculer la moyenne des 4 dernières $moyenne4Dernieres = 0; if (!empty($dernieresEvals)) { $somme = array_sum(array_column($dernieresEvals, 'note')); $moyenne4Dernieres = $somme / count($dernieresEvals); } // Récupérer TOUTES les évaluations terminées pour le graphique $queryToutesEvals = "SELECT e.id_evaluation, e.titre, e.chapitre, te.note, te.pourcentage, te.date_fin FROM tentatives_eleves te INNER JOIN evaluations e ON te.id_evaluation = e.id_evaluation WHERE te.id_eleve = ? AND te.statut = 'terminee' ORDER BY te.date_fin ASC"; $toutesEvals = $db->fetchAll($queryToutesEvals, [$user['id_utilisateur']]); // Récupérer les statistiques générales $queryStats = "SELECT COUNT(DISTINCT t.id_evaluation) as nb_evaluations_passees, COUNT(CASE WHEN t.statut = 'terminee' THEN 1 END) as nb_evaluations_terminees, AVG(CASE WHEN t.statut = 'terminee' THEN t.note ELSE NULL END) as moyenne_generale FROM tentatives_eleves t INNER JOIN evaluations e ON t.id_evaluation = e.id_evaluation WHERE t.id_eleve = ?"; $stats = $db->fetchOne($queryStats, [$user['id_utilisateur']]) ?? [ 'nb_evaluations_passees' => 0, 'nb_evaluations_terminees' => 0, 'moyenne_generale' => null ]; ?>
Aucune évaluation disponible pour le moment
Les nouvelles évaluations apparaîtront ici lorsque votre enseignant les publiera.
= htmlspecialchars($eval['description']) ?>
Chapitre : = htmlspecialchars($eval['chapitre'] ?? 'Non spécifié') ?> | Durée : = $eval['duree_minutes'] ?? 'Libre' ?> min
⏰ Disponible jusqu'au = date('d/m/Y H:i', strtotime($eval['fin_acces'])) ?>