namespace LehrerApp.Core.Services; public class SchoolYearService { /// Nur für Tests — Standard ist das heutige Datum. public string CurrentSchoolYear(DateOnly? today = null) => FormatSchoolYear(StartYearFor(today ?? DateOnly.FromDateTime(DateTime.Today))); public string FormatSchoolYear(int startYear) => $"{startYear}/{(startYear + 1) % 100:D2}"; public DateOnly SchoolYearStart(string sy) => new(int.Parse(sy.Split('/')[0]), 8, 1); public DateOnly SchoolYearEnd(string sy) => new(int.Parse(sy.Split('/')[0]) + 1, 7, 31); /// Nur für Tests — Standard ist das heutige Datum. public List RecentSchoolYears(int count = 5, DateOnly? today = null) { var cur = StartYearFor(today ?? DateOnly.FromDateTime(DateTime.Today)); return Enumerable.Range(0, count).Select(i => FormatSchoolYear(cur - i)).ToList(); } // Schuljahreswechsel liegt am 1. August: ab diesem Tag zählt das neue Schuljahr. private static int StartYearFor(DateOnly date) => date.Month >= 8 ? date.Year : date.Year - 1; }