67 lines
2.0 KiB
TypeScript
67 lines
2.0 KiB
TypeScript
/**
|
|
* 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;
|
|
[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);
|
|
}
|