Checkpoint: Correction du bug où le compteur d'inscrits ne se mettait pas à jour après la suppression d'un apprenant d'une séquence. Modifications : 1) Ajout du calcul de nbInscrits dans la procédure sequences.getById (server/routers.ts ligne 281), 2) Ajout de l'invalidation des requêtes sequences.getById et sequences.list après la mise à jour du statut d'inscription (client/src/pages/AdminSequenceInscrits.tsx lignes 66-67). Le compteur affiche maintenant correctement le nombre d'inscrits confirmés en temps réel.
This commit is contained in:
30
.manus/db/db-query-1765380423147.json
Normal file
30
.manus/db/db-query-1765380423147.json
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"query": "SELECT s.id, s.nom, COUNT(i.id) as nb_inscrits FROM sequences s LEFT JOIN inscriptions i ON s.id = i.sequenceId AND i.statut = 'confirmee' GROUP BY s.id, s.nom HAVING nb_inscrits > 0 LIMIT 5",
|
||||||
|
"command": "mysql --batch --raw --column-names --default-character-set=utf8mb4 --host gateway02.us-east-1.prod.aws.tidbcloud.com --port 4000 --user 4CrrYuB5tme73Qo.root --database 7PAT67UmWoxv8vwp8Bbcv6 --execute SELECT s.id, s.nom, COUNT(i.id) as nb_inscrits FROM sequences s LEFT JOIN inscriptions i ON s.id = i.sequenceId AND i.statut = 'confirmee' GROUP BY s.id, s.nom HAVING nb_inscrits > 0 LIMIT 5",
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"id": "30001",
|
||||||
|
"nom": "Groupe A",
|
||||||
|
"nb_inscrits": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "150001",
|
||||||
|
"nom": "Groupe 1",
|
||||||
|
"nb_inscrits": "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "60001",
|
||||||
|
"nom": "Groupe C",
|
||||||
|
"nb_inscrits": "4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "330001",
|
||||||
|
"nom": "test 3",
|
||||||
|
"nb_inscrits": "3"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"messages": [],
|
||||||
|
"stdout": "id\tnom\tnb_inscrits\n30001\tGroupe A\t3\n150001\tGroupe 1\t1\n60001\tGroupe C\t4\n330001\ttest 3\t3\n",
|
||||||
|
"stderr": "",
|
||||||
|
"execution_time_ms": 128
|
||||||
|
}
|
||||||
14
.manus/db/db-query-1765380439374.json
Normal file
14
.manus/db/db-query-1765380439374.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"query": "SELECT s.id, s.nom FROM sequences s WHERE EXISTS (SELECT 1 FROM inscriptions i WHERE i.sequenceId = s.id AND i.statut = 'confirmee') LIMIT 1",
|
||||||
|
"command": "mysql --batch --raw --column-names --default-character-set=utf8mb4 --host gateway02.us-east-1.prod.aws.tidbcloud.com --port 4000 --user 4CrrYuB5tme73Qo.root --database 7PAT67UmWoxv8vwp8Bbcv6 --execute SELECT s.id, s.nom FROM sequences s WHERE EXISTS (SELECT 1 FROM inscriptions i WHERE i.sequenceId = s.id AND i.statut = 'confirmee') LIMIT 1",
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"id": "30001",
|
||||||
|
"nom": "Groupe A"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"messages": [],
|
||||||
|
"stdout": "id\tnom\n30001\tGroupe A\n",
|
||||||
|
"stderr": "",
|
||||||
|
"execution_time_ms": 52
|
||||||
|
}
|
||||||
@@ -63,6 +63,8 @@ export default function AdminSequenceInscrits() {
|
|||||||
const updateStatutMutation = trpc.inscriptions.updateStatut.useMutation({
|
const updateStatutMutation = trpc.inscriptions.updateStatut.useMutation({
|
||||||
onSuccess: () => {
|
onSuccess: () => {
|
||||||
utils.inscriptions.listBySequence.invalidate({ sequenceId });
|
utils.inscriptions.listBySequence.invalidate({ sequenceId });
|
||||||
|
utils.sequences.getById.invalidate({ id: sequenceId });
|
||||||
|
utils.sequences.list.invalidate();
|
||||||
toast.success("Statut mis à jour avec succès");
|
toast.success("Statut mis à jour avec succès");
|
||||||
},
|
},
|
||||||
onError: (error) => {
|
onError: (error) => {
|
||||||
|
|||||||
@@ -278,7 +278,8 @@ export const appRouter = router({
|
|||||||
const seq = await db.getSequenceById(input.id);
|
const seq = await db.getSequenceById(input.id);
|
||||||
if (!seq) return null;
|
if (!seq) return null;
|
||||||
const dates = await db.getDatesBySequence(input.id);
|
const dates = await db.getDatesBySequence(input.id);
|
||||||
return { ...seq, dates };
|
const nbInscrits = await db.countInscriptionsBySequence(input.id, 'confirmee');
|
||||||
|
return { ...seq, dates, nbInscrits };
|
||||||
}),
|
}),
|
||||||
|
|
||||||
create: adminProcedure.input(z.object({
|
create: adminProcedure.input(z.object({
|
||||||
|
|||||||
6
todo.md
6
todo.md
@@ -412,3 +412,9 @@
|
|||||||
- [x] Modifier l'initialisation pour ouvrir uniquement TABLEAU DE BORD par défaut
|
- [x] Modifier l'initialisation pour ouvrir uniquement TABLEAU DE BORD par défaut
|
||||||
- [x] Fermer GESTION, CONFIGURATION, ANALYSES par défaut
|
- [x] Fermer GESTION, CONFIGURATION, ANALYSES par défaut
|
||||||
- [x] Tester le comportement à l'ouverture
|
- [x] Tester le comportement à l'ouverture
|
||||||
|
|
||||||
|
## Bug compteur d'inscrits après suppression
|
||||||
|
- [x] Analyser le code de suppression d'inscription
|
||||||
|
- [x] Identifier pourquoi le compteur ne se met pas à jour
|
||||||
|
- [x] Corriger le bug de rafraîchissement du compteur
|
||||||
|
- [x] Tester la suppression d'un apprenant et vérifier le compteur
|
||||||
|
|||||||
Reference in New Issue
Block a user