2025-07-01 14:00:41 -04:00
|
|
|
|
using DAL;
|
2025-06-24 16:02:27 -04:00
|
|
|
|
using DAS;
|
2025-06-25 13:01:32 -04:00
|
|
|
|
using Shared.DTO.Envios_DGA;
|
2025-07-01 14:00:41 -04:00
|
|
|
|
using Shared.DTO.VariablesEntorno;
|
|
|
|
|
using Shared.Helper;
|
2025-06-24 14:46:32 -04:00
|
|
|
|
|
2025-06-25 13:01:32 -04:00
|
|
|
|
namespace BLL.Recuperacion_DGA
|
2025-06-24 14:46:32 -04:00
|
|
|
|
{
|
|
|
|
|
public class EnvioDGA
|
|
|
|
|
{
|
|
|
|
|
private readonly MedicionScadaRepository _dGAMedicionScadaRepository;
|
2025-07-01 14:00:41 -04:00
|
|
|
|
private readonly MedicionScadaVilosRepository _dgaMedicionScadaVilosRepository;
|
2025-06-24 16:02:27 -04:00
|
|
|
|
private readonly RegistrarMedicion _registrarMedicion;
|
2025-06-24 14:46:32 -04:00
|
|
|
|
|
2025-07-01 14:00:41 -04:00
|
|
|
|
public EnvioDGA(MedicionScadaRepository dGAMedicionScadaRepository, RegistrarMedicion registrarMedicion, MedicionScadaVilosRepository dgaMedicionScadaVilosRepository)
|
2025-06-24 14:46:32 -04:00
|
|
|
|
{
|
|
|
|
|
_dGAMedicionScadaRepository = dGAMedicionScadaRepository;
|
2025-06-24 16:02:27 -04:00
|
|
|
|
_registrarMedicion = registrarMedicion;
|
2025-07-01 14:00:41 -04:00
|
|
|
|
_dgaMedicionScadaVilosRepository = dgaMedicionScadaVilosRepository;
|
2025-06-24 14:46:32 -04:00
|
|
|
|
}
|
|
|
|
|
|
2025-07-01 14:00:41 -04:00
|
|
|
|
public async Task<bool> RegistrarMedicionesAsync()
|
2025-06-24 14:46:32 -04:00
|
|
|
|
{
|
2025-07-02 11:37:41 -04:00
|
|
|
|
try
|
2025-06-24 16:02:27 -04:00
|
|
|
|
{
|
2025-07-02 11:37:41 -04:00
|
|
|
|
await WriteLineAndLog("INICIO", "Inicio proceso de recuperación DGA", "");
|
|
|
|
|
WriteLineAndLog("Obteniendo Mediciones Scada", ConsoleColor.Green);
|
|
|
|
|
var mediciones = await _dGAMedicionScadaRepository.ObtenerMedicionesAsync();
|
|
|
|
|
foreach (var medicion in mediciones)
|
2025-06-24 16:02:27 -04:00
|
|
|
|
{
|
2025-07-02 11:37:41 -04:00
|
|
|
|
try
|
2025-06-24 16:02:27 -04:00
|
|
|
|
{
|
2025-07-02 11:37:41 -04:00
|
|
|
|
if (!string.IsNullOrEmpty(medicion.Code))
|
2025-06-24 16:02:27 -04:00
|
|
|
|
{
|
2025-07-02 11:37:41 -04:00
|
|
|
|
var rutEmpresa = string.Empty;
|
|
|
|
|
if (medicion.tipo_empresa == null)
|
2025-07-01 09:59:59 -04:00
|
|
|
|
{
|
2025-07-02 11:37:41 -04:00
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (medicion.tipo_empresa == "AV")
|
2025-07-01 09:59:59 -04:00
|
|
|
|
{
|
2025-07-02 11:37:41 -04:00
|
|
|
|
rutEmpresa = CredencialDGA.RutAv;
|
|
|
|
|
}
|
|
|
|
|
if (medicion.tipo_empresa == "EV")
|
|
|
|
|
{
|
|
|
|
|
rutEmpresa = CredencialDGA.RutEsval;
|
2025-07-01 09:59:59 -04:00
|
|
|
|
}
|
2025-07-01 14:00:41 -04:00
|
|
|
|
|
2025-07-02 11:37:41 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var body = new MedicionSubterraneaRequest
|
|
|
|
|
{
|
|
|
|
|
Autenticacion = new Autenticacion
|
|
|
|
|
{
|
|
|
|
|
Password = CredencialDGA.Password,
|
|
|
|
|
RutEmpresa = rutEmpresa,
|
|
|
|
|
RutUsuario = CredencialDGA.RutUsuario
|
|
|
|
|
},
|
|
|
|
|
MedicionSubterranea = new Medicion
|
|
|
|
|
{
|
|
|
|
|
Caudal = medicion.Caudal.ToString() ?? "",
|
|
|
|
|
FechaMedicion = medicion.DateOrigen?.ToString("yyyy-MM-dd") ?? "",
|
|
|
|
|
HoraMedicion = medicion.DateOrigen?.ToString("HH:mm:ss") ?? "",
|
|
|
|
|
NivelFreaticoDelPozo = medicion.Nivel.ToString() ?? "",
|
|
|
|
|
Totalizador = medicion.Totalizador.ToString() ?? "",
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
//await _registrarMedicion.EnviarMedicionAsync(medicion.Code, body, medicion.Id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
FileLoggerHelper.LogError($"[Error] {ex.Message}.", ex);
|
|
|
|
|
WriteLineAndLog($"Error al enviar la medición con ID {medicion.Code}.", ConsoleColor.Red);
|
|
|
|
|
}
|
2025-07-01 14:00:41 -04:00
|
|
|
|
}
|
2025-07-02 11:37:41 -04:00
|
|
|
|
await WriteLineAndLog("FIN","Fin proceso de recuperación DGA","");
|
2025-07-01 09:59:59 -04:00
|
|
|
|
|
2025-07-02 11:37:41 -04:00
|
|
|
|
await WriteLineAndLog("INICIO", "Inicio proceso de recuperación DGA los Vilos", "VILOS");
|
|
|
|
|
WriteLineAndLog("Obteniendo Mediciones Scada los Vilos", ConsoleColor.Green);
|
|
|
|
|
var medicionesVilos = await _dgaMedicionScadaVilosRepository.ObtenerMedicionesVilosAsync();
|
|
|
|
|
foreach (var medicionVilos in medicionesVilos)
|
2025-07-01 14:00:41 -04:00
|
|
|
|
{
|
2025-07-02 11:37:41 -04:00
|
|
|
|
try
|
2025-07-01 14:00:41 -04:00
|
|
|
|
{
|
2025-07-02 11:37:41 -04:00
|
|
|
|
if (!string.IsNullOrEmpty(medicionVilos.Code))
|
2025-07-01 14:00:41 -04:00
|
|
|
|
{
|
2025-07-02 11:37:41 -04:00
|
|
|
|
var rutEmpresa = string.Empty;
|
2025-07-01 14:00:41 -04:00
|
|
|
|
|
2025-07-02 11:37:41 -04:00
|
|
|
|
if (medicionVilos.tipo_empresa.Equals("AV"))
|
2025-07-01 14:00:41 -04:00
|
|
|
|
{
|
2025-07-02 11:37:41 -04:00
|
|
|
|
rutEmpresa = CredencialDGA.RutAv;
|
|
|
|
|
}
|
|
|
|
|
else if (medicionVilos.tipo_empresa.Equals("EV"))
|
2025-07-01 14:00:41 -04:00
|
|
|
|
{
|
2025-07-02 11:37:41 -04:00
|
|
|
|
rutEmpresa = CredencialDGA.RutEsval;
|
2025-07-01 14:00:41 -04:00
|
|
|
|
}
|
|
|
|
|
|
2025-07-02 11:37:41 -04:00
|
|
|
|
var body = new MedicionSubterraneaRequest
|
|
|
|
|
{
|
|
|
|
|
Autenticacion = new Autenticacion
|
|
|
|
|
{
|
|
|
|
|
Password = CredencialDGA.Password,
|
|
|
|
|
RutEmpresa = rutEmpresa,
|
|
|
|
|
RutUsuario = CredencialDGA.RutUsuario
|
|
|
|
|
},
|
|
|
|
|
MedicionSubterranea = new Medicion
|
|
|
|
|
{
|
|
|
|
|
Caudal = medicionVilos.Caudal.ToString() ?? "",
|
|
|
|
|
FechaMedicion = medicionVilos.DateOrigen?.ToString("yyyy-MM-dd") ?? "",
|
|
|
|
|
HoraMedicion = medicionVilos.DateOrigen?.ToString("HH:mm:ss") ?? "",
|
|
|
|
|
NivelFreaticoDelPozo = medicionVilos.Nivel.ToString() ?? "",
|
|
|
|
|
Totalizador = medicionVilos.Totalizador.ToString() ?? "",
|
|
|
|
|
}
|
|
|
|
|
};
|
2025-06-24 16:02:27 -04:00
|
|
|
|
|
2025-07-02 11:37:41 -04:00
|
|
|
|
//await _registrarMedicion.EnviarMedicionAsync(medicionVilos.Code, body, medicionVilos.Id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
FileLoggerHelper.LogError($"[Error] {ex.Message}.", ex);
|
|
|
|
|
WriteLineAndLog($"Error al enviar la medición vilos con ID {medicionVilos.Code}.", ConsoleColor.Red);
|
|
|
|
|
}
|
2025-07-01 09:59:59 -04:00
|
|
|
|
}
|
2025-07-02 11:37:41 -04:00
|
|
|
|
await WriteLineAndLog("FIN", "Fin proceso de recuperación DGA los Vilos", "VILOS");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
FileLoggerHelper.LogError($"[Error] {ex.Message}.", ex);
|
|
|
|
|
WriteLineAndLog($"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
|
|
|
|
}
|
2025-07-01 14:00:41 -04:00
|
|
|
|
|
|
|
|
|
static void WriteLineAndLog(string msj, ConsoleColor? color = null)
|
|
|
|
|
{
|
|
|
|
|
if (color.HasValue && Enum.IsDefined(typeof(ConsoleColor), color.Value))
|
|
|
|
|
{
|
|
|
|
|
Console.ForegroundColor = (ConsoleColor)color;
|
|
|
|
|
Console.WriteLine(msj);
|
|
|
|
|
Console.ResetColor();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"{msj}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FileLoggerHelper.LogInformation($"{msj}");
|
|
|
|
|
}
|
2025-07-02 11:37:41 -04:00
|
|
|
|
|
|
|
|
|
static async Task WriteLineAndLog(string evento, string proceso, string operacion = null, ConsoleColor? color = null)
|
|
|
|
|
{
|
|
|
|
|
if (color.HasValue && Enum.IsDefined(typeof(ConsoleColor), color.Value))
|
|
|
|
|
{
|
|
|
|
|
Console.ForegroundColor = (ConsoleColor)color;
|
|
|
|
|
Console.WriteLine($"{proceso}");
|
|
|
|
|
Console.ResetColor();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"{proceso}");
|
|
|
|
|
}
|
|
|
|
|
FileLoggerHelper.LogInformation($"{proceso}");
|
|
|
|
|
await FileLoggerHelper.InsertarLogsAsync(evento,proceso,operacion);
|
|
|
|
|
}
|
2025-06-24 14:46:32 -04:00
|
|
|
|
}
|
|
|
|
|
}
|