/** * 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; datesHTML?: string; // HTML formaté de toutes les dates de la séquence lieu?: string; formateur?: string; lienInscription?: string; lienReinitialisation?: 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 { // Vérifier que le template n'est pas undefined ou null if (!template) { return ''; } 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', lienReinitialisation: 'https://exemple.com/reset-password?token=abc123', }; return replaceEmailVariables(template, exampleVariables); }