using System.Text; using System.Text.Json; using DAL; using Shared.DTO.Envios_DGA; using Shared.DTO.VariablesEntorno; namespace DAS { public class RegistrarMedicion { private readonly HttpClient _httpClient; private readonly LogMedicionScadaRepository _logMedicionScadaRepository; public RegistrarMedicion(HttpClient httpClient, LogMedicionScadaRepository logMedicionScadaRepository) { _httpClient = httpClient; _logMedicionScadaRepository = logMedicionScadaRepository; } public async Task EnviarMedicionAsync(MedicionScada medicion, MedicionSubterraneaRequest request,DateTime fechaEnvio) { var timeStamp = DateTime.UtcNow.ToString("yyyy-MM-dd'T'HH:mm:ss-0000"); var json = JsonSerializer.Serialize(request); var content = new StringContent(json, Encoding.UTF8, "application/json"); content.Headers.Add("codigoObra", medicion.Code); content.Headers.Add("timeStampOrigen", timeStamp); var response = await _httpClient.PostAsync($"{SubterraneaApiUrl.BaseUrl}{SubterraneaApiUrl.EndPoint}", content); string jsonRecibido = await response.Content.ReadAsStringAsync(); string estado = response.IsSuccessStatusCode ? "OK" : "ERROR"; string comprobante = string.Empty; if (response.IsSuccessStatusCode) { try { using var doc = JsonDocument.Parse(jsonRecibido); if (doc.RootElement.TryGetProperty("data", out var dataProp) && dataProp.TryGetProperty("numeroComprobante", out var comprobanteProp)) { comprobante = comprobanteProp.GetString() ?? ""; } } catch { } } var logMedicionScada = new LogMedicionScada { EstadoEnvio = estado, JsonEnviado = json, JsonRecibido = jsonRecibido, Comprobante = comprobante, FechaEnvio = fechaEnvio, IdMedicionSmartscadaOperacion = medicion.Id }; await _logMedicionScadaRepository.InsertarLogMedicionScadaAsync(logMedicionScada); return true; } } }