Login auch im Testmodus
Bei falschem Token nur eine Meldung
Exception bei falschem Token während Loadsettings abfangen
This commit is contained in:
2024-10-21 18:55:40 +02:00
parent 959804eb9d
commit 550c131771
7 changed files with 117 additions and 103 deletions

View File

@@ -2,11 +2,8 @@
using CommunityToolkit.Mvvm.Input;
using Jugenddienst_Stunden.Models;
using Jugenddienst_Stunden.Types;
using Newtonsoft.Json.Linq;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
using System.Windows.Input;
@@ -151,13 +148,14 @@ internal class StundenViewModel : ObservableObject, IQueryAttributable, INotifyP
/// </summary>
public bool ProjektAktivSet { get; set; }
private bool doContinue = true;
/// <summary>
/// CTOR
/// </summary>
public StundenViewModel() {
_hour = new Hours();
//LoadSettingsAsync();
LoadDataCommand = new AsyncRelayCommand(LoadData);
NewEntryCommand = new AsyncRelayCommand(NewEntryAsync);
@@ -166,17 +164,23 @@ internal class StundenViewModel : ObservableObject, IQueryAttributable, INotifyP
RefreshCommand = new Command(async () => await RefreshItemsAsync());
Task task = LoadDay(DateTime.Today);
LoadSettingsAsync();
}
private async void LoadSettingsAsync() {
Settings = await HoursBase.LoadSettings();
private async Task LoadSettingsAsync() {
try {
Settings = await HoursBase.LoadSettings();
GemeindeAktivSet = Settings.GemeindeAktivSet;
ProjektAktivSet = Settings.ProjektAktivSet;
GemeindeAktivSet = Settings.GemeindeAktivSet;
ProjektAktivSet = Settings.ProjektAktivSet;
OnPropertyChanged(nameof(GemeindeAktivSet));
OnPropertyChanged(nameof(ProjektAktivSet));
OnPropertyChanged(nameof(GemeindeAktivSet));
OnPropertyChanged(nameof(ProjektAktivSet));
doContinue = true;
} catch (Exception e) {
doContinue = false;
AlertEvent?.Invoke(this, e.Message);
}
}
@@ -222,43 +226,42 @@ internal class StundenViewModel : ObservableObject, IQueryAttributable, INotifyP
/// </summary>
public async Task LoadDay(DateTime date) {
DayTotal = new TimeOnly(0);
LoadSettingsAsync();
try {
DayTimes = await HoursBase.LoadDay(date);
await LoadSettingsAsync();
//if (doContinue) {
try {
DayTimes = await HoursBase.LoadDay(date);
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;
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));
}
_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));
}
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));
}
//}
}
async void IQueryAttributable.ApplyQueryAttributes(IDictionary<string, object> query) {
if (query.ContainsKey("date")) {
await LoadDay(Convert.ToDateTime(query["date"]));