diff --git a/client/src/pages/Inscription.tsx b/client/src/pages/Inscription.tsx index 1bd2b3b..8a4c033 100644 --- a/client/src/pages/Inscription.tsx +++ b/client/src/pages/Inscription.tsx @@ -62,6 +62,31 @@ export default function Inscription() { return; } + // Vérifier si le public cible correspond à la fonction de l'apprenant + const selectedSequence = sequences?.find(s => s.id === selectedSequenceId); + if (selectedSequence && selectedSequence.publicCible) { + const publicCibleMap: Record = { + "directeur": "directeur", + "chef_service": "chef_service", + "autre": "autre" + }; + + if (publicCibleMap[selectedSequence.publicCible] !== formData.fonction) { + const publicCibleLabel = selectedSequence.publicCible === "directeur" ? "Directeurs" : + selectedSequence.publicCible === "chef_service" ? "Chefs de service" : "Autre"; + const fonctionLabel = formData.fonction === "directeur" ? "Directeur" : + formData.fonction === "chef_service" ? "Chef de service" : "Autre"; + + toast.info( + `Information : Cette séquence est destinée aux ${publicCibleLabel}, mais vous êtes inscrit(e) en tant que ${fonctionLabel}. Vous pouvez tout de même vous inscrire.`, + { duration: 8000 } + ); + + // Attendre 2 secondes pour que l'utilisateur puisse lire l'alerte + await new Promise(resolve => setTimeout(resolve, 2000)); + } + } + try { // Vérifier si l'apprenant existe déjà const existingApprenant = await utils.client.apprenants.getByEmail.query({ email: formData.email }); diff --git a/todo.md b/todo.md index dc3ee3c..0fcc5c7 100644 --- a/todo.md +++ b/todo.md @@ -137,3 +137,10 @@ - [x] La validation d'une inscription ne fonctionne pas (déjà corrigé dans la version restaurée) - [x] Lorsqu'un apprenant s'inscrit, il n'apparaît pas dans la liste des apprenants (déjà corrigé dans la version restaurée) + +## Nouvelle fonctionnalité - Alerte public cible + +- [x] Analyser le code d'inscription pour identifier où ajouter l'alerte +- [x] Implémenter la logique de vérification du public cible dans le formulaire d'inscription +- [x] Afficher une alerte d'information (non bloquante) si le public cible ne correspond pas +- [x] Tester l'alerte avec différents scénarios (correspondance, non-correspondance)