49 lines
1.4 KiB
C#
49 lines
1.4 KiB
C#
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();
|
|
}
|
|
}
|