using Jugenddienst_Stunden.Types; using Newtonsoft.Json; using System.Collections.ObjectModel; namespace Jugenddienst_Stunden.Models; internal class HoursBase { public DateTime Date { get; set; } public static string apiKey = Preferences.Default.Get("apiKey", ""); public static int EmployeeId = Preferences.Default.Get("employeeId", 0); public static string name = Preferences.Default.Get("name", ""); public static string surname = Preferences.Default.Get("surname", ""); public static string apiUrl = Preferences.Default.Get("apiUrl", ""); internal static TokenData tokendata = new TokenData(apiKey); /// /// Einstellungen /// internal async Task LoadSettings() { string data = await BaseFunc.GetApiDataWithAuthAsync(tokendata.Url + "?settings", tokendata.ApiKey); Settings _settings = JsonConvert.DeserializeObject(data) ?? throw new Exception("Fehler beim Deserialisieren der Daten"); return _settings; } /// /// Daten laden /// internal async Task LoadData() { Hours hours = new Hours(); var tokendata = new TokenData(apiKey); string data = await BaseFunc.GetApiDataWithAuthAsync(tokendata.Url + "?hours", tokendata.ApiKey); hours = JsonConvert.DeserializeObject(data) ?? throw new Exception("Fehler beim Deserialisieren der Daten"); return hours; } /// /// Basisdaten: Mitarbeiterdaten, Projekte, Gemeinden, Freistellungen. /// internal static async Task LoadBasicData() { Hours hours = new Hours(); string data = await BaseFunc.GetApiDataWithAuthAsync(tokendata.Url + "?basic", tokendata.ApiKey); hours = JsonConvert.DeserializeObject(data) ?? throw new Exception("Fehler beim Deserialisieren der Daten"); return hours; } public static async Task LoadOperator(string apiKey) { Operator OperatorVar = new Operator(); string data = await BaseFunc.GetApiDataWithAuthAsync(tokendata.Url, tokendata.ApiKey); OperatorVar = JsonConvert.DeserializeObject(data); Preferences.Default.Set("name", OperatorVar.name); Preferences.Default.Set("surname", OperatorVar.surname); Preferences.Default.Set("apiUrl", tokendata.Url); return OperatorVar; } /// /// Zeiten eines Tages holen /// internal async Task> LoadDay(DateTime date) { string data = await BaseFunc.GetApiDataWithAuthAsync(tokendata.Url + "?date=" + date.ToString("yyyy-MM-dd"), tokendata.ApiKey); //List daytimes = System.Text.Json.JsonSerializer.Deserialize>(data) ?? throw new Exception("Fehler beim Deserialisieren der Daten"); List daytimes = JsonConvert.DeserializeObject>(data); //List daytimes = JsonConvert.DeserializeObject>(data) ?? throw new Exception("Fehler beim Deserialisieren der Daten"); return daytimes; } /// /// Einzelnen Stundeneintrag holen /// internal static async Task LoadEntry(int id) { string data = await BaseFunc.GetApiDataWithAuthAsync(tokendata.Url + "?id=" + id, tokendata.ApiKey); //DayTime hours = Hours.daytime.Find(x => x.id == id); DayTime hours = JsonConvert.DeserializeObject(data) ?? throw new Exception("Fehler beim Deserialisieren der Daten"); hours.TimeSpanVon = hours.Begin.ToTimeSpan(); hours.TimeSpanBis = hours.End.ToTimeSpan(); return hours; } /// /// Eintrag speichern /// internal static async Task SaveEntry(DayTime stunde) { //, string begin, string end, string freistellung, string bemerkung) { bool isNew = false; if (stunde.Id == null) isNew = true; await BaseFunc.SaveItemAsync(tokendata.Url, tokendata.ApiKey, stunde, isNew); return stunde; } /// /// Eintrag löschen /// internal static async Task DeleteEntry(DayTime stunde) { await BaseFunc.DeleteItemAsync(tokendata.Url + "/entry/" + stunde.Id, tokendata.ApiKey); } }