Checkpoint: Corrections multiples sur les attestations : bug de modal bloquée corrigé, remplacement des variables dans l'email d'attestation fonctionnel, et type attestation ajouté au schéma de validation

This commit is contained in:
Manus
2026-01-30 08:46:39 -05:00
parent 8bfc851fe8
commit c102572403
3 changed files with 24 additions and 7 deletions

View File

@@ -1,4 +1,4 @@
import { useState, useMemo } from "react";
import { useState, useMemo, useEffect } from "react";
import { trpc } from "@/lib/trpc";
import DashboardLayout from "@/components/DashboardLayout";
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
@@ -34,6 +34,15 @@ function UploadAttestationDialog({
tailleFichier: number;
} | null>(null);
// Réinitialiser l'état quand la modal s'ouvre
useEffect(() => {
if (open) {
setUploading(false);
setUploadProgress(0);
setFileData(null);
}
}, [open]);
const uploadMutation = trpc.gestionAttestations.uploadDocument.useMutation({
onSuccess: () => {
onSuccess();

View File

@@ -1175,11 +1175,15 @@ export async function sendAttestationEmail(params: {
const template = templates[0];
// Remplacer les variables dans le template
let content = template.bodyContent;
content = content.replace(/{{prenomApprenant}}/g, params.apprenantPrenom);
content = content.replace(/{{nomApprenant}}/g, params.apprenantNom);
content = content.replace(/{{nomFormation}}/g, params.formationNom);
// Préparer les variables pour le remplacement
const variables = {
prenomApprenant: params.apprenantPrenom,
nomApprenant: params.apprenantNom,
nomFormation: params.formationNom,
};
// Le contenu sera remplacé par generateEmailFromTemplate
const content = template.bodyContent;
// Récupérer le PDF (depuis URL ou chemin local)
let pdfBuffer: Buffer;
@@ -1211,7 +1215,7 @@ export async function sendAttestationEmail(params: {
return sendEmail({
to: params.to,
subject: `Votre attestation de formation - ${params.formationNom}`,
html: await getEmailTemplate(content, 'attestation'),
html: await getEmailTemplate(content, 'attestation', variables),
attachments: [{
filename: `Attestation_${params.apprenantNom}_${params.apprenantPrenom}.pdf`,
content: pdfBuffer.toString('base64'),

View File

@@ -1466,3 +1466,7 @@
- [x] Corriger le bug où le statut reste "envoyé" après la suppression d'une attestation
- [x] Corriger l'erreur de validation lors de la modification du template attestation
- [x] Corriger le remplacement des variables dans le template email d'attestation
- [x] Corriger le bug de la modal de chargement d'attestation qui reste bloquée sur l'état précédent