diff --git a/client/src/pages/AdminGestionAttestations.tsx b/client/src/pages/AdminGestionAttestations.tsx index d929f9f..1e06024 100644 --- a/client/src/pages/AdminGestionAttestations.tsx +++ b/client/src/pages/AdminGestionAttestations.tsx @@ -455,31 +455,56 @@ export default function AdminGestionAttestations() { {loadingApprenants ? (

Chargement...

) : apprenants && apprenants.length > 0 ? ( - - - - Nom - Prénom - Email - Séquence - Statut attestation - Actions - - - - {apprenants.map((item, index) => { - const hasAttestation = !!item.attestation; - const hasDocument = hasAttestation && (item.attestation.urlPdf || item.attestation.documentUrl); - const isSent = hasAttestation && item.attestation.emailEnvoye; - const documentUrl = item.attestation?.documentUrl || item.attestation?.urlPdf; +
+ {/* Regrouper les apprenants par séquence */} + {Object.entries( + apprenants.reduce((acc: Record, item) => { + const sequenceKey = `${item.sequence.id}-${item.sequence.nom}`; + if (!acc[sequenceKey]) acc[sequenceKey] = []; + acc[sequenceKey].push(item); + return acc; + }, {}) + ).map(([sequenceKey, sequenceApprenants]) => { + const sequenceName = sequenceKey.split('-').slice(1).join('-'); + return ( +
+ {/* En-tête de séquence */} +
+
+
+

{sequenceName}

+

{sequenceApprenants.length} apprenant(s)

+
+ + {sequenceApprenants.filter(a => a.attestation?.emailEnvoye).length} / {sequenceApprenants.length} envoyé(es) + +
+
+ + {/* Tableau des apprenants de cette séquence */} +
+ + + Nom + Prénom + Email + Statut attestation + Actions + + + + {sequenceApprenants.map((item, index) => { + const hasAttestation = !!item.attestation; + const hasDocument = hasAttestation && (item.attestation.urlPdf || item.attestation.documentUrl); + const isSent = hasAttestation && item.attestation.emailEnvoye; + const documentUrl = item.attestation?.documentUrl || item.attestation?.urlPdf; - return ( - - {item.apprenant.nom} - {item.apprenant.prenom} - {item.apprenant.email} - {item.sequence.nom} - + return ( + + {item.apprenant.nom} + {item.apprenant.prenom} + {item.apprenant.email} + {!hasDocument && ( Aucune attestation @@ -547,6 +572,10 @@ export default function AdminGestionAttestations() { })}
+ + ); + })} + ) : (
diff --git a/todo.md b/todo.md index 9c8570d..a38bcc8 100644 --- a/todo.md +++ b/todo.md @@ -1265,4 +1265,11 @@ - [x] Identifier le fichier de gestion des attestations - [x] Analyser les procédures backend concernées - [x] Corriger les restrictions d'accès pour les formateurs (getApprenantsWithStatus) +- [x] Déployer sur le VPS + +## Regrouper les apprenants par séquence dans la gestion des attestations + +- [x] Analyser l'affichage actuel (regroupement par formation) +- [x] Vérifier le backend (données de séquence déjà présentes) +- [x] Adapter l'interface pour afficher les apprenants regroupés par séquence - [ ] Déployer sur le VPS