diff --git a/client/src/pages/AdminGestionAttestations.tsx b/client/src/pages/AdminGestionAttestations.tsx index a934e21..c2d8fce 100644 --- a/client/src/pages/AdminGestionAttestations.tsx +++ b/client/src/pages/AdminGestionAttestations.tsx @@ -234,6 +234,8 @@ export default function AdminGestionAttestations() { sendAttestationMutation.mutate({ attestationId: apprenant.attestation.id, + sequenceId: apprenant.sequence.id, + apprenantId: apprenant.apprenant.id, apprenantEmail: apprenant.apprenant.email, apprenantNom: apprenant.apprenant.nom, apprenantPrenom: apprenant.apprenant.prenom, diff --git a/server/routers.ts b/server/routers.ts index 0255b9f..61e53cf 100644 --- a/server/routers.ts +++ b/server/routers.ts @@ -2526,6 +2526,8 @@ export const appRouter = router({ sendAttestation: adminProcedure .input(z.object({ attestationId: z.number(), + sequenceId: z.number(), + apprenantId: z.number(), apprenantEmail: z.string(), apprenantNom: z.string(), apprenantPrenom: z.string(), @@ -2535,20 +2537,41 @@ export const appRouter = router({ .mutation(async ({ input }) => { const { sendAttestationEmail } = await import("./emailService"); const { markAttestationAsSent } = await import("./gestionAttestationsDb"); + const { enregistrerEnvoiAttestation } = await import("./attestationsDb"); - // Envoyer l'email - await sendAttestationEmail({ - to: input.apprenantEmail, - apprenantNom: input.apprenantNom, - apprenantPrenom: input.apprenantPrenom, - formationNom: input.formationNom, - pdfUrl: input.pdfUrl, - }); + try { + // Envoyer l'email + await sendAttestationEmail({ + to: input.apprenantEmail, + apprenantNom: input.apprenantNom, + apprenantPrenom: input.apprenantPrenom, + formationNom: input.formationNom, + pdfUrl: input.pdfUrl, + }); - // Marquer comme envoyé - await markAttestationAsSent(input.attestationId); + // Marquer comme envoyé + await markAttestationAsSent(input.attestationId); - return { success: true }; + // Enregistrer dans l'historique + await enregistrerEnvoiAttestation({ + sequenceId: input.sequenceId, + apprenantId: input.apprenantId, + statut: "envoye", + urlAttestation: input.pdfUrl, + }); + + return { success: true }; + } catch (error: any) { + // Enregistrer l'échec dans l'historique + await enregistrerEnvoiAttestation({ + sequenceId: input.sequenceId, + apprenantId: input.apprenantId, + statut: "erreur", + messageErreur: error.message, + urlAttestation: input.pdfUrl, + }); + throw error; + } }), }), diff --git a/todo.md b/todo.md index e658d59..31ad5fa 100644 --- a/todo.md +++ b/todo.md @@ -863,3 +863,4 @@ - [x] Modifier l'envoi d'attestation pour joindre le PDF directement en pièce jointe au lieu d'un lien de téléchargement - [x] Permettre le renvoi d'une attestation même après qu'elle ait été envoyée (afficher bouton Renvoyer au lieu de masquer Envoyer) - [x] Corriger l'erreur "Failed to parse URL" lors de l'envoi d'attestation avec un chemin local (gérer les chemins locaux et URLs complètes) +- [x] Corriger le bouton Renvoyer inactif dans la gestion des attestations (correction selectedSequenceId -> apprenant.sequence.id)