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