Integracion_DGA/BLL/Recuperacion_DGA/EnvioDGA.cs

83 lines
3.6 KiB
C#
Raw Normal View History

using System.Text.Json;
using DAL;
2025-06-24 16:02:27 -04:00
using DAS;
using Shared.DTO.Envios_DGA;
using Shared.DTO.VariablesEntorno;
using Shared.Helper;
2025-06-24 14:46:32 -04:00
namespace BLL.Recuperacion_DGA
2025-06-24 14:46:32 -04:00
{
public class EnvioDGA
{
2025-07-16 20:39:24 -04:00
private readonly MedicionDGARepository _dGAMedicionRepository;
2025-06-24 16:02:27 -04:00
private readonly RegistrarMedicion _registrarMedicion;
2025-06-24 14:46:32 -04:00
2025-07-16 20:39:24 -04:00
public EnvioDGA(MedicionDGARepository dGAMedicionRepository, RegistrarMedicion registrarMedicion)
2025-06-24 14:46:32 -04:00
{
2025-07-16 20:39:24 -04:00
_dGAMedicionRepository = dGAMedicionRepository;
2025-06-24 16:02:27 -04:00
_registrarMedicion = registrarMedicion;
2025-06-24 14:46:32 -04:00
}
public async Task<bool> RegistrarMedicionesAsync()
2025-06-24 14:46:32 -04:00
{
try
2025-06-24 16:02:27 -04:00
{
2025-07-16 20:39:24 -04:00
ConsoleLoggerHelper.WriteLineAndLogEventoAsync("INICIO", "Inicio proceso de recuperación DGA", "");
ConsoleLoggerHelper.WriteLineAndLogInfo("Obteniendo Mediciones Scada", ConsoleColor.Green);
var mediciones = await _dGAMedicionRepository.ObtenerMedicionesAsync();
var listaMediciones = new List<Object>();
2025-07-16 20:39:24 -04:00
foreach (var medicion in mediciones)
2025-06-24 16:02:27 -04:00
{
try
2025-06-24 16:02:27 -04:00
{
var fechaEnvio = DateTime.UtcNow;
var body = new MedicionSubterraneaRequest
{
Autenticacion = new Autenticacion
{
Password = CredencialDGA.Password,
2025-07-16 20:39:24 -04:00
RutEmpresa = medicion.TIPO_EMPRESA == "EV" ? CredencialDGA.RutEsval : CredencialDGA.RutAv,
RutUsuario = CredencialDGA.RutUsuario
},
MedicionSubterranea = new Medicion
{
2025-07-16 20:39:24 -04:00
Caudal = medicion.CAUDAL ?? "",
FechaMedicion = medicion.FECHA_MEDICION_CAUDAL?.ToString("yyyy-MM-dd") ?? "",
HoraMedicion = medicion.FECHA_MEDICION_CAUDAL?.ToString("HH:mm:ss") ?? "",
NivelFreaticoDelPozo = medicion.NIVEL_FREATICO_DEL_POZO ?? "",
Totalizador = medicion.TOTALIZADOR_CAUDAL ?? "",
}
};
await _registrarMedicion.EnviarMedicionAsync(medicion, body, fechaEnvio);
2025-07-16 20:39:24 -04:00
listaMediciones.Add(new {Id = medicion.ID,FechaEnvio = fechaEnvio.ToString("yyyy-MM-dd HH:mm:ss"), Enviado = medicion.ENVIADO + 1});
}
catch (Exception ex)
{
FileLoggerHelper.LogError($"[Error] {ex.Message}.", ex);
2025-07-16 20:39:24 -04:00
ConsoleLoggerHelper.WriteLineAndLogInfo($"Error al enviar la medición con ID {medicion.CODIGO_DGA}.", ConsoleColor.Red);
}
}
var listaMedicionesJson = JsonSerializer.Serialize(listaMediciones);
if (listaMediciones.Count > 0)
{
2025-07-16 20:39:24 -04:00
await MedicionDGARepository.ActualizarMedicionesAsync(listaMedicionesJson);
}
2025-07-16 20:39:24 -04:00
ConsoleLoggerHelper.WriteLineAndLogEventoAsync("FIN","Fin proceso de recuperación DGA","");
}
catch (Exception ex)
{
FileLoggerHelper.LogError($"[Error] {ex.Message}.", ex);
2025-07-16 20:39:24 -04:00
ConsoleLoggerHelper.WriteLineAndLogInfo($"Error al procesar las mediciones.", ConsoleColor.Red);
return false;
2025-07-01 09:59:59 -04:00
}
return true;
2025-06-24 14:46:32 -04:00
}
}
}