Files
FA_WEB/OrdersManagement/Services/WarehouseService.cs
Piotr Kus ad641560ea * Added EmailAddresses and WzNumbers to WzHeader
* Changed approach to send email to addresses added to WzHeader
2025-05-25 11:01:18 +02:00

117 lines
4.7 KiB
C#

using SytelineSaAppEfDataModel.Dtos;
namespace OrdersManagement.Services;
public class WarehouseService(IHttpClientFactory httpClientFactory)
{
private readonly HttpClient _httpClient = httpClientFactory.CreateClient("FaKrosnoApi");
public async Task<WzHeaderDto> GetWzHeaderByIdAsync(Guid wzHeaderId)
{
var response = await _httpClient.GetAsync($"api/WzHeader/by-id?id={wzHeaderId}");
response.EnsureSuccessStatusCode();
return await response.Content.ReadFromJsonAsync<WzHeaderDto>();
}
public async Task<IEnumerable<WzClientDto>> GetAllClientsAsync()
{
var response = await _httpClient.GetAsync($"api/WzClient");
response.EnsureSuccessStatusCode();
return await response.Content.ReadFromJsonAsync<IEnumerable<WzClientDto>>();
}
public async Task<IEnumerable<MaterialTransactionDto>> 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<IEnumerable<MaterialTransactionDto>>();
}
public async Task<IEnumerable<WzHeaderDto>> 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<IEnumerable<WzHeaderDto>>();
}
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<WzRowMeyleDto> 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<CustomerOrderDto> GetCustomerOrder(string customerOrderNumber)
{
var response = await _httpClient.GetAsync(
$"api/CustomerOrders/by-co-number/?customerOrderNumber={customerOrderNumber}");
response.EnsureSuccessStatusCode();
return await response.Content.ReadFromJsonAsync<CustomerOrderDto>();
}
public async Task<ItemCustDto> GetItem(string itemNumber, string customerNumber)
{
var response = await _httpClient.GetAsync(
$"api/ItemCust?itemNumber={itemNumber}&customerNumber={customerNumber}");
response.EnsureSuccessStatusCode();
return await response.Content.ReadFromJsonAsync<ItemCustDto>();
}
public async Task<IEnumerable<WzRowMeyleDto>> GetWzRowsByWzHeaderId(Guid wzHeaderId)
{
var response = await _httpClient.GetAsync($"api/WzRowMeyle/by-wz-header-id?wzHeaderId={wzHeaderId}");
response.EnsureSuccessStatusCode();
return await response.Content.ReadFromJsonAsync<IEnumerable<WzRowMeyleDto>>();
}
public async Task UpdateWzRowsMeyleAsync(IEnumerable<WzRowMeyleDto> 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();
}
}