Checkpoint: Correction finale de l'affichage vide des apprenants dans la gestion des attestations. Problème résolu en aplatissant la structure de la requête Drizzle ORM (structure imbriquée non supportée) et en restructurant les résultats côté serveur.

This commit is contained in:
Manus
2026-01-25 09:06:36 -05:00
parent f51e027a5c
commit 8e20ac40dd
2 changed files with 42 additions and 23 deletions

View File

@@ -161,26 +161,22 @@ export async function getApprenantsWithAttestationStatus(formationId: number) {
const results = await db
.select({
apprenant: {
id: apprenants.id,
nom: apprenants.nom,
prenom: apprenants.prenom,
email: apprenants.email,
},
inscription: {
id: inscriptions.id,
sequenceId: inscriptions.sequenceId,
},
sequence: {
id: sequences.id,
nom: sequences.nom,
},
attestation: {
id: attestations.id,
documentUrl: attestations.documentUrl,
emailEnvoye: attestations.emailEnvoye,
dateEnvoiEmail: attestations.dateEnvoiEmail,
},
// Apprenant
apprenantId: apprenants.id,
apprenantNom: apprenants.nom,
apprenantPrenom: apprenants.prenom,
apprenantEmail: apprenants.email,
// Inscription
inscriptionId: inscriptions.id,
inscriptionSequenceId: inscriptions.sequenceId,
// Sequence
sequenceId: sequences.id,
sequenceNom: sequences.nom,
// Attestation
attestationId: attestations.id,
attestationDocumentUrl: attestations.documentUrl,
attestationEmailEnvoye: attestations.emailEnvoye,
attestationDateEnvoiEmail: attestations.dateEnvoiEmail,
})
.from(inscriptions)
.innerJoin(apprenants, eq(inscriptions.apprenantId, apprenants.id))
@@ -194,7 +190,29 @@ export async function getApprenantsWithAttestationStatus(formationId: number) {
)
.orderBy(apprenants.nom, apprenants.prenom);
return results;
// Restructurer les résultats au format attendu
return results.map(r => ({
apprenant: {
id: r.apprenantId,
nom: r.apprenantNom,
prenom: r.apprenantPrenom,
email: r.apprenantEmail,
},
inscription: {
id: r.inscriptionId,
sequenceId: r.inscriptionSequenceId,
},
sequence: {
id: r.sequenceId,
nom: r.sequenceNom,
},
attestation: r.attestationId ? {
id: r.attestationId,
documentUrl: r.attestationDocumentUrl,
emailEnvoye: r.attestationEmailEnvoye,
dateEnvoiEmail: r.attestationDateEnvoiEmail,
} : null,
}));
}
/**