using SytelineSaAppEfDataModel.Dtos; namespace OrdersManagement.Services; public class WarehouseService(IHttpClientFactory httpClientFactory) { private readonly HttpClient _httpClient = httpClientFactory.CreateClient("FaKrosnoApi"); public async Task GetWzHeaderByIdAsync(Guid wzHeaderId) { var response = await _httpClient.GetAsync($"api/WzHeader/by-id?id={wzHeaderId}"); response.EnsureSuccessStatusCode(); return await response.Content.ReadFromJsonAsync(); } public async Task> GetAllClientsAsync() { var response = await _httpClient.GetAsync($"api/WzClient"); response.EnsureSuccessStatusCode(); return await response.Content.ReadFromJsonAsync>(); } public async Task> GetAllClientWzsAsync(string customerNumber, int customerSequence) { var response = await _httpClient.GetAsync( $"api/WzHeader/by-customer-number?customerNumber={customerNumber}&customerSequence={customerSequence}"); response.EnsureSuccessStatusCode(); return await response.Content.ReadFromJsonAsync>(); } public async Task> GetAllClientWzHeadersAsync(string customerNumber, int customerSequence) { var response = await _httpClient.GetAsync( $"api/WzHeader/all-wz-headers?customerNumber={customerNumber}&customerSequence={customerSequence}"); response.EnsureSuccessStatusCode(); return await response.Content.ReadFromJsonAsync>(); } public async Task CreateWzHeaderAsync(WzHeaderDto wzHeader) { var response = await _httpClient.PostAsJsonAsync("api/WzHeader", wzHeader); response.EnsureSuccessStatusCode(); if (response.StatusCode != System.Net.HttpStatusCode.Created) { throw new Exception("Failed to create WzHeader"); } } public async Task CreateWzRowsMeyleAsync(IEnumerable wzRowMeyles) { if (wzRowMeyles == null || !wzRowMeyles.Any()) { throw new ArgumentException("No rows provided to create."); } var response = await _httpClient.PostAsJsonAsync("api/WzRowMeyle", wzRowMeyles); if (!response.IsSuccessStatusCode) { var errorContent = await response.Content.ReadAsStringAsync(); throw new HttpRequestException($"Failed to create WzRowMeyle: {response.StatusCode}, Content: {errorContent}"); } } public async Task GetCustomerOrder(string customerOrderNumber) { var response = await _httpClient.GetAsync( $"api/CustomerOrders/by-co-number/?customerOrderNumber={customerOrderNumber}"); response.EnsureSuccessStatusCode(); return await response.Content.ReadFromJsonAsync(); } public async Task GetItem(string itemNumber, string customerNumber) { var response = await _httpClient.GetAsync( $"api/ItemCust?itemNumber={itemNumber}&customerNumber={customerNumber}"); response.EnsureSuccessStatusCode(); return await response.Content.ReadFromJsonAsync(); } public async Task> GetWzRowsByWzHeaderId(Guid wzHeaderId) { var response = await _httpClient.GetAsync($"api/WzRowMeyle/by-wz-header-id?wzHeaderId={wzHeaderId}"); response.EnsureSuccessStatusCode(); return await response.Content.ReadFromJsonAsync>(); } public async Task UpdateWzRowsMeyleAsync(IEnumerable wzRowsMeyle) { if (wzRowsMeyle == null || !wzRowsMeyle.Any()) { throw new ArgumentException("No rows provided to update."); } var response = await _httpClient.PutAsJsonAsync("api/WzRowMeyle", wzRowsMeyle); response.EnsureSuccessStatusCode(); } public async Task GenerateXlsForMeyleAsync(Guid wzHeaderId) { var response = await _httpClient.GetAsync($"api/ExcelGenerator/generate-meyle?packListId={wzHeaderId}"); response.EnsureSuccessStatusCode(); if (response.StatusCode != System.Net.HttpStatusCode.OK) { throw new Exception("Failed to generate XLS for Mayle"); } } public async Task AddEmailsToWzHeaderAsync(Guid wzHeaderId, string emailAddresses) { var response = await _httpClient.PostAsJsonAsync( $"api/WzHeader/add-emails?id={wzHeaderId}", emailAddresses); response.EnsureSuccessStatusCode(); } }