Integracion_DGA/DAS/RegistrarMedicion.cs

72 lines
2.7 KiB
C#
Raw Normal View History

using DAL;
using Microsoft.Extensions.Configuration;
using Shared.DTO.Envios_DGA;
2025-07-01 09:59:59 -04:00
using Shared.DTO.VariablesEntorno;
2025-06-24 16:02:27 -04:00
using System.Text;
using System.Text.Json;
namespace DAS
2025-06-24 14:46:32 -04:00
{
public class RegistrarMedicion
{
2025-06-24 16:02:27 -04:00
private readonly HttpClient _httpClient;
private readonly LogMedicionScadaRepository _logMedicionScadaRepository;
2025-06-24 16:02:27 -04:00
2025-07-01 09:59:59 -04:00
public RegistrarMedicion(HttpClient httpClient, LogMedicionScadaRepository logMedicionScadaRepository)
2025-06-24 16:02:27 -04:00
{
_httpClient = httpClient;
_logMedicionScadaRepository = logMedicionScadaRepository;
2025-06-24 16:02:27 -04:00
}
public async Task<bool> EnviarMedicionAsync(string codigoObra, MedicionSubterraneaRequest request, long idMedicion)
2025-06-24 16:02:27 -04:00
{
2025-07-01 09:59:59 -04:00
request.Autenticacion.Password = CredencialDGA.Password;
request.Autenticacion.RutEmpresa = CredencialDGA.RutEmpresa; //TODO: condicionar rut empresa
request.Autenticacion.RutUsuario = CredencialDGA.RutUsuario;
2025-06-24 16:02:27 -04:00
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", codigoObra);
content.Headers.Add("timeStampOrigen", timeStamp);
2025-06-24 14:46:32 -04:00
2025-07-01 09:59:59 -04:00
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))
{
2025-07-01 09:59:59 -04:00
comprobante = comprobanteProp.GetString() ?? "";
}
}
catch
{
}
}
2025-07-01 09:59:59 -04:00
var logMedicionScada = new LogMedicionScada
{
EstadoEnvio = estado,
JsonEnviado = json,
JsonRecibido = jsonRecibido,
Comprobante = comprobante,
FechaEnvio = DateTime.UtcNow,
IdMedicionSmartscadaOperacion = idMedicion
};
await _logMedicionScadaRepository.InsertarLogMedicionScadaAsync(logMedicionScada);
2025-06-24 14:46:32 -04:00
2025-06-24 16:02:27 -04:00
return response.IsSuccessStatusCode;
}
2025-06-24 14:46:32 -04:00
}
}