Less requests to get Data faster

Load settings with `GetEntryWithSettingsAsync`, update `Hours` and `ViewModels`.
This commit is contained in:
2025-12-25 11:39:44 +01:00
parent 15856d0dd0
commit 656d39f43e
6 changed files with 69 additions and 28 deletions

View File

@@ -86,7 +86,7 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
alertService.AlertRaised += (s, msg) => AlertEvent?.Invoke(this, msg);
}
LoadSettingsAsync();
//LoadSettingsAsync();
}
private async void LoadSettingsAsync() {
@@ -105,6 +105,16 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
}
}
private async void UpdateSettingsAsync(Settings settings) {
GlobalVar.Settings = settings;
OptionsGemeinde = settings.Gemeinden;
OptionsProjekt = settings.Projekte;
OptionsFreistellung = settings.Freistellungen;
GemeindeAktivSet = settings.GemeindeAktivSet;
ProjektAktivSet = settings.ProjektAktivSet;
}
async Task Save() {
bool exceptionOccurred = false;
bool proceed = true;
@@ -185,7 +195,9 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
if (query.ContainsKey("load")) {
//DateTime heute = DateTime.Now;
try {
var entry = await _hoursService.GetEntryAsync(Convert.ToInt32(query["load"]));
//var entry = await _hoursService.GetEntryAsync(Convert.ToInt32(query["load"]));
var (entry, settings, daytimes) = await _hoursService.GetEntryWithSettingsAsync(Convert.ToInt32(query["load"]));
UpdateSettingsAsync(settings);
DayTime = entry;
DayTime.TimeSpanVon = entry.Begin.ToTimeSpan();
@@ -208,13 +220,16 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
OnPropertyChanged(nameof(SubTitle));
FreistellungEnabled = !DayTime.Approved;
DayTimes = daytimes;
OnPropertyChanged(nameof(DayTimes));
} catch (Exception e) {
AlertEvent?.Invoke(this, e.Message);
} finally {
//Evtl. noch die anderen Zeiten des gleichen Tages holen
var day = await _hoursService.GetDayWithSettingsAsync(DayTime.Day);
DayTimes = day.dayTimes;
OnPropertyChanged(nameof(DayTimes));
//var day = await _hoursService.GetDayWithSettingsAsync(DayTime.Day);
//DayTimes = day.dayTimes;
//OnPropertyChanged(nameof(DayTimes));
}
//OnPropertyChanged(nameof(DayTime));
@@ -227,15 +242,9 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
//Bei neuem Eintrag die vorhandenen des gleichen Tages anzeigen
try {
var (list, settings) = await _hoursService.GetDayWithSettingsAsync(_date);
GlobalVar.Settings = settings;
UpdateSettingsAsync(settings);
DayTimes = list;
OptionsGemeinde = settings.Gemeinden;
OptionsProjekt = settings.Projekte;
OptionsFreistellung = settings.Freistellungen;
GemeindeAktivSet = settings.GemeindeAktivSet;
ProjektAktivSet = settings.ProjektAktivSet;
} catch (Exception) {
//Ein Tag ohne Einträge gibt eine Fehlermeldung,
//die soll aber ignoriert werden, weil beim Neueintrag ist das ja Wurscht