From 3764fde6fe69ed1fe73df6a10652f26ae816336a Mon Sep 17 00:00:00 2001 From: Manus Date: Sun, 25 Jan 2026 07:33:23 -0500 Subject: [PATCH] =?UTF-8?q?Checkpoint:=20Correction=20de=20la=20d=C3=A9sac?= =?UTF-8?q?tivation=20intempestive=20des=20rappels=20:=20les=20dates=20ne?= =?UTF-8?q?=20sont=20plus=20supprim=C3=A9es/recr=C3=A9=C3=A9es=20lors=20de?= =?UTF-8?q?=20la=20modification=20du=20formateur,=20seulement=20lors=20d'u?= =?UTF-8?q?n=20r=C3=A9el=20changement=20de=20dates?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/routers.ts | 46 ++++++++++++++++++++++++++++++++++------------ todo.md | 7 +++++++ 2 files changed, 41 insertions(+), 12 deletions(-) diff --git a/server/routers.ts b/server/routers.ts index 12fb8aa..e6994e2 100644 --- a/server/routers.ts +++ b/server/routers.ts @@ -532,21 +532,43 @@ export const appRouter = router({ await db.updateSequence(id, updateData); console.log('[UPDATE SEQUENCE] Séquence mise à jour avec succès'); - // Supprimer les anciennes dates - await db.deleteDatesBySequence(id); - console.log('[UPDATE SEQUENCE] Anciennes dates supprimées'); + // Récupérer les dates existantes + const existingDates = await db.getDatesBySequence(id); + console.log('[UPDATE SEQUENCE] Dates existantes:', existingDates.length); - // Créer les nouvelles dates - for (const date of dates) { - console.log('[UPDATE SEQUENCE] Création date:', date); - await db.createDateFormation({ - sequenceId: id, - dateDebut: parseLocalDateTime(date.dateDebut), - dateFin: parseLocalDateTime(date.dateFin), - ordre: date.ordre, + // Comparer les dates pour détecter les changements + const datesChanged = existingDates.length !== dates.length || + existingDates.some((existing, index) => { + const newDate = dates[index]; + if (!newDate) return true; + const existingDebut = new Date(existing.dateDebut).toISOString(); + const existingFin = new Date(existing.dateFin).toISOString(); + const newDebut = parseLocalDateTime(newDate.dateDebut).toISOString(); + const newFin = parseLocalDateTime(newDate.dateFin).toISOString(); + return existingDebut !== newDebut || existingFin !== newFin; }); + + // Ne supprimer/recréer les dates que si elles ont changé + if (datesChanged) { + console.log('[UPDATE SEQUENCE] Dates modifiées, suppression et recréation'); + // Supprimer les anciennes dates + await db.deleteDatesBySequence(id); + console.log('[UPDATE SEQUENCE] Anciennes dates supprimées'); + + // Créer les nouvelles dates + for (const date of dates) { + console.log('[UPDATE SEQUENCE] Création date:', date); + await db.createDateFormation({ + sequenceId: id, + dateDebut: parseLocalDateTime(date.dateDebut), + dateFin: parseLocalDateTime(date.dateFin), + ordre: date.ordre, + }); + } + console.log('[UPDATE SEQUENCE] Toutes les dates ont été créées'); + } else { + console.log('[UPDATE SEQUENCE] Dates inchangées, conservation des rappels'); } - console.log('[UPDATE SEQUENCE] Toutes les dates ont été créées'); return { success: true }; }), diff --git a/todo.md b/todo.md index 54a684c..5aede42 100644 --- a/todo.md +++ b/todo.md @@ -1227,4 +1227,11 @@ - [x] Proposer une solution pour synchroniser ou clarifier l'usage - [x] Implémenter la solution (auto-création dans createUser et updateUser) - [x] Créer un script de migration pour les formateurs existants +- [x] Déployer sur le VPS et exécuter la migration + +## Corriger la désactivation des rappels lors du changement de formateur + +- [x] Identifier le code de modification de séquence qui désactive les rappels +- [x] Corriger pour ne désactiver que lors de changement de dates +- [ ] Tester la modification - [ ] Déployer sur le VPS