Vorbereitungen für 1.0.6

Beachte die Einstellung ob Projekte und Gemeinden aktiv sind.
Verbiete Änderungen an der Freistellung, wenn sie genehmigt wurde.
Vereinfache das Speichern der Einstellungen
Bessere Fehlerbehandlung, einheitlichere API
This commit is contained in:
2024-10-22 17:42:35 +02:00
parent ff145b2c7f
commit 45c53c85ce
11 changed files with 350 additions and 293 deletions

View File

@@ -25,16 +25,13 @@ internal class StundenViewModel : ObservableObject, IQueryAttributable, INotifyP
public event EventHandler<string> AlertEvent;
public event EventHandler<string> InfoEvent;
private HoursBase HoursBase = new HoursBase();
//private HoursBase HoursBase = new HoursBase();
internal Settings Settings = new Settings();
public TimeOnly Sollstunden { get; set; }
private string _title = HoursBase.name + " " + HoursBase.surname;
public string Title {
get => _title;
set => SetProperty(ref _title, value);
}
public string Title { get; set; } = GlobalVar.Name + " " + GlobalVar.Surname;
private Hours _hour;
public Hours Hours {
@@ -150,13 +147,15 @@ internal class StundenViewModel : ObservableObject, IQueryAttributable, INotifyP
private bool doContinue = true;
/// <summary>
/// CTOR
/// </summary>
public StundenViewModel() {
_hour = new Hours();
//LoadSettingsAsync();
HoursBase.tokendata = new TokenData(HoursBase.apiKey);
//HoursBase.tokendata = new TokenData(HoursBase.apiKey);
LoadDataCommand = new AsyncRelayCommand(LoadData);
NewEntryCommand = new AsyncRelayCommand(NewEntryAsync);
SelectEntryCommand = new AsyncRelayCommand<DayTime>(SelectEntryAsync);
@@ -167,6 +166,7 @@ internal class StundenViewModel : ObservableObject, IQueryAttributable, INotifyP
}
private async Task LoadSettingsAsync() {
try {
Settings = await HoursBase.LoadSettings();
@@ -226,37 +226,46 @@ internal class StundenViewModel : ObservableObject, IQueryAttributable, INotifyP
/// </summary>
public async Task LoadDay(DateTime date) {
DayTotal = new TimeOnly(0);
await LoadSettingsAsync();
//await LoadSettingsAsync();
//if (doContinue) {
try {
DayTimes = await HoursBase.LoadDay(date);
try {
//_dayTimes = await HoursBase.LoadDay(date);
BaseResponse dat = await HoursBase.LoadBase("date=" + date.ToString("yyyy-MM-dd"));
_dayTimes = dat.daytimes;
Settings = dat.settings;
GemeindeAktivSet = Settings.GemeindeAktivSet;
ProjektAktivSet = Settings.ProjektAktivSet;
List<Sollstunden> _soll;
TimeSpan span = TimeSpan.Zero;
bool merker = false;
foreach (DayTime dt in DayTimes) {
span += dt.End - dt.Begin;
//Nachtstunden dazurechnen
if (dt.Night.Ticks > 0 && !merker) {
span += dt.Night.ToTimeSpan() * .5;
merker = true;
}
_soll = Settings.Nominal.Where(w => w.Timetable == dt.TimeTable && w.Wochentag == dt.Wday).ToList();
if (_soll.Count > 0)
Sollstunden = TimeOnly.FromTimeSpan(TimeSpan.FromHours(_soll[0].Zeit));
OnPropertyChanged(nameof(GemeindeAktivSet));
OnPropertyChanged(nameof(ProjektAktivSet));
List<Sollstunden> _soll;
TimeSpan span = TimeSpan.Zero;
bool merker = false;
foreach (DayTime dt in _dayTimes) {
span += dt.End - dt.Begin;
//Nachtstunden dazurechnen
if (dt.Night.Ticks > 0 && !merker) {
span += dt.Night.ToTimeSpan() * .5;
merker = true;
}
DayTotal = TimeOnly.FromTimeSpan(span);
} catch (Exception e) {
DayTimes = new List<DayTime>();
//TODO: hier könnte auch ein Fehler kommen, dann wäre InfoEvent falsch.
InfoEvent?.Invoke(this, e.Message);
} finally {
OnPropertyChanged(nameof(DayTotal));
OnPropertyChanged(nameof(Sollstunden));
//OnPropertyChanged(nameof(DayTimes));
_soll = Settings.Nominal.Where(w => w.Timetable == dt.TimeTable && w.Wochentag == dt.Wday).ToList();
if (_soll.Count > 0)
Sollstunden = TimeOnly.FromTimeSpan(TimeSpan.FromHours(_soll[0].Zeit));
}
DayTotal = TimeOnly.FromTimeSpan(span);
} catch (Exception e) {
_dayTimes = new List<DayTime>();
//TODO: hier könnte auch ein Fehler kommen, dann wäre InfoEvent falsch.
InfoEvent?.Invoke(this, e.Message);
} finally {
OnPropertyChanged(nameof(DayTotal));
OnPropertyChanged(nameof(Sollstunden));
OnPropertyChanged(nameof(DayTimes));
}
//}
}