using OnProfNext.Shared.Models.DTOs; using System.Net.Http.Json; namespace OnProfNext.Client.Services { public class OrderApiService { private readonly HttpClient _httpClient; public OrderApiService(HttpClient httpClient) { _httpClient = httpClient; } // Alle Aufträge zu einem Projekt abrufen public async Task<(bool Success, List? Data, string? Error)> GetOrdersByProjectAsync(int projectId) { try { var orders = await _httpClient.GetFromJsonAsync>($"api/orders/byproject/{projectId}"); return (true, orders ?? new List(), null); } catch (HttpRequestException) { return (false, null, "Server nicht erreichbar. Bitte später erneut versuchen."); } catch (Exception ex) { return (false, null, $"Fehler: {ex.Message}"); } } // Einzelnen Auftrag abrufen public async Task<(bool Success, OrderDto? Data, string? Error)> GetOrderAsync(int id) { try { var order = await _httpClient.GetFromJsonAsync($"api/orders/{id}"); if (order == null) return (false, null, "Auftrag nicht gefunden."); return (true, order, null); } catch (Exception ex) { return (false, null, ex.Message); } } //Auftrag erstellen public async Task<(bool Success, string? Error)> CreateOrderAsync(OrderDto newOrder) { try { var response = await _httpClient.PostAsJsonAsync("api/orders", newOrder); if (!response.IsSuccessStatusCode) return (false, $"Fehler beim Erstellen: {response.ReasonPhrase}"); return (true, null); } catch (HttpRequestException) { return (false, "Server nicht erreichbar."); } catch (Exception ex) { return (false, ex.Message); } } //Auftrag aktualisieren public async Task<(bool Success, string? Error)> UpdateOrderAsync(OrderDto order) { try { var response = await _httpClient.PutAsJsonAsync($"api/orders/{order.Id}", order); if (!response.IsSuccessStatusCode) return (false, $"Fehler beim Aktualisieren: {response.ReasonPhrase}"); return (true, null); } catch (Exception ex) { return (false, ex.Message); } } //Auftrag löschen public async Task<(bool Success, string? Error)> DeleteOrderAsync(int id) { try { var response = await _httpClient.DeleteAsync($"api/orders/{id}"); if (!response.IsSuccessStatusCode) return (false, $"Fehler beim Löschen: {response.ReasonPhrase}"); return (true, null); } catch (HttpRequestException) { return (false, "Server nicht erreichbar."); } catch (Exception ex) { return (false, ex.Message); } } } }