From b9804ada14e398513aa46f255b9575cd35cbf72d Mon Sep 17 00:00:00 2001 From: Manus Date: Thu, 15 Jan 2026 11:48:33 -0500 Subject: [PATCH] =?UTF-8?q?Checkpoint:=20Ajout=20du=20bouton=20"Tester=20l?= =?UTF-8?q?e=20rappel"=20dans=20AdminSequences.tsx=20:=20-=20Ajout=20de=20?= =?UTF-8?q?la=20mutation=20testerRappelMutation=20connect=C3=A9e=20=C3=A0?= =?UTF-8?q?=20la=20proc=C3=A9dure=20tRPC=20rappels.testerRappel=20-=20Ajou?= =?UTF-8?q?t=20de=20l'ic=C3=B4ne=20Send=20dans=20les=20imports=20-=20Ajout?= =?UTF-8?q?=20du=20bouton=20dans=20la=20colonne=20Actions=20du=20tableau?= =?UTF-8?q?=20des=20s=C3=A9quences=20(entre=20Edit=20et=20Delete)=20-=20Le?= =?UTF-8?q?=20bouton=20envoie=20un=20email=20de=20test=20=C3=A0=20l'admini?= =?UTF-8?q?strateur=20avec=20les=20donn=C3=A9es=20de=20la=20s=C3=A9quence?= =?UTF-8?q?=20s=C3=A9lectionn=C3=A9e=20-=20Validation=20:=20le=20bouton=20?= =?UTF-8?q?est=20d=C3=A9sactiv=C3=A9=20si=20la=20s=C3=A9quence=20n'a=20pas?= =?UTF-8?q?=20de=20dates=20configur=C3=A9es=20-=20Feedback=20utilisateur?= =?UTF-8?q?=20:=20toast=20de=20succ=C3=A8s=20ou=20d'erreur=20apr=C3=A8s=20?= =?UTF-8?q?l'envoi=20-=20Mise=20=C3=A0=20jour=20du=20fichier=20todo.md=20p?= =?UTF-8?q?our=20marquer=20la=20t=C3=A2che=20comme=20termin=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/pages/AdminSequences.tsx | 26 +++++++- drizzle/schema.ts | 8 ++- package.json | 2 + pnpm-lock.yaml | 34 +++++++++++ server/db.ts | 30 +++++++++- server/emailService.ts | 18 ++++++ server/routers.ts | 92 ++++++++++++++++++++++++++++- todo.md | 10 ++++ 8 files changed, 215 insertions(+), 5 deletions(-) diff --git a/client/src/pages/AdminSequences.tsx b/client/src/pages/AdminSequences.tsx index 8a4b841..1d9155f 100644 --- a/client/src/pages/AdminSequences.tsx +++ b/client/src/pages/AdminSequences.tsx @@ -9,7 +9,7 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; import { Badge } from "@/components/ui/badge"; import { trpc } from "@/lib/trpc"; -import { Calendar, Edit, Eye, Plus, Trash2, X, Bell, Maximize2, Minimize2 } from "lucide-react"; +import { Calendar, Edit, Eye, Plus, Trash2, X, Bell, Maximize2, Minimize2, Send } from "lucide-react"; import FormateurCombobox from "@/components/FormateurCombobox"; import CapacityProgressBar from "@/components/CapacityProgressBar"; import { toast } from "sonner"; @@ -87,6 +87,15 @@ export default function AdminSequences() { }, }); + const testerRappelMutation = trpc.rappels.testerRappel.useMutation({ + onSuccess: () => { + toast.success("Email de test envoyé avec succès"); + }, + onError: (error) => { + toast.error(`Erreur lors de l'envoi du test : ${error.message}`); + }, + }); + const resetForm = () => { setFormData({ formationId: "", @@ -821,6 +830,21 @@ export default function AdminSequences() { > +