Refactor Api-Client
Add Exceptionhandler, AlertService JSON-Converter AppSettings via DI Reformat Code
This commit is contained in:
@@ -1,38 +1,58 @@
|
||||
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 IHoursRepository _repo;
|
||||
private readonly IHoursValidator _validator;
|
||||
|
||||
public HoursService(IHoursRepository repo) {
|
||||
_repo = repo;
|
||||
}
|
||||
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}";
|
||||
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);
|
||||
return (baseRes.hour, baseRes.settings);
|
||||
|
||||
// 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> 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<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<Settings> GetSettingsAsync() => await _repo.LoadSettings();
|
||||
|
||||
public async Task<DayTime> GetEntryAsync(int id) => await _repo.LoadEntry(id);
|
||||
public async Task<DayTime> GetEntryAsync(int id) => await _repo.LoadEntry(id);
|
||||
|
||||
public async Task<DayTime> SaveEntryAsync(DayTime stunde) => await _repo.SaveEntry(stunde);
|
||||
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);
|
||||
}
|
||||
public async Task DeleteEntryAsync(DayTime stunde) => await _repo.DeleteEntry(stunde);
|
||||
}
|
||||
Reference in New Issue
Block a user