using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using Jugenddienst_Stunden.Models; using Jugenddienst_Stunden.Types; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Input; namespace Jugenddienst_Stunden.ViewModels { internal class StundeViewModel : ObservableObject, IQueryAttributable { public int id { get; set; } private DayTime _stunde; public DayTime Stunde { get => _stunde; } public ObservableCollection OptionsGemeinde { get; private set; } public ObservableCollection OptionsProjekt { get; private set; } public ObservableCollection OptionsFreistellung { get; } //public TimeSpan Von { // get => _stunde.begin.ToTimeSpan(); // set { // if (_stunde.begin.ToTimeSpan() != value) { // _stunde.begin = TimeOnly.FromTimeSpan(value); // OnPropertyChanged(nameof(Von)); // } // } //} //public TimeSpan Bis { // get => _stunde.end.ToTimeSpan(); // set { // if (_stunde.end.ToTimeSpan() != value) { // _stunde.end = TimeOnly.FromTimeSpan(value); // OnPropertyChanged(nameof(Bis)); // } // } //} public string SubTitle { get; set; } = DateTime.Today.ToString("dddd, d. MMM. yyyy"); public int Identifier => (int)_stunde.id; public ICommand SaveCommand { get; private set; } public ICommand DeleteCommand { get; private set; } public StundeViewModel() { _stunde = new DayTime(); //SaveCommand = new AsyncRelayCommand(Save); //DeleteCommand = new AsyncRelayCommand(Delete); OptionsFreistellung = new ObservableCollection { "Urlaub", "Krankheit", "Elternzeit" }; } public StundeViewModel(DayTime stunde) { _stunde = stunde; //SaveCommand = new AsyncRelayCommand(Save); //DeleteCommand = new AsyncRelayCommand(Delete); } //private async Task Save() { // _stunde.Date = DateTime.Now; // _stunde.Save(); // await Shell.Current.GoToAsync($"..?saved={_stunde.Filename}"); //} //private async Task Delete() { // _stunde.Delete(); // await Shell.Current.GoToAsync($"..?deleted={_stunde.Filename}"); //} public event EventHandler AlertEvent; public event EventHandler ErrorEvent; async void IQueryAttributable.ApplyQueryAttributes(IDictionary query) { if (query.ContainsKey("load")) { //DateTime heute = DateTime.Now; _stunde = await Models.Stunde.LoadEntry(Convert.ToInt32(query["load"])); if (String.IsNullOrEmpty(_stunde.description)) { AlertEvent?.Invoke(this, "Eintrag hat keine Daten zurückgegeben"); } SubTitle = _stunde.day.ToString("dddd, d. MMM. yyyy"); OptionsProjekt = new ObservableCollection(_stunde.Projekte); OptionsGemeinde = new ObservableCollection(_stunde.Gemeinden); OnPropertyChanged(nameof(OptionsGemeinde)); OnPropertyChanged(nameof(OptionsProjekt)); //OptionsProjekt.FirstOrDefault(x => x.Id == _stunde.projekt); SelectedOptionGemeinde = OptionsGemeinde.FirstOrDefault(item => item.Id == _stunde.gemeinde) ?? new Gemeinde(); OnPropertyChanged(nameof(SelectedOptionGemeinde)); SelectedOptionProjekt = OptionsProjekt.FirstOrDefault(Projekt => Projekt.Id == _stunde.projekt) ?? new Projekt(); OnPropertyChanged(nameof(SelectedOptionProjekt)); OnPropertyChanged(nameof(Stunde)); OnPropertyChanged(nameof(SubTitle)); } } private Gemeinde _selectedGemeinde; public Gemeinde SelectedOptionGemeinde { get => _selectedGemeinde; set { if (_selectedGemeinde != value) { _selectedGemeinde = value; OnPropertyChanged(nameof(SelectedOptionGemeinde)); } } } private Projekt _selectedProjekt; public Projekt SelectedOptionProjekt { get => _selectedProjekt; set { if (_selectedProjekt != value) { _selectedProjekt = value; //new AsyncRelayCommand(LoadData); OnPropertyChanged(nameof(SelectedOptionProjekt)); } } } private string selectedFreistellung; public string SelectedOptionFreistellung { get => selectedFreistellung; set { if (selectedFreistellung != value) { selectedFreistellung = value; //new AsyncRelayCommand(LoadData); OnPropertyChanged(nameof(SelectedOptionFreistellung)); } } } } }