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.note_sur as note_sur_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.description, te.note, te.note_sur, te.pourcentage, te.temps_passe, te.date_fin, (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 (arrondie au demi-point supérieur) $moyenne4Dernieres = 0; if (!empty($dernieresEvals)) { $somme_notes_sur_20 = 0; foreach ($dernieresEvals as $eval) { $note_sur_20 = $eval['note_sur'] > 0 ? ($eval['note'] / $eval['note_sur']) * 20 : 0; $somme_notes_sur_20 += $note_sur_20; } $moyenne_brute = $somme_notes_sur_20 / count($dernieresEvals); $moyenne4Dernieres = ceil($moyenne_brute * 2) / 2; // Arrondi demi-point sup } // Récupérer TOUTES les évaluations terminées pour le graphique $queryToutesEvals = "SELECT e.id_evaluation, e.titre, e.description, te.note, te.note_sur, 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' AND t.note_sur > 0 THEN (t.note / t.note_sur) * 20 ELSE NULL END) as moyenne_generale FROM tentatives_eleves t WHERE t.id_eleve = ?"; $stats = $db->fetchOne($queryStats, [$user['id_utilisateur']]) ?? [ 'nb_evaluations_passees' => 0, 'nb_evaluations_terminees' => 0, 'moyenne_generale' => null ]; // Arrondir la moyenne générale au demi-point supérieur if ($stats['moyenne_generale'] !== null) { $stats['moyenne_generale'] = ceil($stats['moyenne_generale'] * 2) / 2; } ?>
Aucune évaluation disponible pour le moment
Les nouvelles évaluations apparaîtront ici lorsque votre enseignant les publiera.
= htmlspecialchars($eval['description']) ?>
Durée : = $eval['duree_minutes'] ?? 'Libre' ?> min | Note : /= $eval['note_totale'] ?? 20 ?>
⏰ Disponible jusqu'au = date('d/m/Y H:i', strtotime($eval['fin_acces'])) ?>