All checks were successful
CI/CD Pipeline / Build and Deploy with Docker Compose (pull_request) Successful in 10m11s
close #66
70 lines
2.7 KiB
C#
70 lines
2.7 KiB
C#
using Domain.Dtos.Sales;
|
|
using Domain.Generics;
|
|
using System.Net.Http.Json;
|
|
|
|
namespace phronCare.UIBlazor.Services.Sales.SalesDocuments
|
|
{
|
|
public sealed class SalesDocumentService : ISalesDocumentService
|
|
{
|
|
private readonly HttpClient _http;
|
|
|
|
public SalesDocumentService(HttpClient http)
|
|
{
|
|
_http = http;
|
|
}
|
|
|
|
public async Task<PagedResult<SalesDocumentSummaryDto>> SearchAsync(SalesDocumentSearchParams searchParams)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(searchParams);
|
|
|
|
var queryParams = new List<string>();
|
|
|
|
void AddParam(string key, string? value)
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(value))
|
|
queryParams.Add($"{key}={Uri.EscapeDataString(value)}");
|
|
}
|
|
|
|
AddParam("customerId", searchParams.CustomerId?.ToString());
|
|
AddParam("customerText", searchParams.CustomerText);
|
|
AddParam("quoteId", searchParams.QuoteId?.ToString());
|
|
AddParam("documentType", searchParams.DocumentType?.ToString());
|
|
AddParam("status", searchParams.Status?.ToString());
|
|
AddParam("issueDateFrom", searchParams.IssueDateFrom?.ToString("o"));
|
|
AddParam("issueDateTo", searchParams.IssueDateTo?.ToString("o"));
|
|
AddParam("page", searchParams.Page.ToString());
|
|
AddParam("pageSize", searchParams.PageSize.ToString());
|
|
|
|
var url = "/api/SalesDocument/search";
|
|
if (queryParams.Any())
|
|
url += "?" + string.Join("&", queryParams);
|
|
|
|
var result = await _http.GetFromJsonAsync<PagedResult<SalesDocumentSummaryDto>>(url);
|
|
return result ?? new PagedResult<SalesDocumentSummaryDto>();
|
|
}
|
|
|
|
public async Task<SalesDocumentDto?> GetByIdAsync(int id)
|
|
{
|
|
return await _http.GetFromJsonAsync<SalesDocumentDto>($"/api/SalesDocument/{id}");
|
|
}
|
|
|
|
public async Task<SalesDocumentDto> CreateAsync(SalesDocumentCreateRequest request)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(request);
|
|
|
|
var response = await _http.PostAsJsonAsync("/api/SalesDocument", request);
|
|
|
|
if (!response.IsSuccessStatusCode)
|
|
{
|
|
var serverMessage = await response.Content.ReadAsStringAsync();
|
|
throw new Exception(string.IsNullOrWhiteSpace(serverMessage)
|
|
? "No se pudo crear el Sales Document."
|
|
: serverMessage);
|
|
}
|
|
|
|
var result = await response.Content.ReadFromJsonAsync<SalesDocumentDto>();
|
|
return result ?? throw new Exception("Respuesta vacía del servidor.");
|
|
}
|
|
}
|
|
}
|