diff --git a/Jugenddienst Stunden/Models/Auth.cs b/Jugenddienst Stunden/Models/Auth.cs index 23c25c3..4c7e410 100644 --- a/Jugenddienst Stunden/Models/Auth.cs +++ b/Jugenddienst Stunden/Models/Auth.cs @@ -53,6 +53,8 @@ namespace Jugenddienst_Stunden.Models { string apiUrl = args[0]; // Ersetzen Sie dies durch die tatsächliche URL der API string bearerToken = args[1]; // Ersetzen Sie hier durch Ihr tatsächliches Token + Preferences.Default.Set("apiUrl", apiUrl); + string data = await GetApiDataWithAuthAsync(apiUrl, bearerToken); if (data != null) { diff --git a/Jugenddienst Stunden/Models/Operator.cs b/Jugenddienst Stunden/Models/Operator.cs index 4b0a7ff..255bcba 100644 --- a/Jugenddienst Stunden/Models/Operator.cs +++ b/Jugenddienst Stunden/Models/Operator.cs @@ -1,5 +1,6 @@  using CommunityToolkit.Mvvm.ComponentModel; +using Jugenddienst_Stunden.ViewModels; using Newtonsoft.Json; using System.Text; @@ -41,25 +42,19 @@ namespace Jugenddienst_Stunden.Models { //throw new Exception("Keine Internetverbindung"); } else { var tokendata = new TokenData(apiKey); + //try { - string data = await Auth.GetApiDataWithAuthAsync(tokendata.url, tokendata.apiKey); - if (data == "\"Lalala\"") { - throw new Exception("Problem mit Token"); - } - if (data != null) { - OperatorVar = Newtonsoft.Json.JsonConvert.DeserializeObject(data); - Preferences.Default.Set("name", OperatorVar.name); - Preferences.Default.Set("surname", OperatorVar.surname); - } - //} catch (Exception e) { - // //AlertEvent?.Invoke(this, e.Message); - // await App.Current.MainPage.DisplayAlert("Fehler", - // e.Message, - // "OK"); - //} - - - + string data = await Auth.GetApiDataWithAuthAsync(tokendata.url, tokendata.apiKey); + if (data == "\"Lalala\"") { + throw new Exception("Problem mit Token"); + } + if (data != null) { + OperatorVar = JsonConvert.DeserializeObject(data); + Preferences.Default.Set("name", OperatorVar.name); + Preferences.Default.Set("surname", OperatorVar.surname); + Preferences.Default.Set("apiUrl", tokendata.url); + + } } return OperatorVar; diff --git a/Jugenddienst Stunden/Models/Stunde.cs b/Jugenddienst Stunden/Models/Stunde.cs index 6adc829..bf6e9de 100644 --- a/Jugenddienst Stunden/Models/Stunde.cs +++ b/Jugenddienst Stunden/Models/Stunde.cs @@ -12,7 +12,8 @@ using System.Collections.Generic; namespace Jugenddienst_Stunden.Models { internal class Stunde : ObservableObject { - + public DateTime Date { get; set; } + private static Hours Hours { get; set; } //Default-Werte zum Testen @@ -25,48 +26,22 @@ namespace Jugenddienst_Stunden.Models { public static string apiKey = Preferences.Default.Get("apiKey", "MTQzfEFlMVRjQXdZMnI4RmpxZ0FSY3A0VEN2bVZYVXxodHRwOi8vaG91cnMuZGF1bmkubWluZS5udTo4MS9hcHBhcGk="); public static string name = Preferences.Default.Get("name", "Christine"); public static string surname = Preferences.Default.Get("surname", "Feichter"); + public static string apiUrl = Preferences.Default.Get("apiUrl", "https://"); //Damian //public static string apiKey = Preferences.Default.Get("apiKey", "MTU0fGpkQUNYTGkvcjMvVk4rNkMyK0dDQkJmMkFwVXxodHRwOi8vaG91cnMuZGF1bmkubWluZS5udTo4MS9hcHBhcGk="); //private static readonly string requestUrl = $"{BaseAddress}/appapi?hours"; - public DateTime Date { get; set; } - private static Hours Hours { get; set; } public static async Task LoadData() { //Temporär fix für virtuelle App - //apiKey = "MTAyfEJZZnB1L3VwcnhoVms0dDlLZENPZWtUVy85b3xodHRwOi8vaG91cnMuZGF1bmkubWluZS5udTo4MS9hcHBhcGk="; - //name = "Kathi"; - //surname = "Wegi"; - - //apiKey = "MTQzfEFlMVRjQXdZMnI4RmpxZ0FSY3A0VEN2bVZYVXxodHRwOi8vaG91cnMuZGF1bmkubWluZS5udTo4MS9hcHBhcGk="; - //name = "Chri"; - //surname = "Fe"; - - //apiKey = "MTI3fDEyYURVdHVZVWRaZk91eDlNcjZDUFlTdmdkNHxodHRwOi8vaG91cnMuZGF1bmkubWluZS5udTo4MS9hcHBhcGk="; - //name = "Ju"; - //surname = "Ze"; - - //apiKey = "M3wvK09XQkZod1l4SXlVcGVWazdlUmYrTnBWaUl8aHR0cHM6Ly9ob3Vycy5waWRhLmluZm8vYXBwYXBp"; - //name = "Le"; - //surname = "Ma"; - - //apiKey = "OXxzTkxVWjJqdmI2VXFrdUhtcktwK1d1YU41cTh8aHR0cDovL2hvdXJzLmRhdW5pLm1pbmUubnU6ODEvYXBwYXBp"; - //name = "Eli"; - //surname = "Gap"; //apiKey = "NXw5eFF0RVQ5TFBMTXFVeFIzQURtd01idHFUb2d8aHR0cDovL2hvdXJzLmRhdW5pLm1pbmUubnU6ODEvYXBwYXBp"; //Johannes Fink - //Preferences.Default.Set("apiKey", apiKey); - //Preferences.Default.Set("name", name); - //Preferences.Default.Set("surname", surname); - - - Hours hours = new Hours(); @@ -88,9 +63,6 @@ namespace Jugenddienst_Stunden.Models { } hours = JsonConvert.DeserializeObject(data); - //Preferences.Default.Set("name", hours.operator_api.name); - //Preferences.Default.Set("surname", hours.operator_api.surname); - } return hours; @@ -99,7 +71,6 @@ namespace Jugenddienst_Stunden.Models { public static async Task> LoadDay(DateTime date) { - List daytimes = new List(); if (Connectivity.Current.NetworkAccess == NetworkAccess.None) { @@ -121,25 +92,23 @@ namespace Jugenddienst_Stunden.Models { //daytimes = System.Text.Json.JsonSerializer.Deserialize>(data); daytimes = JsonConvert.DeserializeObject>(data); - //Preferences.Default.Set("name", hours.operator_api.name); - //Preferences.Default.Set("surname", hours.operator_api.surname); } //Hours = hours; return daytimes; } - public event EventHandler AlertEvent; + + public static async Task LoadEntry(int id) { var tokendata = new TokenData(apiKey); - var data = await Auth.GetApiDataWithAuthAsync(tokendata.url + "?id=" + id, tokendata.apiKey); - if(String.IsNullOrEmpty(data)) - AlertEvent?.Invoke(this, "Auswahl enthält keine Daten"); //DayTime hours = Hours.daytime.Find(x => x.id == id); DayTime hours = JsonConvert.DeserializeObject(data); + hours.TimeSpanVon = hours.begin.ToTimeSpan(); + hours.TimeSpanBis = hours.end.ToTimeSpan(); return hours; } diff --git a/Jugenddienst Stunden/Types/DayTime.cs b/Jugenddienst Stunden/Types/DayTime.cs index 25757f5..523fde0 100644 --- a/Jugenddienst Stunden/Types/DayTime.cs +++ b/Jugenddienst Stunden/Types/DayTime.cs @@ -1,4 +1,7 @@ -namespace Jugenddienst_Stunden.Types { +using Jugenddienst_Stunden.Models; +using System.Collections.ObjectModel; + +namespace Jugenddienst_Stunden.Types { public class DayTime { public int? id; public int EmployeeId; @@ -10,10 +13,15 @@ public string? free; public bool? approved; public int? type; - public int? project; + public int? projekt; public int? gemeinde; public TimeOnly night; public Dictionary total; public TimeOnly end_print; + public TimeSpan TimeSpanVon { get; set; } + public TimeSpan TimeSpanBis { get; set; } + public Collection Projekte { get; set; } + public Collection Gemeinden { get; set; } + } } diff --git a/Jugenddienst Stunden/Types/Gemeinde.cs b/Jugenddienst Stunden/Types/Gemeinde.cs index 1bb55b1..0920694 100644 --- a/Jugenddienst Stunden/Types/Gemeinde.cs +++ b/Jugenddienst Stunden/Types/Gemeinde.cs @@ -6,15 +6,18 @@ using System.Threading.Tasks; namespace Jugenddienst_Stunden.Types { - internal class Gemeinde - { - public int Id { get; set; } - public string Name { get; set; } + /// + /// Repräsentiert eine Gemeinde mit einer eindeutigen Id und einem Namen. + /// + public class Gemeinde { + /// + /// Eindeutige Id der Gemeinde. + /// + public int Id { get; set; } - public Gemeinde(int id, string name) - { - Id = id; - Name = name; - } - } + /// + /// Name der Gemeinde. + /// + public string Name { get; set; } + } } diff --git a/Jugenddienst Stunden/Types/Projekt.cs b/Jugenddienst Stunden/Types/Projekt.cs index 1135635..6ca30c5 100644 --- a/Jugenddienst Stunden/Types/Projekt.cs +++ b/Jugenddienst Stunden/Types/Projekt.cs @@ -6,9 +6,18 @@ using System.Threading.Tasks; namespace Jugenddienst_Stunden.Types { - internal class Projekt - { - public int Id { get; set; } - public string Name { get; set; } - } + /// + /// Repräsentiert ein Projekt mit einer eindeutigen ID und einem Namen. + /// + public class Projekt { + /// + /// Holt oder setzt die eindeutige ID des Projekts. + /// + public int Id { get; set; } + + /// + /// Holt oder setzt den Namen des Projekts. + /// + public string Name { get; set; } + } } diff --git a/Jugenddienst Stunden/ViewModels/LoginViewModel.cs b/Jugenddienst Stunden/ViewModels/LoginViewModel.cs index 12eb08f..6d9eb3a 100644 --- a/Jugenddienst Stunden/ViewModels/LoginViewModel.cs +++ b/Jugenddienst Stunden/ViewModels/LoginViewModel.cs @@ -1,15 +1,18 @@ using CommunityToolkit.Mvvm.Input; using System.Windows.Input; using Microsoft.Maui.Dispatching; +using CommunityToolkit.Mvvm.ComponentModel; //using BarcodeScanning; namespace Jugenddienst_Stunden.ViewModels { - internal class LoginViewModel { + public class LoginViewModel { public string AppTitle => AppInfo.Name; public string Version => AppInfo.VersionString; public string Message => "Scanne den QR-Code von deinem Benutzerprofil auf der Stundenseite."; + public string Server { get; set; } = "Server: " + Preferences.Default.Get("apiUrl", "https://"); + public string Title { get; set; } = Preferences.Default.Get("name", "") + " " + Preferences.Default.Get("surname", ""); diff --git a/Jugenddienst Stunden/ViewModels/StundeViewModel.cs b/Jugenddienst Stunden/ViewModels/StundeViewModel.cs index 487e89e..6189b62 100644 --- a/Jugenddienst Stunden/ViewModels/StundeViewModel.cs +++ b/Jugenddienst Stunden/ViewModels/StundeViewModel.cs @@ -4,6 +4,7 @@ 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; @@ -14,18 +15,32 @@ namespace Jugenddienst_Stunden.ViewModels { public int id { get; set; } - private Types.DayTime _stunde; + private DayTime _stunde; public DayTime Stunde { get => _stunde; } - public string Description { - get => _stunde.description; - set { - if (_stunde.description != value) { - _stunde.description = value; - OnPropertyChanged(); - } - } - } + 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"); @@ -36,14 +51,22 @@ namespace Jugenddienst_Stunden.ViewModels { public StundeViewModel() { - _stunde = new Types.DayTime(); + _stunde = new DayTime(); //SaveCommand = new AsyncRelayCommand(Save); //DeleteCommand = new AsyncRelayCommand(Delete); + + + OptionsFreistellung = new ObservableCollection { + "Urlaub", + "Krankheit", + "Elternzeit" + }; } - public StundeViewModel(Types.DayTime stunde) { + public StundeViewModel(DayTime stunde) { _stunde = stunde; - + + //SaveCommand = new AsyncRelayCommand(Save); //DeleteCommand = new AsyncRelayCommand(Delete); } @@ -59,13 +82,70 @@ namespace Jugenddienst_Stunden.ViewModels { // 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)); + } } } } diff --git a/Jugenddienst Stunden/ViewModels/StundenViewModel.cs b/Jugenddienst Stunden/ViewModels/StundenViewModel.cs index 260ffcb..986e7ad 100644 --- a/Jugenddienst Stunden/ViewModels/StundenViewModel.cs +++ b/Jugenddienst Stunden/ViewModels/StundenViewModel.cs @@ -94,43 +94,16 @@ namespace Jugenddienst_Stunden.ViewModels { public string Title { get; set; } = Preferences.Default.Get("name", "") + " " + Preferences.Default.Get("surname", ""); - //public ObservableCollection Options { get; } - //public ObservableCollection OptionsProjekt { get; } - //public ObservableCollection OptionsFreistellung { get; } + public List TimeDay { get; set; } - //private string selectedOption; - //public string SelectedOption { - // get => selectedOption; - // set { - // if (selectedOption != value) { - // selectedOption = value; - // //new AsyncRelayCommand(LoadData); - // OnPropertyChanged(nameof(SelectedOption)); - // } - // } - //} + public StundenViewModel() { - // Options = new ObservableCollection { - // "Gemeinde 1", - // "Gemeinde 2", - // "Gemeinde 3", - // "Gemeinde 4" - //}; - // OptionsProjekt = new ObservableCollection { - // "Projekt 1", - // "Projekt 2", - // "Projekt 3" - //}; - // OptionsFreistellung = new ObservableCollection { - // "Urlaub", - // "Krankheit", - // "Elternzeit" - //}; + _hour = new Types.Hours(); LoadDataCommand = new AsyncRelayCommand(LoadData); diff --git a/Jugenddienst Stunden/Views/AllNotesPage.xaml b/Jugenddienst Stunden/Views/AllNotesPage.xaml index 1ec66c1..9667f52 100644 --- a/Jugenddienst Stunden/Views/AllNotesPage.xaml +++ b/Jugenddienst Stunden/Views/AllNotesPage.xaml @@ -15,13 +15,13 @@ - +