Checkpoint: Corrections multiples pour le système d'attestations :
1. Ajout de l'enregistrement dans l'historique lors de l'envoi d'attestations (backend + frontend) 2. Correction du bouton Renvoyer inactif (selectedSequenceId -> apprenant.sequence.id) 3. Gestion des erreurs avec enregistrement dans l'historique en cas d'échec 4. Support des chemins locaux et URLs pour les fichiers PDF
This commit is contained in:
@@ -234,6 +234,8 @@ export default function AdminGestionAttestations() {
|
|||||||
|
|
||||||
sendAttestationMutation.mutate({
|
sendAttestationMutation.mutate({
|
||||||
attestationId: apprenant.attestation.id,
|
attestationId: apprenant.attestation.id,
|
||||||
|
sequenceId: apprenant.sequence.id,
|
||||||
|
apprenantId: apprenant.apprenant.id,
|
||||||
apprenantEmail: apprenant.apprenant.email,
|
apprenantEmail: apprenant.apprenant.email,
|
||||||
apprenantNom: apprenant.apprenant.nom,
|
apprenantNom: apprenant.apprenant.nom,
|
||||||
apprenantPrenom: apprenant.apprenant.prenom,
|
apprenantPrenom: apprenant.apprenant.prenom,
|
||||||
|
|||||||
@@ -2526,6 +2526,8 @@ export const appRouter = router({
|
|||||||
sendAttestation: adminProcedure
|
sendAttestation: adminProcedure
|
||||||
.input(z.object({
|
.input(z.object({
|
||||||
attestationId: z.number(),
|
attestationId: z.number(),
|
||||||
|
sequenceId: z.number(),
|
||||||
|
apprenantId: z.number(),
|
||||||
apprenantEmail: z.string(),
|
apprenantEmail: z.string(),
|
||||||
apprenantNom: z.string(),
|
apprenantNom: z.string(),
|
||||||
apprenantPrenom: z.string(),
|
apprenantPrenom: z.string(),
|
||||||
@@ -2535,7 +2537,9 @@ export const appRouter = router({
|
|||||||
.mutation(async ({ input }) => {
|
.mutation(async ({ input }) => {
|
||||||
const { sendAttestationEmail } = await import("./emailService");
|
const { sendAttestationEmail } = await import("./emailService");
|
||||||
const { markAttestationAsSent } = await import("./gestionAttestationsDb");
|
const { markAttestationAsSent } = await import("./gestionAttestationsDb");
|
||||||
|
const { enregistrerEnvoiAttestation } = await import("./attestationsDb");
|
||||||
|
|
||||||
|
try {
|
||||||
// Envoyer l'email
|
// Envoyer l'email
|
||||||
await sendAttestationEmail({
|
await sendAttestationEmail({
|
||||||
to: input.apprenantEmail,
|
to: input.apprenantEmail,
|
||||||
@@ -2548,7 +2552,26 @@ export const appRouter = router({
|
|||||||
// Marquer comme envoyé
|
// Marquer comme envoyé
|
||||||
await markAttestationAsSent(input.attestationId);
|
await markAttestationAsSent(input.attestationId);
|
||||||
|
|
||||||
|
// Enregistrer dans l'historique
|
||||||
|
await enregistrerEnvoiAttestation({
|
||||||
|
sequenceId: input.sequenceId,
|
||||||
|
apprenantId: input.apprenantId,
|
||||||
|
statut: "envoye",
|
||||||
|
urlAttestation: input.pdfUrl,
|
||||||
|
});
|
||||||
|
|
||||||
return { success: true };
|
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;
|
||||||
|
}
|
||||||
}),
|
}),
|
||||||
|
|
||||||
}),
|
}),
|
||||||
|
|||||||
1
todo.md
1
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] 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] 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 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)
|
||||||
|
|||||||
Reference in New Issue
Block a user