Files
FA_WEB/OrdersManagement/Services/WarehouseService.cs
Piotr Kus a8e3a8be66 * Added Lot table and service
* Changed behaviour of scanning to scan first PartNumber, select specific record and then scan MeylePartNumber
2025-06-17 08:30:10 +02:00

133 lines
5.3 KiB
C#

using System.Net;
using System.Web;
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<MaterialTransactionDto?> GetMaterialTransactionByPartNumberAsync(string partNumber)
{
string encodedPartNumber = HttpUtility.UrlEncode(partNumber);
var response = await _httpClient.GetAsync(
$"api/WzRowMeyle/by-part-number?partNumber={encodedPartNumber}").ConfigureAwait(false);;
if (response.StatusCode == HttpStatusCode.NoContent)
{
return null;
}
return await response.Content.ReadFromJsonAsync<MaterialTransactionDto>().ConfigureAwait(false);;
}
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();
}
}