Unterrichtsplanung: Serienerzeugung, Stundenraster, Aufsichten & Vertretung (Kapitel 4.2/4.3 Nachtrag)

Stunden serienweise aus dem Stundenplan erzeugen (4.2.5); Stundenraster
(Uhrzeiten je Stunde) in den Einstellungen mit Zeitbedarf-Rückmeldung im
Verlaufsplan-Editor; wiederkehrende Pausenaufsicht; neuer "Vertretung
eintragen"-Dialog für einmalige Vertretungsaufsicht, Vertretungsstunde,
Sondereinsätze (Ausflüge, Berufsmessen) und schlichten Stundenausfall.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-15 21:59:07 +02:00
co-authored by Claude Sonnet 5
parent 99b2de6519
commit d6dee72acc
30 changed files with 2743 additions and 48 deletions
+26
View File
@@ -243,6 +243,32 @@ public class FakeSchoolHolidays : ISchoolHolidayRepository
public void Delete(Guid id) => _all.RemoveAll(h => h.Id == id);
}
public class FakeSupervisionDuties : ISupervisionDutyRepository
{
private readonly List<SupervisionDuty> _all = [];
public void Add(SupervisionDuty d) => _all.Add(d);
public List<SupervisionDuty> GetAll() => _all.ToList();
public void Save(SupervisionDuty duty)
{
var occupied = _all.FirstOrDefault(d => d.Weekday == duty.Weekday && d.AfterPeriod == duty.AfterPeriod);
if (occupied is not null && occupied.Id != duty.Id)
throw new InvalidOperationException("Für diese Pause ist bereits eine Aufsicht eingetragen.");
_all.RemoveAll(d => d.Id == duty.Id);
_all.Add(duty);
}
public void Delete(Guid id) => _all.RemoveAll(d => d.Id == id);
}
public class FakeSubstitutionEntries : ISubstitutionEntryRepository
{
private readonly List<SubstitutionEntry> _all = [];
public void Add(SubstitutionEntry e) => _all.Add(e);
public List<SubstitutionEntry> GetAll() => _all.ToList();
public List<SubstitutionEntry> GetByDate(DateOnly date) => _all.Where(e => e.Date == date).ToList();
public void Save(SubstitutionEntry entry) { _all.RemoveAll(e => e.Id == entry.Id); _all.Add(entry); }
public void Delete(Guid id) => _all.RemoveAll(e => e.Id == id);
}
public class FakeReportGrades : IReportGradeRepository
{
private readonly List<ReportGrade> _all = [];