This commit is contained in:
2026-03-29 23:47:31 +02:00
commit 216d5d2280
75 changed files with 5702 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
namespace LehrerApp.Core.Services;
public class SchoolYearService
{
/// <summary>
/// Gibt das aktuelle Schuljahr zurück, z.B. "2024/25".
/// Schuljahr beginnt am 1. August.
/// </summary>
public string CurrentSchoolYear()
{
var now = DateTime.Today;
var startYear = now.Month >= 8 ? now.Year : now.Year - 1;
return FormatSchoolYear(startYear);
}
public string FormatSchoolYear(int startYear) =>
$"{startYear}/{(startYear + 1) % 100:D2}";
/// <summary>
/// Gibt den Beginn des Schuljahres zurück (1. August).
/// </summary>
public DateOnly SchoolYearStart(string schoolYear)
{
var year = int.Parse(schoolYear.Split('/')[0]);
return new DateOnly(year, 8, 1);
}
/// <summary>
/// Gibt das Ende des Schuljahres zurück (31. Juli des Folgejahres).
/// </summary>
public DateOnly SchoolYearEnd(string schoolYear)
{
var year = int.Parse(schoolYear.Split('/')[0]) + 1;
return new DateOnly(year, 7, 31);
}
/// <summary>
/// Gibt die letzten N Schuljahre zurück (für Dropdowns).
/// </summary>
public List<string> RecentSchoolYears(int count = 5)
{
var now = DateTime.Today;
var currentStart = now.Month >= 8 ? now.Year : now.Year - 1;
return Enumerable.Range(0, count)
.Select(i => FormatSchoolYear(currentStart - i))
.ToList();
}
}