Checkpoint: Implémentation complète du remplacement automatique des variables dans les emails et ajout d'un bouton d'aperçu. Les variables {{nomApprenant}}, {{prenomApprenant}}, {{nomFormation}}, {{nomSequence}}, {{dateDebut}}, {{dateFin}}, {{lieu}}, {{formateur}} sont automatiquement remplacées lors de l'envoi d'emails. Un bouton "Aperçu email" permet de visualiser le rendu final avec des données d'exemple avant l'envoi.
This commit is contained in:
65
server/emailTemplateUtils.ts
Normal file
65
server/emailTemplateUtils.ts
Normal file
@@ -0,0 +1,65 @@
|
||||
/**
|
||||
* Utilitaires pour le remplacement des variables dans les templates d'emails
|
||||
*/
|
||||
|
||||
export interface EmailVariables {
|
||||
nomApprenant?: string;
|
||||
prenomApprenant?: string;
|
||||
nomFormation?: string;
|
||||
nomSequence?: string;
|
||||
dateDebut?: string;
|
||||
dateFin?: string;
|
||||
lieu?: string;
|
||||
formateur?: string;
|
||||
lienInscription?: string;
|
||||
[key: string]: string | undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remplace les variables {{variable}} dans un texte par leurs valeurs
|
||||
* @param template - Le texte contenant les variables à remplacer
|
||||
* @param variables - Un objet contenant les valeurs des variables
|
||||
* @returns Le texte avec les variables remplacées
|
||||
*/
|
||||
export function replaceEmailVariables(
|
||||
template: string,
|
||||
variables: EmailVariables
|
||||
): string {
|
||||
let result = template;
|
||||
|
||||
// Remplacer chaque variable trouvée dans le template
|
||||
Object.keys(variables).forEach((key) => {
|
||||
const value = variables[key];
|
||||
if (value !== undefined && value !== null) {
|
||||
// Remplacer toutes les occurrences de {{key}} par la valeur
|
||||
const regex = new RegExp(`\\{\\{${key}\\}\\}`, 'g');
|
||||
result = result.replace(regex, value);
|
||||
}
|
||||
});
|
||||
|
||||
// Nettoyer les variables non remplacées (optionnel)
|
||||
// result = result.replace(/\{\{[^}]+\}\}/g, '');
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Génère un aperçu d'email avec des données d'exemple
|
||||
* @param template - Le template d'email
|
||||
* @returns Le template avec des données d'exemple
|
||||
*/
|
||||
export function generateEmailPreview(template: string): string {
|
||||
const exampleVariables: EmailVariables = {
|
||||
nomApprenant: 'Dupont',
|
||||
prenomApprenant: 'Marie',
|
||||
nomFormation: 'Formation Management',
|
||||
nomSequence: 'Séquence 1 - Introduction',
|
||||
dateDebut: '15/01/2025',
|
||||
dateFin: '17/01/2025',
|
||||
lieu: 'Salle de formation A - Bâtiment principal',
|
||||
formateur: 'Jean Martin',
|
||||
lienInscription: 'https://exemple.com/inscription/abc123',
|
||||
};
|
||||
|
||||
return replaceEmailVariables(template, exampleVariables);
|
||||
}
|
||||
Reference in New Issue
Block a user