diff --git a/client/src/pages/FormateurEmargement.tsx b/client/src/pages/FormateurEmargement.tsx index 0b76b34..0b54af9 100644 --- a/client/src/pages/FormateurEmargement.tsx +++ b/client/src/pages/FormateurEmargement.tsx @@ -316,17 +316,6 @@ export default function FormateurEmargement() {

- {/* Statistiques Matin */} -
- 🌅 Matin - - {(() => { - const stats = getPresenceStats(date.id, "matin"); - return `${stats.present}/${stats.total} présents (${stats.percentage}%)`; - })()} - -
- {/* Matin */}
@@ -387,17 +376,6 @@ export default function FormateurEmargement() { )}
- {/* Statistiques Après-midi */} -
- 🌆 Après-midi - - {(() => { - const stats = getPresenceStats(date.id, "apres_midi"); - return `${stats.present}/${stats.total} présents (${stats.percentage}%)`; - })()} - -
- {/* Après-midi */}
diff --git a/server/presenceDb.ts b/server/presenceDb.ts index d952acd..3b231db 100644 --- a/server/presenceDb.ts +++ b/server/presenceDb.ts @@ -18,6 +18,29 @@ export async function validerPresence(params: { const db = await getDb(); if (!db) throw new Error("Database not available"); + // Récupérer la date de formation + const dateFormation = await db + .select() + .from(datesFormation) + .where(eq(datesFormation.id, params.dateFormationId)) + .limit(1); + + if (dateFormation.length === 0) { + throw new Error("Date de formation introuvable"); + } + + // Vérifier que la date actuelle est le jour de la formation ou après + const now = new Date(); + const dateDebut = new Date(dateFormation[0].dateDebut); + + // Réinitialiser les heures pour comparer uniquement les dates + now.setHours(0, 0, 0, 0); + dateDebut.setHours(0, 0, 0, 0); + + if (now < dateDebut) { + throw new Error("Vous ne pouvez pas émarger avant la date de formation"); + } + // Vérifier si la présence existe déjà pour cette période const presenceExistante = await db .select() diff --git a/todo.md b/todo.md index 8b4f017..7652368 100644 --- a/todo.md +++ b/todo.md @@ -1496,3 +1496,7 @@ - [x] Ajouter un indicateur visuel de rafraîchissement avec badge "Mis à jour il y a X secondes" - [x] Ajouter des statistiques en temps réel du taux de présence par période + +- [x] Retirer les compteurs dynamiques de taux de présence de la page d'émargement numérique + +- [x] Empêcher l'émargement avant la date de formation concernée (vérification backend)