97 lines
4.4 KiB
C#
97 lines
4.4 KiB
C#
using CPRNIMS.Domain.UIContracts.Common;
|
|
using CPRNIMS.Domain.UIContracts.Inventory;
|
|
using CPRNIMS.Infrastructure.Dto.Inventory.Reports;
|
|
using CPRNIMS.Infrastructure.Dto.Inventory.Reports.Response;
|
|
using CPRNIMS.Infrastructure.Helper;
|
|
using Microsoft.Extensions.Configuration;
|
|
using System.Text;
|
|
using System.Text.Json;
|
|
|
|
namespace CPRNIMS.Domain.UIServices.Inventory
|
|
{
|
|
public class InventoryReports : IInventoryReports
|
|
{
|
|
private readonly IConfiguration _configuration;
|
|
private readonly TokenHelper _tokenHelper;
|
|
private readonly IApiConfigurationService _apiConfigurationService;
|
|
public InventoryReports(IConfiguration configuration, TokenHelper tokenHelper, IApiConfigurationService apiConfigurationService)
|
|
{
|
|
_configuration = configuration;
|
|
_tokenHelper = tokenHelper;
|
|
_apiConfigurationService = apiConfigurationService;
|
|
}
|
|
private static readonly JsonSerializerOptions _jsonOpts = new()
|
|
{
|
|
PropertyNameCaseInsensitive = true
|
|
};
|
|
public async Task<InventoryReportDto> GetInventoryReportAsync(DateTime dateFrom, DateTime dateTo, CancellationToken ct)
|
|
{
|
|
var token = await _tokenHelper.GetValidTokenAsync();
|
|
if (string.IsNullOrEmpty(token))
|
|
throw new InvalidOperationException("Token has been expired.");
|
|
|
|
var baseEndpoint = _configuration["LLI:NonInvent:InventoryMgmt:GetInventoryReport"]
|
|
?? throw new InvalidOperationException("GetInventoryReport endpoint is not configured.");
|
|
|
|
var qs = new StringBuilder(baseEndpoint).Append('?');
|
|
qs.Append($"dateFrom={dateFrom:yyyy-MM-dd}&dateTo={dateTo:yyyy-MM-dd}");
|
|
|
|
using var http = _apiConfigurationService.CreateHttpClientWithDefaultHeaders(token);
|
|
var response = await http.GetAsync(qs.ToString(), ct);
|
|
var json = await response.Content.ReadAsStringAsync(ct);
|
|
|
|
if (!response.IsSuccessStatusCode)
|
|
return new InventoryReportDto();
|
|
|
|
var result = JsonSerializer.Deserialize<InventoryReportDto>(json, _jsonOpts);
|
|
return result ?? new InventoryReportDto();
|
|
}
|
|
|
|
public async Task<MRSReportDto> GetMRSReportAsync(DateTime dateFrom, DateTime dateTo, CancellationToken ct)
|
|
{
|
|
var token = await _tokenHelper.GetValidTokenAsync();
|
|
if (string.IsNullOrEmpty(token))
|
|
throw new InvalidOperationException("Token has been expired.");
|
|
|
|
var baseEndpoint = _configuration["LLI:NonInvent:InventoryMgmt:GetMRSReport"]
|
|
?? throw new InvalidOperationException("GetMRS endpoint is not configured.");
|
|
|
|
var qs = new StringBuilder(baseEndpoint).Append('?');
|
|
qs.Append($"dateFrom={dateFrom:yyyy-MM-dd}&dateTo={dateTo:yyyy-MM-dd}");
|
|
|
|
using var http = _apiConfigurationService.CreateHttpClientWithDefaultHeaders(token);
|
|
var response = await http.GetAsync(qs.ToString(), ct);
|
|
var json = await response.Content.ReadAsStringAsync(ct);
|
|
|
|
if (!response.IsSuccessStatusCode)
|
|
return new MRSReportDto { };
|
|
|
|
var result = JsonSerializer.Deserialize<MRSReportDto>(json, _jsonOpts);
|
|
return result ?? new MRSReportDto();
|
|
}
|
|
|
|
public async Task<RISReportDto> GetRISReportAsync(DateTime dateFrom, DateTime dateTo, CancellationToken ct)
|
|
{
|
|
var token = await _tokenHelper.GetValidTokenAsync();
|
|
if (string.IsNullOrEmpty(token))
|
|
throw new InvalidOperationException("Token has been expired.");
|
|
|
|
var baseEndpoint = _configuration["LLI:NonInvent:InventoryMgmt:GetRISReport"]
|
|
?? throw new InvalidOperationException("GetMRS endpoint is not configured.");
|
|
|
|
var qs = new StringBuilder(baseEndpoint).Append('?');
|
|
qs.Append($"dateFrom={dateFrom:yyyy-MM-dd}&dateTo={dateTo:yyyy-MM-dd}");
|
|
|
|
using var http = _apiConfigurationService.CreateHttpClientWithDefaultHeaders(token);
|
|
var response = await http.GetAsync(qs.ToString(), ct);
|
|
var json = await response.Content.ReadAsStringAsync(ct);
|
|
|
|
if (!response.IsSuccessStatusCode)
|
|
return new RISReportDto {};
|
|
|
|
var result = JsonSerializer.Deserialize<RISReportDto>(json, _jsonOpts);
|
|
return result ?? new RISReportDto();
|
|
}
|
|
}
|
|
}
|