fix: Filtrer enseignants et matières par affectation lors de la création de créneaux

Quand une classe n'avait aucune affectation enseignant-matière, les
selects de la modale de création de créneau affichaient tous les
enseignants et toutes les matières au lieu d'une liste vide. Cela
permettait de soumettre des combinaisons invalides, produisant un
message d'erreur avec des UUID incompréhensibles.

Les dropdowns n'affichent plus que les enseignants/matières effectivement
affectés à la classe sélectionnée. Le message d'erreur backend est
reformulé sans UUID pour le cas où la validation frontend serait
contournée.
This commit is contained in:
2026-03-06 12:07:28 +01:00
parent ba80e8cb57
commit 39f8650b92
6 changed files with 211 additions and 87 deletions

View File

@@ -142,7 +142,6 @@
if (!classId) return subjects;
const filtered = assignments.filter((a) => a.classId === classId);
const subjectIds = new Set(filtered.map((a) => a.subjectId));
if (subjectIds.size === 0) return subjects;
return subjects.filter((s) => subjectIds.has(s.id));
});
@@ -154,7 +153,6 @@
? assignments.filter((a) => a.classId === classId && a.subjectId === formSubjectId)
: assignments.filter((a) => a.classId === classId);
const teacherIds = new Set(filtered.map((a) => a.teacherId));
if (teacherIds.size === 0) return teachers;
return teachers.filter((t) => teacherIds.has(t.id));
});
@@ -915,16 +913,6 @@
</select>
</div>
<div class="form-group">
<label for="slot-teacher">Enseignant *</label>
<select id="slot-teacher" bind:value={formTeacherId} required>
<option value="">-- Sélectionner --</option>
{#each availableTeachers as teacher (teacher.id)}
<option value={teacher.id}>{teacher.firstName} {teacher.lastName}</option>
{/each}
</select>
</div>
<div class="form-group">
<label for="slot-subject">Matière *</label>
<select id="slot-subject" bind:value={formSubjectId} required>
@@ -935,6 +923,16 @@
</select>
</div>
<div class="form-group">
<label for="slot-teacher">Enseignant *</label>
<select id="slot-teacher" bind:value={formTeacherId} required>
<option value="">-- Sélectionner --</option>
{#each availableTeachers as teacher (teacher.id)}
<option value={teacher.id}>{teacher.firstName} {teacher.lastName}</option>
{/each}
</select>
</div>
<div class="form-group">
<label for="slot-day">Jour *</label>
<select id="slot-day" bind:value={formDayOfWeek} required>