Leandro Hernan Rojas 3d6af27e34
All checks were successful
CI/CD Pipeline / Build and Deploy with Docker Compose (push) Successful in 5m39s
Add Save Cascade Quote Insert
with Validations
2025-05-07 18:35:49 -03:00

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; }
}
}