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;
///
/// Einstellungen
///
internal async Task LoadSettings() {
string data = await BaseFunc.GetApiDataWithAuthAsync(tokendata.Url + "?settings", tokendata.ApiKey);
Settings _settings = JsonConvert.DeserializeObject(data);
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);
}
}