1.0.7
Bessere Trennung manueller / automatischer Login Umstellung auf Sekunden wegen aktualisierter Hauptanwendung Umstellung auf Toasts bei Informationsmeldungen Abstände und Sichtbarkeiten vereinheitlicht Upgrade auf .NET9
This commit is contained in:
@@ -22,6 +22,8 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
|
||||
public event EventHandler<string> AlertEvent;
|
||||
public event EventHandler<string> InfoEvent;
|
||||
public event Func<string, string, Task<bool>> ConfirmEvent;
|
||||
//public event Func<string, string, string?, string?, Task<bool>> ConfirmEvent;
|
||||
//public event EventHandler<ConfirmEventArgs> ConfirmEvent;
|
||||
|
||||
/// <summary>
|
||||
/// Gemeinden für die Auswahlliste
|
||||
@@ -73,6 +75,7 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
|
||||
public ICommand DeleteConfirmCommand { get; private set; }
|
||||
//public ICommand LoadDataCommand { get; private set; }
|
||||
|
||||
|
||||
public StundeViewModel() {
|
||||
SaveCommand = new AsyncRelayCommand(Save);
|
||||
//DeleteCommand = new AsyncRelayCommand(Delete);
|
||||
@@ -95,7 +98,7 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
|
||||
|
||||
GemeindeAktivSet = Settings.GemeindeAktivSet;
|
||||
ProjektAktivSet = Settings.ProjektAktivSet;
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
AlertEvent?.Invoke(this, e.Message);
|
||||
}
|
||||
@@ -103,26 +106,40 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
|
||||
|
||||
async Task Save() {
|
||||
bool exceptionOccurred = false;
|
||||
try {
|
||||
await HoursBase.SaveEntry(DayTime);
|
||||
} catch (Exception e) {
|
||||
AlertEvent?.Invoke(this, e.Message);
|
||||
exceptionOccurred = true;
|
||||
bool proceed = true;
|
||||
if (DayTime.TimeSpanVon == DayTime.TimeSpanBis && DayTime.FreistellungAktiv.Name == null) {
|
||||
proceed = false;
|
||||
AlertEvent?.Invoke(this, "Uhrzeiten sollten unterschiedlich sein");
|
||||
}
|
||||
if (!exceptionOccurred) {
|
||||
if (DayTime.Id != null) {
|
||||
await Shell.Current.GoToAsync($"..?saved={DayTime.Id}");
|
||||
} else {
|
||||
await Shell.Current.GoToAsync($"..?date={DayTime.Day.ToString("yyyy-MM-dd")}");
|
||||
|
||||
if (proceed) {
|
||||
try {
|
||||
await HoursBase.SaveEntry(DayTime);
|
||||
} catch (Exception e) {
|
||||
AlertEvent?.Invoke(this, e.Message);
|
||||
exceptionOccurred = true;
|
||||
}
|
||||
if (!exceptionOccurred) {
|
||||
if (DayTime.Id != null) {
|
||||
await Shell.Current.GoToAsync($"..?saved={DayTime.Id}");
|
||||
} else {
|
||||
await Shell.Current.GoToAsync($"..?date={DayTime.Day.ToString("yyyy-MM-dd")}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Löschen ohne Bestätigung
|
||||
/// </summary>
|
||||
private async Task Delete() {
|
||||
await HoursBase.DeleteEntry(DayTime);
|
||||
await Shell.Current.GoToAsync($"..?date={DayTime.Day.ToString("yyyy-MM-dd")}");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Löschen mit Bestätigung
|
||||
/// </summary>
|
||||
private async Task DeleteConfirm() {
|
||||
if (ConfirmEvent != null) {
|
||||
bool answer = await ConfirmEvent.Invoke("Achtung", "Löschen kann nicht ungeschehen gemacht werden. Fortfahren?");
|
||||
@@ -140,7 +157,8 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
|
||||
/// Anwenden der Query-Parameter
|
||||
/// </summary>
|
||||
async void IQueryAttributable.ApplyQueryAttributes(IDictionary<string, object> query) {
|
||||
|
||||
//load beinhaltet die ID: Eintrag bearbeiten
|
||||
//date beinhaltet einen Tag: Neuen Eintrag erstellen
|
||||
if (query.ContainsKey("load")) {
|
||||
|
||||
//DateTime heute = DateTime.Now;
|
||||
@@ -154,7 +172,7 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
|
||||
DayTime = dat.daytime;
|
||||
DayTime.TimeSpanVon = dat.daytime.Begin.ToTimeSpan();
|
||||
DayTime.TimeSpanBis = dat.daytime.End.ToTimeSpan();
|
||||
|
||||
|
||||
OptionsGemeinde = dat.settings.Gemeinden ?? new List<Gemeinde>();
|
||||
OptionsProjekt = dat.settings.Projekte ?? new List<Projekt>();
|
||||
OptionsFreistellung = dat.settings.Freistellungen ?? new List<Freistellung>();
|
||||
@@ -162,7 +180,12 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
|
||||
DayTime.GemeindeAktiv = OptionsGemeinde.FirstOrDefault(Gemeinde => Gemeinde.Id == DayTime.Gemeinde) ?? new Gemeinde();
|
||||
DayTime.ProjektAktiv = OptionsProjekt.FirstOrDefault(Projekt => Projekt.Id == DayTime.Projekt) ?? new Projekt();
|
||||
DayTime.FreistellungAktiv = OptionsFreistellung.FirstOrDefault(Freistellung => Freistellung.Id == DayTime.Free) ?? new Freistellung();
|
||||
//OnPropertyChanged(nameof(DayTime));
|
||||
|
||||
//Evtl. noch die anderen Zeiten des gleichen Tages holen
|
||||
BaseResponse dat1 = await HoursBase.LoadBase("date=" + DayTime.Day.ToString("yyyy-MM-dd"));
|
||||
DayTimes = dat1.daytimes;
|
||||
OnPropertyChanged(nameof(DayTime));
|
||||
OnPropertyChanged(nameof(DayTimes));
|
||||
|
||||
} catch (Exception e) {
|
||||
AlertEvent?.Invoke(this, e.Message);
|
||||
@@ -171,7 +194,7 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
|
||||
}
|
||||
|
||||
if (System.String.IsNullOrEmpty(DayTime.Description)) {
|
||||
AlertEvent?.Invoke(this, "Eintrag hat keinen Beschreibungstext");
|
||||
InfoEvent?.Invoke(this, "Eintrag hat keinen Beschreibungstext");
|
||||
}
|
||||
SubTitle = DayTime.Day.ToString("dddd, d. MMMM yyyy");
|
||||
OnPropertyChanged(nameof(SubTitle));
|
||||
@@ -197,7 +220,7 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
|
||||
|
||||
GemeindeAktivSet = dat.settings.GemeindeAktivSet;
|
||||
ProjektAktivSet = dat.settings.ProjektAktivSet;
|
||||
|
||||
|
||||
} catch (Exception) {
|
||||
//Ein Tag ohne Einträge gibt eine Fehlermeldung,
|
||||
//die soll aber ignoriert werden, weil beim Neueintrag ist das ja Wurscht
|
||||
@@ -213,7 +236,7 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
|
||||
|
||||
SubTitle = _date.ToString("dddd, d. MMMM yyyy");
|
||||
FreistellungEnabled = true;
|
||||
|
||||
|
||||
OnPropertyChanged(nameof(SubTitle));
|
||||
//OnPropertyChanged(nameof(DayTime));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user