Load settings with `GetEntryWithSettingsAsync`, update `Hours` and `ViewModels`.
67 lines
2.7 KiB
C#
67 lines
2.7 KiB
C#
using Jugenddienst_Stunden.Interfaces;
|
|
using Jugenddienst_Stunden.Types;
|
|
using Jugenddienst_Stunden.Validators;
|
|
|
|
namespace Jugenddienst_Stunden.Services;
|
|
|
|
internal class HoursService : IHoursService {
|
|
private readonly IHoursRepository _repo;
|
|
private readonly IHoursValidator _validator;
|
|
|
|
public HoursService(IHoursRepository repo, IHoursValidator validator) {
|
|
_repo = repo;
|
|
_validator = validator;
|
|
}
|
|
|
|
public async Task<(Hours hours, Settings settings)> GetMonthSummaryAsync(DateTime monthDate) {
|
|
string q = $"hours=&year={monthDate:yyyy}&month={monthDate:MM}";
|
|
var baseRes = await _repo.LoadBase(q);
|
|
|
|
// Fallbacks, da einige Endpoints 'settings' nicht mitsenden bzw. 'hour' auslassen können
|
|
var settings = baseRes.settings ?? await _repo.LoadSettings();
|
|
var hours = baseRes.hour ?? new Hours {
|
|
daytime = new List<DayTime>(),
|
|
Nominal_day_api = new List<NominalDay>(),
|
|
Nominal_week_api = new List<NominalWeek>(),
|
|
zeit_total_daily_api = new List<TimeDay>(),
|
|
Projekte = new System.Collections.ObjectModel.Collection<Projekt>(),
|
|
Gemeinden = new System.Collections.ObjectModel.Collection<Gemeinde>(),
|
|
Freistellungen = new System.Collections.ObjectModel.Collection<Freistellung>()
|
|
};
|
|
|
|
return (hours, settings);
|
|
}
|
|
|
|
public async Task<(List<DayTime> dayTimes, Settings settings)> GetDayWithSettingsAsync(DateTime date) {
|
|
string q = $"date={date:yyyy-MM-dd}";
|
|
var baseRes = await _repo.LoadBase(q);
|
|
return (baseRes.daytimes ?? new List<DayTime>(), baseRes.settings);
|
|
}
|
|
|
|
public async Task<List<DayTime>> GetDayRangeAsync(DateTime from, DateTime to) {
|
|
string q = $"date={from:yyyy-MM-dd}&tilldate={to:yyyy-MM-dd}";
|
|
var baseRes = await _repo.LoadBase(q);
|
|
return baseRes.daytimes ?? new List<DayTime>();
|
|
}
|
|
|
|
public async Task<Settings> GetSettingsAsync() => await _repo.LoadSettings();
|
|
|
|
public async Task<DayTime> GetEntryAsync(int id) => await _repo.LoadEntry(id);
|
|
|
|
public async Task<(DayTime dayTime, Settings settings, List<DayTime> existingDayTimes)> GetEntryWithSettingsAsync(int id) {
|
|
//var stunde = await _repo.LoadEntry(id);
|
|
//var (existingDayTimes, settings) = await GetDayWithSettingsAsync(stunde.Day);
|
|
//return (stunde, settings, existingDayTimes);
|
|
string q = $"id={id}";
|
|
var baseRes = await _repo.LoadBase(q);
|
|
return (baseRes.daytime ?? new DayTime(), baseRes.settings, baseRes.daytimes ?? new List<DayTime>());
|
|
}
|
|
|
|
public async Task<DayTime> SaveEntryAsync(DayTime stunde) {
|
|
var settings = await _repo.LoadSettings();
|
|
_validator.Validate(stunde, settings);
|
|
return await _repo.SaveEntry(stunde);
|
|
}
|
|
|
|
public async Task DeleteEntryAsync(DayTime stunde) => await _repo.DeleteEntry(stunde);
|
|
} |