Refactor: Remove GlobalVar and replace with IAppSettings; restructure affected infrastructure, services, and view models for dependency injection.
This commit is contained in:
@@ -19,13 +19,13 @@ namespace Jugenddienst_Stunden.ViewModels;
|
||||
/// </summary>
|
||||
public partial class StundeViewModel : ObservableObject, IQueryAttributable {
|
||||
private readonly IHoursService _hoursService;
|
||||
private readonly IAppSettings _settings;
|
||||
private readonly IAlertService _alertService;
|
||||
|
||||
public int Id { get; set; }
|
||||
public string Title { get; set; } = "Eintrag bearbeiten";
|
||||
public string SubTitle { get; set; } = DateTime.Today.ToString("dddd, d. MMMM yyyy");
|
||||
|
||||
//private HoursBase HoursBase = new HoursBase();
|
||||
internal Settings Settings = new Settings();
|
||||
|
||||
public event EventHandler<string> AlertEvent;
|
||||
public event EventHandler<string> InfoEvent;
|
||||
@@ -77,36 +77,19 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
|
||||
//public ICommand LoadDataCommand { get; private set; }
|
||||
|
||||
|
||||
public StundeViewModel(IHoursService hoursService, IAlertService alertService) {
|
||||
public StundeViewModel(IHoursService hoursService, IAlertService alertService, IAppSettings settings) {
|
||||
_hoursService = hoursService;
|
||||
_settings = settings;
|
||||
_alertService = alertService;
|
||||
SaveCommand = new AsyncRelayCommand(Save);
|
||||
DeleteConfirmCommand = new Command(async () => await DeleteConfirm());
|
||||
|
||||
if (alertService is not null) {
|
||||
alertService.AlertRaised += (s, msg) => AlertEvent?.Invoke(this, msg);
|
||||
}
|
||||
|
||||
//LoadSettingsAsync();
|
||||
_alertService.AlertRaised += (s, msg) => AlertEvent?.Invoke(this, msg);
|
||||
}
|
||||
|
||||
private async void LoadSettingsAsync() {
|
||||
try {
|
||||
Settings = await _hoursService.GetSettingsAsync();
|
||||
GlobalVar.Settings = Settings;
|
||||
|
||||
OptionsGemeinde = Settings.Gemeinden;
|
||||
OptionsProjekt = Settings.Projekte;
|
||||
OptionsFreistellung = Settings.Freistellungen;
|
||||
|
||||
GemeindeAktivSet = Settings.GemeindeAktivSet;
|
||||
ProjektAktivSet = Settings.ProjektAktivSet;
|
||||
} catch (Exception e) {
|
||||
AlertEvent?.Invoke(this, e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private async void UpdateSettingsAsync(Settings settings) {
|
||||
GlobalVar.Settings = settings;
|
||||
private void UpdateSettings(Settings settings) {
|
||||
_settings.Settings = settings;
|
||||
OptionsGemeinde = settings.Gemeinden;
|
||||
OptionsProjekt = settings.Projekte;
|
||||
OptionsFreistellung = settings.Freistellungen;
|
||||
@@ -126,7 +109,7 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
|
||||
}
|
||||
|
||||
//Projekt ist ein Pflichtfeld
|
||||
if (Settings.ProjektAktivSet) {
|
||||
if (_settings.Settings.ProjektAktivSet) {
|
||||
var projektId = DayTime.ProjektAktiv?.Id ?? 0;
|
||||
if (projektId == 0) {
|
||||
proceed = false;
|
||||
@@ -135,7 +118,7 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
|
||||
}
|
||||
|
||||
//Gemeinde ist ein Pflichtfeld
|
||||
if (Settings.GemeindeAktivSet) {
|
||||
if (_settings.Settings.GemeindeAktivSet) {
|
||||
var gemeindeId = DayTime.GemeindeAktiv?.Id ?? 0;
|
||||
if (gemeindeId == 0) {
|
||||
proceed = false;
|
||||
@@ -200,17 +183,18 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
|
||||
//DateTime heute = DateTime.Now;
|
||||
try {
|
||||
//var entry = await _hoursService.GetEntryAsync(Convert.ToInt32(query["load"]));
|
||||
var (entry, settings, daytimes) = await _hoursService.GetEntryWithSettingsAsync(Convert.ToInt32(query["load"]));
|
||||
UpdateSettingsAsync(settings);
|
||||
var (entry, settings, daytimes) =
|
||||
await _hoursService.GetEntryWithSettingsAsync(Convert.ToInt32(query["load"]));
|
||||
UpdateSettings(settings);
|
||||
|
||||
DayTime = entry;
|
||||
DayTime.TimeSpanVon = entry.Begin.ToTimeSpan();
|
||||
DayTime.TimeSpanBis = entry.End.ToTimeSpan();
|
||||
|
||||
DayTime.GemeindeAktiv = OptionsGemeinde.FirstOrDefault(Gemeinde => Gemeinde.Id == DayTime.Gemeinde) ??
|
||||
new Gemeinde();
|
||||
new Gemeinde();
|
||||
DayTime.ProjektAktiv = OptionsProjekt.FirstOrDefault(Projekt => Projekt.Id == DayTime.Projekt) ??
|
||||
new Projekt();
|
||||
new Projekt();
|
||||
DayTime.FreistellungAktiv =
|
||||
OptionsFreistellung.FirstOrDefault(Freistellung => Freistellung.Id == DayTime.Free) ??
|
||||
new Freistellung();
|
||||
@@ -229,11 +213,6 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
|
||||
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));
|
||||
}
|
||||
|
||||
//OnPropertyChanged(nameof(DayTime));
|
||||
@@ -246,7 +225,7 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
|
||||
//Bei neuem Eintrag die vorhandenen des gleichen Tages anzeigen
|
||||
try {
|
||||
var (list, settings) = await _hoursService.GetDayWithSettingsAsync(_date);
|
||||
UpdateSettingsAsync(settings);
|
||||
UpdateSettings(settings);
|
||||
DayTimes = list;
|
||||
OnPropertyChanged(nameof(DayTimes));
|
||||
} catch (Exception) {
|
||||
@@ -257,7 +236,7 @@ public partial class StundeViewModel : ObservableObject, IQueryAttributable {
|
||||
} finally {
|
||||
DayTime = new DayTime();
|
||||
DayTime.Day = _date;
|
||||
DayTime.EmployeeId = GlobalVar.EmployeeId;
|
||||
DayTime.EmployeeId = _settings.EmployeeId;
|
||||
DayTime.GemeindeAktiv = new Gemeinde();
|
||||
DayTime.ProjektAktiv = new Projekt();
|
||||
DayTime.FreistellungAktiv = new Freistellung();
|
||||
|
||||
Reference in New Issue
Block a user