using CommunityToolkit.Mvvm.ComponentModel; using Newtonsoft.Json; using Microsoft.Maui.Networking; using Microsoft.Maui.Controls; using System; using System.Text; using System.Text.Json; using Jugenddienst_Stunden.Types; using System.Collections.Generic; namespace Jugenddienst_Stunden.Models { internal class Stunde : ObservableObject { public DateTime Date { get; set; } //Default-Werte zum Testen //Katharina //public static string apiKey = Preferences.Default.Get("apiKey", "MTAyfEJZZnB1L3VwcnhoVms0dDlLZENPZWtUVy85b3xodHRwOi8vaG91cnMuZGF1bmkubWluZS5udTo4MS9hcHBhcGk="); //public static string name = Preferences.Default.Get("name", "Katharina"); //public static string surname = Preferences.Default.Get("surname", "Weger"); //Christine Feichter public static string apiKey = Preferences.Default.Get("apiKey", ""); 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://"); //Damian //public static string apiKey = Preferences.Default.Get("apiKey", "MTU0fGpkQUNYTGkvcjMvVk4rNkMyK0dDQkJmMkFwVXxodHRwOi8vaG91cnMuZGF1bmkubWluZS5udTo4MS9hcHBhcGk="); //private static readonly string requestUrl = $"{BaseAddress}/appapi?hours"; //public static string apiKey = "Mnx6amdpUkFCdWMvc0lmZ3dWeXRVSWx3VGRDRDh8aHR0cDovL2hvdXJzLmRhdW5pLm1pbmUubnU6ODEvYXBwYXBp"; //Daniel Pichler //public static string apiKey = "M3xraUdoSktrdGowaUZoaStJbDJLWmIyTFhYeDh8aHR0cDovL2hvdXJzLmRhdW5pLm1pbmUubnU6ODEvYXBwYXBp"; //Le Mair public static async Task LoadData() { if (string.IsNullOrEmpty(apiKey)) { throw new Exception("Kein APIKEY, bitte zuerst Login durchführen"); } Hours hours = new Hours(); if (Connectivity.Current.NetworkAccess == NetworkAccess.None) { await App.Current.MainPage.DisplayAlert("Keine Internetverbindung", "Bitte überprüfen Sie Ihre Internetverbindung und versuchen Sie es erneut.", "OK"); } else { var tokendata = new TokenData(apiKey); //string data = await Auth.GetApiDataWithAuthAsync(requestUrl, apiKey); string data = await Auth.GetApiDataWithAuthAsync(tokendata.url + "?hours", tokendata.apiKey); if (data == "null") { throw new Exception("Keine Daten erhalten"); } if (data == "\"Lalala\"") { throw new Exception("Problem mit Token"); } hours = JsonConvert.DeserializeObject(data); } return hours; } public static async Task LoadBasicData() { Hours hours = new Hours(); if (Connectivity.Current.NetworkAccess == NetworkAccess.None) { await App.Current.MainPage.DisplayAlert("Keine Internetverbindung", "Bitte überprüfen Sie Ihre Internetverbindung und versuchen Sie es erneut.", "OK"); } else { var tokendata = new TokenData(apiKey); string data = await Auth.GetApiDataWithAuthAsync(tokendata.url + "?basic", tokendata.apiKey); if (data == "null") { throw new Exception("Keine Daten erhalten"); } if (data == "\"Lalala\"") { throw new Exception("Problem mit Token"); } hours = JsonConvert.DeserializeObject(data); } return hours; } public static async Task> LoadDay(DateTime date) { if (string.IsNullOrEmpty(apiKey)) { throw new Exception("Kein APIKEY, bitte zuerst Login durchführen"); } List daytimes = new List(); if (Connectivity.Current.NetworkAccess == NetworkAccess.None) { await App.Current.MainPage.DisplayAlert("Keine Internetverbindung", "Bitte überprüfen Sie Ihre Internetverbindung und versuchen Sie es erneut.", "OK"); } else { var tokendata = new TokenData(apiKey); //string data = await Auth.GetApiDataWithAuthAsync(requestUrl, apiKey); string data = await Auth.GetApiDataWithAuthAsync(tokendata.url + "?date=" + date.ToString("yyyy-MM-dd"), tokendata.apiKey); if (data == "null") { throw new Exception("Keine Daten für " + date.ToString("ddd. dd. MMM") + " erhalten"); } if (data == "\"Lalala\"") { throw new Exception("Problem mit Token"); } //daytimes = System.Text.Json.JsonSerializer.Deserialize>(data); daytimes = JsonConvert.DeserializeObject>(data); } //Hours = hours; return daytimes; } public static async Task LoadEntry(int id) { var tokendata = new TokenData(apiKey); var data = await Auth.GetApiDataWithAuthAsync(tokendata.url + "?id=" + id, tokendata.apiKey); //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; } public static Stunde Load(string filename) { filename = System.IO.Path.Combine(FileSystem.AppDataDirectory, filename); if (!File.Exists(filename)) throw new FileNotFoundException("Unable to find file on local storage.", filename); return new() { //Filename = Path.GetFileName(filename), //Text = File.ReadAllText(filename), Date = File.GetLastWriteTime(filename) }; } public static async Task SaveEntry(DayTime stunde) { //, string begin, string end, string freistellung, string bemerkung) { var tokendata = new TokenData(apiKey); bool isNew = false; if (stunde.id == null) isNew = true; await Auth.SaveItemAsync(tokendata.url, tokendata.apiKey, stunde, isNew); return stunde; } public static async Task DeleteEntry(DayTime stunde) { //, string begin, string end, string freistellung, string bemerkung) { var tokendata = new TokenData(apiKey); await Auth.DeleteItemAsync(tokendata.url + "/entry/" + stunde.id, tokendata.apiKey); return stunde; } } }