Checkpoint: Correction du bug où le nom du formateur n'était pas affiché dans les emails de rappel J-7 et J-1 alors que la prévisualisation fonctionnait correctement. Modifications : 1) Ajout du paramètre formateur? dans la signature de sendRappelJ7Email (server/emailService.ts ligne 231), 2) Ajout de l'affichage du formateur dans le template HTML de rappel J-7 (ligne 261), 3) Passage du paramètre formateur dans sendGroupEmail pour le type rappel (ligne 406), 4) Passage du paramètre formateur dans rappelScheduler pour J-7 et J-1 (lignes 160 et 178), 5) Récupération et passage du formateur dans testerRappel (routers.ts lignes 913-917, 955, 971). Le nom du formateur s'affiche maintenant correctement dans tous les emails de rappel envoyés.
This commit is contained in:
@@ -228,6 +228,7 @@ export async function sendRappelJ7Email(params: {
|
||||
sequenceNom: string;
|
||||
dates: Array<{ dateDebut: Date; dateFin: Date; ordre: number }>;
|
||||
lieu: string;
|
||||
formateur?: string;
|
||||
}): Promise<boolean> {
|
||||
const fonctionLabel = params.apprenantFonction === 'directeur' ? 'Directeur' :
|
||||
params.apprenantFonction === 'chef_service' ? 'Chef de service' : '';
|
||||
@@ -257,6 +258,7 @@ export async function sendRappelJ7Email(params: {
|
||||
<h3>Informations pratiques</h3>
|
||||
<p><strong>Séquence :</strong> ${params.sequenceNom}</p>
|
||||
<p><strong>Lieu :</strong> ${params.lieu}</p>
|
||||
${params.formateur ? `<p><strong>Formateur :</strong> ${params.formateur}</p>` : ''}
|
||||
<h4>Dates :</h4>
|
||||
${datesHTML}
|
||||
</div>
|
||||
@@ -401,6 +403,7 @@ export async function sendGroupEmail(params: {
|
||||
sequenceNom: params.sequenceNom,
|
||||
dates: params.dates,
|
||||
lieu: params.lieu || '',
|
||||
formateur: params.formateur,
|
||||
});
|
||||
} else {
|
||||
// rappel_j1
|
||||
|
||||
@@ -157,6 +157,7 @@ async function processRappel(rappel: any) {
|
||||
ordre: d.ordre
|
||||
})),
|
||||
lieu: sequence.lieu || "",
|
||||
formateur: formateurNom,
|
||||
});
|
||||
console.log(`[Rappels] Email J-7 envoyé à ${apprenant.email} pour la séquence ${sequence.nom}`);
|
||||
} else if (rappel.templateType === "rappelJ1") {
|
||||
@@ -174,6 +175,7 @@ async function processRappel(rappel: any) {
|
||||
ordre: d.ordre
|
||||
})),
|
||||
lieu: sequence.lieu || "",
|
||||
formateur: formateurNom,
|
||||
});
|
||||
console.log(`[Rappels] Email J-1 envoyé à ${apprenant.email} pour la séquence ${sequence.nom}`);
|
||||
}
|
||||
|
||||
@@ -909,6 +909,13 @@ export const appRouter = router({
|
||||
throw new TRPCError({ code: 'NOT_FOUND', message: 'Formation introuvable' });
|
||||
}
|
||||
|
||||
// Récupérer le formateur si présent
|
||||
let formateurNom: string | undefined;
|
||||
if (sequence.formateurId) {
|
||||
const formateur = await db.getFormateurById(sequence.formateurId);
|
||||
formateurNom = formateur?.nom;
|
||||
}
|
||||
|
||||
// Récupérer les dates de la séquence
|
||||
const dates = await db.getDatesBySequence(input.sequenceId);
|
||||
|
||||
@@ -945,6 +952,7 @@ export const appRouter = router({
|
||||
ordre: d.ordre
|
||||
})),
|
||||
lieu: sequence.lieu || '',
|
||||
formateur: formateurNom,
|
||||
});
|
||||
} else {
|
||||
await sendRappelJ1Email({
|
||||
@@ -960,6 +968,7 @@ export const appRouter = router({
|
||||
ordre: d.ordre
|
||||
})),
|
||||
lieu: sequence.lieu || '',
|
||||
formateur: formateurNom,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
7
todo.md
7
todo.md
@@ -418,3 +418,10 @@
|
||||
- [x] Identifier pourquoi le compteur ne se met pas à jour
|
||||
- [x] Corriger le bug de rafraîchissement du compteur
|
||||
- [x] Tester la suppression d'un apprenant et vérifier le compteur
|
||||
|
||||
## Bug nom formateur dans email rappel J-7
|
||||
- [x] Analyser le code d'envoi des emails de rappel
|
||||
- [x] Comparer avec le code de prévisualisation
|
||||
- [x] Identifier pourquoi le nom du formateur n'est pas remplacé
|
||||
- [x] Corriger le bug de remplacement du nom du formateur
|
||||
- [x] Tester l'envoi réel et vérifier le remplacement
|
||||
|
||||
Reference in New Issue
Block a user