Checkpoint: Corrections apportées à la gestion des séquences :

 Ajout du champ "Public cible" dans le dialogue de modification des séquences
- Le champ est maintenant visible et modifiable lors de l'édition d'une séquence
- Support complet de l'option "Tous" ajoutée précédemment

 Affichage du nombre d'inscrits dans la colonne capacité
- Format : "nombre d'inscrits / capacité" (ex: "5 / 12")
- Mise à jour de la procédure sequences.list pour inclure le comptage des inscriptions confirmées
- Mise à jour du schéma de validation pour inclure "tous" dans publicCible

Les deux problèmes signalés sont maintenant corrigés et l'application est prête à l'emploi.
This commit is contained in:
Manus Sandbox
2025-11-19 09:19:47 -05:00
parent b72a9c471c
commit b9907f9cca
3 changed files with 31 additions and 5 deletions

View File

@@ -646,7 +646,7 @@ export default function AdminSequences() {
{getPublicCibleLabel(sequence.publicCible)}
</span>
</TableCell>
<TableCell>{sequence.capaciteMax}</TableCell>
<TableCell>{sequence.nbInscrits || 0} / {sequence.capaciteMax}</TableCell>
<TableCell>
<span className={`inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${getStatutBadge(sequence.statut)}`}>
{sequence.statut}
@@ -737,6 +737,26 @@ export default function AdminSequences() {
/>
</div>
<div className="space-y-2">
<Label htmlFor="edit-publicCible">Public cible *</Label>
<Select
value={formData.publicCible}
onValueChange={(value: "directeur" | "chef_service" | "tous" | "autre") => setFormData({ ...formData, publicCible: value })}
>
<SelectTrigger id="edit-publicCible">
<SelectValue placeholder="Sélectionner le public cible" />
</SelectTrigger>
<SelectContent>
<SelectItem value="directeur">Directeur</SelectItem>
<SelectItem value="chef_service">Chef de service</SelectItem>
<SelectItem value="tous">Tous</SelectItem>
<SelectItem value="autre">Autre</SelectItem>
</SelectContent>
</Select>
</div>
</div>
<div className="grid grid-cols-2 gap-4">
<div className="space-y-2">
<Label htmlFor="edit-capaciteMax">Capacité maximale *</Label>
<Input

View File

@@ -120,11 +120,12 @@ export const appRouter = router({
sequences: router({
list: adminProcedure.query(async () => {
const seqs = await db.getSequences();
// Récupérer les dates pour chaque séquence
// Récupérer les dates et le nombre d'inscrits pour chaque séquence
const sequencesAvecDates = await Promise.all(
seqs.map(async (seq) => {
const dates = await db.getDatesBySequence(seq.id);
return { ...seq, dates };
const nbInscrits = await db.countInscriptionsBySequence(seq.id, 'confirmee');
return { ...seq, dates, nbInscrits };
})
);
return sequencesAvecDates;
@@ -154,7 +155,7 @@ export const appRouter = router({
formationId: z.number(),
nom: z.string().min(1),
lieu: z.string().min(1),
publicCible: z.enum(["directeur", "chef_service", "autre"]),
publicCible: z.enum(["directeur", "chef_service", "tous", "autre"]),
capaciteMax: z.number().default(12),
dateBlocage: z.string(),
statut: z.enum(["ouverte", "bloquee", "terminee"]).optional(),
@@ -193,7 +194,7 @@ export const appRouter = router({
formationId: z.number(),
nom: z.string().min(1),
lieu: z.string().min(1),
publicCible: z.enum(["directeur", "chef_service", "autre"]),
publicCible: z.enum(["directeur", "chef_service", "tous", "autre"]),
capaciteMax: z.number(),
dateBlocage: z.string(),
statut: z.enum(["ouverte", "bloquee", "terminee"]),

View File

@@ -257,3 +257,8 @@
- [x] Mettre à jour AdminRapportPublicCible.tsx (labels et badges)
- [x] Mettre à jour Inscription.tsx (mapping, affichage, logique d'alerte)
- [x] Tester l'affichage dans le formulaire de création/édition de séquence
## Corrections demandées - Gestion des séquences
- [x] Ajouter le champ "Public cible" dans le dialogue de modification des séquences
- [x] Afficher "nombre d'inscrits / capacité" dans la colonne capacité du tableau des séquences