diff --git a/server/gestionAttestationsDb.ts b/server/gestionAttestationsDb.ts index 22c2a8a..4f4a471 100644 --- a/server/gestionAttestationsDb.ts +++ b/server/gestionAttestationsDb.ts @@ -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, + })); } /** diff --git a/todo.md b/todo.md index 96f9dd1..5f2803e 100644 --- a/todo.md +++ b/todo.md @@ -1282,6 +1282,7 @@ ## Corriger l'affichage vide de la liste des apprenants après le tri chronologique -- [x] Identifier la cause du problème (champ premiereDate inexistant) -- [x] Corriger le code de regroupement/tri (utiliser l'ID de séquence) +- [x] Identifier la cause du problème (structure imbriquée Drizzle ORM) +- [x] Corriger le code backend (aplatir la structure de la requête) +- [x] Corriger le code frontend (utiliser l'ID de séquence pour le tri) - [ ] Déployer sur le VPS