From 2049a3a9812c25d85fdbf6c19a623912e2ecaaf4 Mon Sep 17 00:00:00 2001 From: DaPi Date: Thu, 26 Sep 2024 17:23:29 +0200 Subject: [PATCH] Freistellungen via API --- .../Jugenddienst Stunden.csproj | 36 +++++++++++++++--- Jugenddienst Stunden/Models/Stunde.cs | 10 +---- Jugenddienst Stunden/Types/DayTime.cs | 3 ++ Jugenddienst Stunden/Types/Freistellung.cs | 12 ++++++ Jugenddienst Stunden/Types/Hours.cs | 1 + .../ViewModels/StundeViewModel.cs | 38 +++++++++---------- 6 files changed, 67 insertions(+), 33 deletions(-) create mode 100644 Jugenddienst Stunden/Types/Freistellung.cs diff --git a/Jugenddienst Stunden/Jugenddienst Stunden.csproj b/Jugenddienst Stunden/Jugenddienst Stunden.csproj index fbf7653..e515bef 100644 --- a/Jugenddienst Stunden/Jugenddienst Stunden.csproj +++ b/Jugenddienst Stunden/Jugenddienst Stunden.csproj @@ -1,7 +1,7 @@  - net8.0-maccatalyst;net8.0-android + net8.0-maccatalyst;net8.0-android34.0 @@ -44,11 +44,13 @@ True com.danielpichler.jugenddienststunden + 1.0.1 True com.danielpichler.jugenddienststunden + 1.0.1 @@ -56,6 +58,8 @@ com.danielpichler.jugenddienststunden Xamarin True + False + 1.0.1 @@ -65,24 +69,44 @@ com.danielpichler.jugenddienststunden True + 1.0.1 com.danielpichler.jugenddienststunden Xamarin - True + False + 1.0.1 + False + False com.danielpichler.jugenddienststunden - - - - $(TargetFrameworks);net8.0-windows10.0.26100.0 + True + 1.0.1 True + Xamarin + True + False + + + + False + False + + + + True + Xamarin + True + + + + $(TargetFrameworks);net8.0-windows10.0.26100.0 diff --git a/Jugenddienst Stunden/Models/Stunde.cs b/Jugenddienst Stunden/Models/Stunde.cs index 68ff1cc..864b858 100644 --- a/Jugenddienst Stunden/Models/Stunde.cs +++ b/Jugenddienst Stunden/Models/Stunde.cs @@ -23,8 +23,8 @@ namespace Jugenddienst_Stunden.Models { //public static string surname = Preferences.Default.Get("surname", "Weger"); //Christine Feichter - public static string apiKey = Preferences.Default.Get("apiKey", "MTQzfEFlMVRjQXdZMnI4RmpxZ0FSY3A0VEN2bVZYVXxodHRwOi8vaG91cnMuZGF1bmkubWluZS5udTo4MS9hcHBhcGk="); - public static int EmployeeId = Preferences.Default.Get("employeeId", 0); + public static string apiKey = Preferences.Default.Get("apiKey", "M3xraUdoSktrdGowaUZoaStJbDJLWmIyTFhYeDh8aHR0cDovL2hvdXJzLmRhdW5pLm1pbmUubnU6ODEvYXBwYXBp"); + public static int EmployeeId = Preferences.Default.Get("employeeId", 3); public static string name = Preferences.Default.Get("name", "Vorname"); public static string surname = Preferences.Default.Get("surname", "Nachname"); public static string apiUrl = Preferences.Default.Get("apiUrl", "https://"); @@ -40,12 +40,6 @@ namespace Jugenddienst_Stunden.Models { public static async Task LoadData() { - //Temporär fix für virtuelle App - - //apiKey = "NXw5eFF0RVQ5TFBMTXFVeFIzQURtd01idHFUb2d8aHR0cDovL2hvdXJzLmRhdW5pLm1pbmUubnU6ODEvYXBwYXBp"; //Johannes Fink - //apiKey = "M3xraUdoSktrdGowaUZoaStJbDJLWmIyTFhYeDh8aHR0cDovL2hvdXJzLmRhdW5pLm1pbmUubnU6ODEvYXBwYXBp"; //Lea Mair - //apiKey = "Mnx6amdpUkFCdWMvc0lmZ3dWeXRVSWx3VGRDRDh8aHR0cDovL2hvdXJzLmRhdW5pLm1pbmUubnU6ODEvYXBwYXBp"; //Daniel Pichler - Hours hours = new Hours(); diff --git a/Jugenddienst Stunden/Types/DayTime.cs b/Jugenddienst Stunden/Types/DayTime.cs index 89d8665..976f5de 100644 --- a/Jugenddienst Stunden/Types/DayTime.cs +++ b/Jugenddienst Stunden/Types/DayTime.cs @@ -25,6 +25,7 @@ namespace Jugenddienst_Stunden.Types { public TimeSpan TimeSpanBis { get; set; } public Collection Projekte { get; set; } public Collection Gemeinden { get; set; } + public Collection Freistellungen { get; set; } /// /// Gets the active Gemeinde based on the gemeinde ID. @@ -35,5 +36,7 @@ namespace Jugenddienst_Stunden.Types { /// Gets the active Projekt based on the projekt ID. /// public Projekt ProjektAktiv { get; set; } + + public Freistellung FreistellungAktiv { get; set; } } } diff --git a/Jugenddienst Stunden/Types/Freistellung.cs b/Jugenddienst Stunden/Types/Freistellung.cs new file mode 100644 index 0000000..831d34e --- /dev/null +++ b/Jugenddienst Stunden/Types/Freistellung.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Jugenddienst_Stunden.Types { + public class Freistellung { + public string Identifier { get; set; } + public string Name { get; set; } + } +} diff --git a/Jugenddienst Stunden/Types/Hours.cs b/Jugenddienst Stunden/Types/Hours.cs index 9009063..b1ae929 100644 --- a/Jugenddienst Stunden/Types/Hours.cs +++ b/Jugenddienst Stunden/Types/Hours.cs @@ -41,6 +41,7 @@ namespace Jugenddienst_Stunden.Types public DateTime MaxDate; public Collection Projekte { get; set; } public Collection Gemeinden { get; set; } + public Collection Freistellungen { get; set; } public int EmployeeId { get; set; } } diff --git a/Jugenddienst Stunden/ViewModels/StundeViewModel.cs b/Jugenddienst Stunden/ViewModels/StundeViewModel.cs index 40347fc..cf089d9 100644 --- a/Jugenddienst Stunden/ViewModels/StundeViewModel.cs +++ b/Jugenddienst Stunden/ViewModels/StundeViewModel.cs @@ -24,10 +24,15 @@ namespace Jugenddienst_Stunden.ViewModels { public event EventHandler AlertEvent; + public event EventHandler InfoEvent; + + public Collection Projekte { get; set; } + public Collection Gemeinden { get; set; } + public Collection Freistellungen { get; set; } public ObservableCollection OptionsGemeinde { get; private set; } public ObservableCollection OptionsProjekt { get; private set; } - public ObservableCollection OptionsFreistellung { get; } + public ObservableCollection OptionsFreistellung { get; private set; } //private Gemeinde _selectedGemeinde; public Gemeinde SelectedOptionGemeinde { @@ -53,21 +58,19 @@ namespace Jugenddienst_Stunden.ViewModels { } } - private string selectedFreistellung; - public string SelectedOptionFreistellung { - get => selectedFreistellung; + //private string selectedFreistellung; + public Freistellung SelectedOptionFreistellung { + get => _stunde.FreistellungAktiv; set { - if (selectedFreistellung != value) { - selectedFreistellung = value; + if (_stunde.FreistellungAktiv != value) { + _stunde.FreistellungAktiv = value; OnPropertyChanged(nameof(SelectedOptionFreistellung)); } } } - public Collection Projekte { get; set; } - public Collection Gemeinden { get; set; } - + public ICommand SaveCommand { get; private set; } public ICommand DeleteCommand { get; private set; } @@ -76,20 +79,11 @@ namespace Jugenddienst_Stunden.ViewModels { public StundeViewModel() { _stunde = new DayTime(); - //_stunde.EmployeeId = Preferences.Default.Get("employeeId", 0); - - //LoadDataCommand = new AsyncRelayCommand(LoadData); SaveCommand = new AsyncRelayCommand(Save); DeleteCommand = new AsyncRelayCommand(Delete); - OptionsFreistellung = new ObservableCollection { - "Keine", - "Urlaub", - "Krankheit", - "Elternzeit" - }; _ = LoadData(); } @@ -106,8 +100,10 @@ namespace Jugenddienst_Stunden.ViewModels { Hours _hours = await Models.Stunde.LoadBasicData(); OptionsProjekt = new ObservableCollection(_hours.Projekte); OptionsGemeinde = new ObservableCollection(_hours.Gemeinden); + OptionsFreistellung = new ObservableCollection(_hours.Freistellungen); OnPropertyChanged(nameof(OptionsGemeinde)); OnPropertyChanged(nameof(OptionsProjekt)); + OnPropertyChanged(nameof(OptionsFreistellung)); _stunde.EmployeeId = _hours.EmployeeId; } catch (Exception e) { AlertEvent?.Invoke(this, e.Message); @@ -143,18 +139,22 @@ namespace Jugenddienst_Stunden.ViewModels { OptionsProjekt = new ObservableCollection(_stunde.Projekte); OptionsGemeinde = new ObservableCollection(_stunde.Gemeinden); + OptionsFreistellung = new ObservableCollection(_stunde.Freistellungen); OnPropertyChanged(nameof(OptionsGemeinde)); OnPropertyChanged(nameof(OptionsProjekt)); + OnPropertyChanged(nameof(OptionsFreistellung)); //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)); + SelectedOptionFreistellung = OptionsFreistellung.FirstOrDefault(Freistellung => Freistellung.Identifier == _stunde.free) ?? new Freistellung(); + OnPropertyChanged(nameof(SelectedOptionFreistellung)); + OnPropertyChanged(nameof(Stunde)); OnPropertyChanged(nameof(SubTitle));