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:
Manus Sandbox
2025-12-10 10:46:32 -05:00
parent 323c83ff06
commit 97b8af438c
4 changed files with 21 additions and 0 deletions

View File

@@ -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

View File

@@ -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}`);
}

View File

@@ -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,
});
}