All checks were successful
CI/CD Pipeline / Build and Deploy with Docker Compose (push) Successful in 5m39s
with Validations
63 lines
2.0 KiB
C#
63 lines
2.0 KiB
C#
using Domain.Entities;
|
|
using System.Net.Http.Json;
|
|
|
|
namespace phronCare.UIBlazor.Services.Sales.Quotes
|
|
{
|
|
public class QuoteService : IQuoteService
|
|
{
|
|
private readonly HttpClient _http;
|
|
|
|
public QuoteService(HttpClient http)
|
|
{
|
|
_http = http;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Envía el EQuoteHeader junto con el formSeriesId al backend
|
|
/// y recibe el número de presupuesto generado o un error.
|
|
/// </summary>
|
|
public async Task<CreateQuoteResult> CreateFullQuoteAsync(EQuoteHeader quote, int formSeriesId)
|
|
{
|
|
// 1) Creamos el DTO request tal cual lo espera el controller
|
|
var request = new CreateFullQuoteRequest
|
|
{
|
|
Quote = quote,
|
|
FormSeriesId = formSeriesId
|
|
};
|
|
|
|
// 2) Enviamos ese DTO al endpoint
|
|
var response = await _http.PostAsJsonAsync("/api/quote/createfull", request);
|
|
//var url = $"/api/quote/createfull?formSeriesId={formSeriesId}";
|
|
//var response = await _http.PostAsJsonAsync(url, quote);
|
|
|
|
|
|
if (!response.IsSuccessStatusCode)
|
|
{
|
|
// Leer mensaje de error del servidor
|
|
var serverMessage = await response.Content.ReadAsStringAsync();
|
|
return new CreateQuoteResult
|
|
{
|
|
Success = false,
|
|
ErrorMessage = serverMessage
|
|
};
|
|
}
|
|
|
|
// Deserializar el resultado esperado
|
|
var result = await response.Content.ReadFromJsonAsync<CreateQuoteResult>();
|
|
return result!;
|
|
}
|
|
}
|
|
public class CreateQuoteResult
|
|
{
|
|
public bool Success { get; set; }
|
|
public string QuoteNumber { get; set; } = string.Empty;
|
|
public string ErrorMessage { get; set; } = string.Empty;
|
|
}
|
|
public class CreateFullQuoteRequest
|
|
{
|
|
public EQuoteHeader Quote { get; set; } = default!;
|
|
public int FormSeriesId { get; set; }
|
|
}
|
|
|
|
}
|