Diverse Meldungen

This commit is contained in:
2024-10-18 16:24:09 +02:00
parent fe3cefe22b
commit b27e8ffcce

View File

@@ -7,123 +7,147 @@ using System.Text.Json;
namespace Jugenddienst_Stunden.Models; namespace Jugenddienst_Stunden.Models;
class Auth { class Auth {
public static async Task<string?> GetApiDataWithAuthAsync(string url, string token) { public static async Task<string?> GetApiDataWithAuthAsync(string url, string token) {
// Erstellen eines HttpClient-Objekts // Erstellen eines HttpClient-Objekts
using (HttpClient client = new HttpClient() { Timeout = TimeSpan.FromSeconds(15) }) { using (HttpClient client = new HttpClient() { Timeout = TimeSpan.FromSeconds(15) }) {
client.DefaultRequestHeaders.Add("Accept", "application/json"); client.DefaultRequestHeaders.Add("Accept", "application/json");
// Hinzufügen des Bearer-Tokens zum Authorization-Header // Hinzufügen des Bearer-Tokens zum Authorization-Header
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token); client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
// Senden der Anfrage und Abrufen der Antwort // Senden der Anfrage und Abrufen der Antwort
using (HttpResponseMessage HttpResponseMessage = await client.GetAsync(url).ConfigureAwait(false)) { using (HttpResponseMessage HttpResponseMessage = await client.GetAsync(url).ConfigureAwait(false)) {
// Überprüfen, ob die Anfrage erfolgreich war // Überprüfen, ob die Anfrage erfolgreich war
if (HttpResponseMessage.StatusCode == System.Net.HttpStatusCode.OK) { if (HttpResponseMessage.StatusCode == System.Net.HttpStatusCode.OK) {
using (HttpContent HttpContent = HttpResponseMessage.Content) { using (HttpContent HttpContent = HttpResponseMessage.Content) {
// Lesen und Rückgabe der Antwort als String // Lesen und Rückgabe der Antwort als String
string responseData = await HttpContent.ReadAsStringAsync(); string responseData = await HttpContent.ReadAsStringAsync();
return responseData; return responseData;
} }
} }
} }
} }
return null; return null;
} }
/// <summary> /// <summary>
/// Stundeneintrag speichern /// Stundeneintrag speichern
/// </summary> /// </summary>
/// <param name="url"></param> /// <param name="url"></param>
/// <param name="token"></param> /// <param name="token"></param>
/// <param name="item"></param> /// <param name="item"></param>
/// <param name="isNewItem"></param> /// <param name="isNewItem"></param>
/// <returns></returns> /// <returns></returns>
public static async Task SaveItemAsync(string url, string token, DayTime item, bool isNewItem = false) { public static async Task SaveItemAsync(string url, string token, DayTime item, bool isNewItem = false) {
//using (HttpClient client = new HttpClient() { Timeout = TimeSpan.FromSeconds(15) }) { //using (HttpClient client = new HttpClient() { Timeout = TimeSpan.FromSeconds(15) }) {
//Gemeinde ist ein Pflichtfeld //Uhrzeiten sollten sinnvolle Werte haben
if (item.GemeindeAktiv == null) { if (item.TimeSpanVon == item.TimeSpanBis) {
throw new Exception("Gemeinde nicht gewählt"); throw new Exception("Beginn und Ende sind gleich");
} }
//Projekt ist ein Pflichtfeld
if (item.ProjektAktiv == null) {
throw new Exception("Projekt nicht gewählt");
}
try {
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Accept", "application/json");
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
string json = JsonSerializer.Serialize<DayTime>(item); if (item.TimeSpanBis < item.TimeSpanVon) {
StringContent content = new StringContent(json, Encoding.UTF8, "application/json"); throw new Exception("Ende ist vor Beginn");
}
HttpResponseMessage? response = null; TimeSpan span = TimeSpan.Zero;
if (isNewItem) span += item.TimeSpanBis - item.TimeSpanVon;
response = await client.PostAsync(url, content); if (span.Hours > 10) {
else //Hier vielleicht eine Abfrage, ob mehr als 10 Stunden gesund sind?
response = await client.PutAsync(url, content); }
if (response.IsSuccessStatusCode) //Gemeinde ist ein Pflichtfeld
Debug.WriteLine(@"\tTodoItem successfully saved."); if (item.GemeindeAktiv == null) {
} catch (Exception ex) { throw new Exception("Gemeinde nicht gewählt");
Debug.WriteLine(@"\tERROR {0}", ex.Message); }
} //Projekt ist ein Pflichtfeld
//} if (item.ProjektAktiv == null) {
} throw new Exception("Projekt nicht gewählt");
}
//Keine Beschreibung
if (string.IsNullOrEmpty(item.description)) {
throw new Exception("Keine Beschreibung");
}
//try {
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Accept", "application/json");
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
public static async Task DeleteItemAsync(string url, string token) { string json = JsonSerializer.Serialize<DayTime>(item);
//using (HttpClient client = new HttpClient() { Timeout = TimeSpan.FromSeconds(15) }) { StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
try { HttpResponseMessage? response = null;
HttpClient client = new HttpClient(); if (isNewItem)
client.DefaultRequestHeaders.Add("Accept", "application/json"); response = await client.PostAsync(url, content);
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token); else
response = await client.PutAsync(url, content);
HttpResponseMessage response = await client.DeleteAsync(url); //if (response.IsSuccessStatusCode)
// Debug.WriteLine(@"\tTodoItem successfully saved.");
if (!response.IsSuccessStatusCode) {
throw new Exception("Fehler beim Speichern " + response.Content);
}
//} catch (Exception ex) {
// Debug.WriteLine(@"\tERROR {0}", ex.Message);
//}
//}
}
if (response.IsSuccessStatusCode) public static async Task DeleteItemAsync(string url, string token) {
Debug.WriteLine(@"\tTodoItem successfully deleted."); //using (HttpClient client = new HttpClient() { Timeout = TimeSpan.FromSeconds(15) }) {
} catch (Exception ex) {
Debug.WriteLine(@"\tERROR {0}", ex.Message);
}
//}
}
public static async Task<User> AuthUserPass(string user, string pass, string url) { //try {
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Accept", "application/json");
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
var values = new Dictionary<string, string> HttpResponseMessage response = await client.DeleteAsync(url);
{
{ "user", user },
{ "pass", pass }
};
var content = new FormUrlEncodedContent(values); if (!response.IsSuccessStatusCode)
throw new Exception("Fehler beim Löschen " + response.Content);
//if (response.IsSuccessStatusCode)
// Debug.WriteLine(@"\tTodoItem successfully deleted.");
//} catch (Exception ex) {
// Debug.WriteLine(@"\tERROR {0}", ex.Message);
//}
//}
}
using (HttpClient client = new HttpClient() { Timeout = TimeSpan.FromSeconds(15) }) { public static async Task<User> AuthUserPass(string user, string pass, string url) {
client.DefaultRequestHeaders.Add("Accept", "application/json"); var values = new Dictionary<string, string>
{
{ "user", user },
{ "pass", pass }
};
// Senden der Anfrage und Abrufen der Antwort var content = new FormUrlEncodedContent(values);
using (HttpResponseMessage HttpResponseMessage = await client.PostAsync(url, content).ConfigureAwait(false)) {
// Überprüfen, ob die Anfrage erfolgreich war
if (HttpResponseMessage.StatusCode == System.Net.HttpStatusCode.OK) {
using (HttpContent HttpContent = HttpResponseMessage.Content) {
// Lesen und Rückgabe der Antwort als String
string responseData = await HttpContent.ReadAsStringAsync(); using (HttpClient client = new HttpClient() { Timeout = TimeSpan.FromSeconds(15) }) {
User userData = System.Text.Json.JsonSerializer.Deserialize<User>(responseData) ?? throw new Exception("Fehler beim Deserialisieren der Daten");
return userData;
}
}
}
} client.DefaultRequestHeaders.Add("Accept", "application/json");
return null;
} // Senden der Anfrage und Abrufen der Antwort
using (HttpResponseMessage HttpResponseMessage = await client.PostAsync(url, content).ConfigureAwait(false)) {
// Überprüfen, ob die Anfrage erfolgreich war
if (HttpResponseMessage.StatusCode == System.Net.HttpStatusCode.OK) {
using (HttpContent HttpContent = HttpResponseMessage.Content) {
// Lesen und Rückgabe der Antwort als String
string responseData = await HttpContent.ReadAsStringAsync();
User userData = System.Text.Json.JsonSerializer.Deserialize<User>(responseData) ?? throw new Exception("Fehler beim Deserialisieren der Daten");
return userData;
}
}
}
}
return null;
}
} }