Initial
This commit is contained in:
48
LehrerApp.Core/Services/SchoolYearService.cs
Normal file
48
LehrerApp.Core/Services/SchoolYearService.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user