133 lines
4.2 KiB
C#
133 lines
4.2 KiB
C#
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; }
|
|
private static Hours Hours { 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", "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 static async Task<Hours> LoadData() {
|
|
|
|
//Temporär fix für virtuelle App
|
|
|
|
//apiKey = "NXw5eFF0RVQ5TFBMTXFVeFIzQURtd01idHFUb2d8aHR0cDovL2hvdXJzLmRhdW5pLm1pbmUubnU6ODEvYXBwYXBp"; //Johannes Fink
|
|
|
|
|
|
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<Hours>(data);
|
|
|
|
}
|
|
return hours;
|
|
}
|
|
|
|
|
|
public static async Task<List<DayTime>> LoadDay(DateTime date) {
|
|
|
|
List<DayTime> daytimes = new List<DayTime>();
|
|
|
|
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 erhalten");
|
|
}
|
|
if (data == "\"Lalala\"") {
|
|
throw new Exception("Problem mit Token");
|
|
}
|
|
|
|
//daytimes = System.Text.Json.JsonSerializer.Deserialize<List<DayTime>>(data);
|
|
daytimes = JsonConvert.DeserializeObject<List<DayTime>>(data);
|
|
|
|
|
|
}
|
|
//Hours = hours;
|
|
return daytimes;
|
|
}
|
|
|
|
|
|
public static async Task<DayTime> 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<DayTime>(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)
|
|
};
|
|
}
|
|
|
|
}
|
|
}
|