diff --git a/server/emailService.ts b/server/emailService.ts index 65ca75f..012cfad 100644 --- a/server/emailService.ts +++ b/server/emailService.ts @@ -228,6 +228,7 @@ export async function sendRappelJ7Email(params: { sequenceNom: string; dates: Array<{ dateDebut: Date; dateFin: Date; ordre: number }>; lieu: string; + formateur?: string; }): Promise { const fonctionLabel = params.apprenantFonction === 'directeur' ? 'Directeur' : params.apprenantFonction === 'chef_service' ? 'Chef de service' : ''; @@ -257,6 +258,7 @@ export async function sendRappelJ7Email(params: {

Informations pratiques

Séquence : ${params.sequenceNom}

Lieu : ${params.lieu}

+ ${params.formateur ? `

Formateur : ${params.formateur}

` : ''}

Dates :

${datesHTML} @@ -401,6 +403,7 @@ export async function sendGroupEmail(params: { sequenceNom: params.sequenceNom, dates: params.dates, lieu: params.lieu || '', + formateur: params.formateur, }); } else { // rappel_j1 diff --git a/server/rappelScheduler.ts b/server/rappelScheduler.ts index 55c2b90..81b8514 100644 --- a/server/rappelScheduler.ts +++ b/server/rappelScheduler.ts @@ -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}`); } diff --git a/server/routers.ts b/server/routers.ts index 2db0881..d9c1a80 100644 --- a/server/routers.ts +++ b/server/routers.ts @@ -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, }); } diff --git a/todo.md b/todo.md index b6f79d7..b4601f3 100644 --- a/todo.md +++ b/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