Checkpoint: Évolution du système de rappels pour permettre jusqu'à 2 pièces jointes au lieu d'une seule. Migration SQL appliquée en local et sur le VPS de production. Les rappels existants sont préservés.
This commit is contained in:
@@ -233,6 +233,9 @@ export async function sendRappelEmail(params: {
|
||||
attachmentUrl?: string;
|
||||
attachmentFilename?: string;
|
||||
attachmentMimeType?: string;
|
||||
attachmentUrl2?: string;
|
||||
attachmentFilename2?: string;
|
||||
attachmentMimeType2?: string;
|
||||
}): Promise<boolean> {
|
||||
const fonctionLabel = params.apprenantFonction === 'directeur' ? 'Directeur' :
|
||||
params.apprenantFonction === 'chef_service' ? 'Chef de service' : '';
|
||||
@@ -318,6 +321,37 @@ export async function sendRappelEmail(params: {
|
||||
// Continuer l'envoi sans la pièce jointe
|
||||
}
|
||||
}
|
||||
|
||||
// Charger la deuxième pièce jointe si présente
|
||||
if (params.attachmentUrl2 && params.attachmentFilename2 && params.attachmentMimeType2) {
|
||||
try {
|
||||
let base64: string;
|
||||
|
||||
// Vérifier si c'est une URL locale (commence par /uploads/)
|
||||
if (params.attachmentUrl2.startsWith('/uploads/')) {
|
||||
// Lire le fichier depuis le système de fichiers
|
||||
const fs = await import('fs/promises');
|
||||
const path = await import('path');
|
||||
const filePath = path.join(process.cwd(), params.attachmentUrl2);
|
||||
const fileBuffer = await fs.readFile(filePath);
|
||||
base64 = fileBuffer.toString('base64');
|
||||
} else {
|
||||
// Télécharger le fichier depuis une URL externe (S3)
|
||||
const response = await fetch(params.attachmentUrl2);
|
||||
const arrayBuffer = await response.arrayBuffer();
|
||||
base64 = Buffer.from(arrayBuffer).toString('base64');
|
||||
}
|
||||
|
||||
attachments.push({
|
||||
filename: params.attachmentFilename2,
|
||||
content: base64,
|
||||
contentType: params.attachmentMimeType2,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('[Email] Erreur lors du chargement de la pièce jointe 2:', error);
|
||||
// Continuer l'envoi sans la pièce jointe
|
||||
}
|
||||
}
|
||||
|
||||
return sendEmail({
|
||||
to: params.apprenantEmail,
|
||||
|
||||
Reference in New Issue
Block a user