using DAL; using DAS; using Shared.DTO.Envios_DGA; using Shared.DTO.VariablesEntorno; using Shared.Helper; namespace BLL.Recuperacion_DGA { public class EnvioDGA { private readonly MedicionScadaRepository _dGAMedicionScadaRepository; private readonly MedicionScadaVilosRepository _dgaMedicionScadaVilosRepository; private readonly RegistrarMedicion _registrarMedicion; public EnvioDGA(MedicionScadaRepository dGAMedicionScadaRepository, RegistrarMedicion registrarMedicion, MedicionScadaVilosRepository dgaMedicionScadaVilosRepository) { _dGAMedicionScadaRepository = dGAMedicionScadaRepository; _registrarMedicion = registrarMedicion; _dgaMedicionScadaVilosRepository = dgaMedicionScadaVilosRepository; } public async Task RegistrarMedicionesAsync() { try { 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) { try { if (!string.IsNullOrEmpty(medicion.Code)) { var rutEmpresa = string.Empty; if (medicion.tipo_empresa == null) { continue; } if (medicion.tipo_empresa == "AV") { rutEmpresa = CredencialDGA.RutAv; } if (medicion.tipo_empresa == "EV") { rutEmpresa = CredencialDGA.RutEsval; } List vacios = new List(); if (medicion.Caudal == null || medicion.Caudal.Equals("")) { vacios.Add("caudal"); } if (medicion.DateOrigen == null) { vacios.Add("fecha origen"); } if (medicion.nivelFreaticoDelPozo == null || medicion.nivelFreaticoDelPozo.ToString().Equals("")) { vacios.Add("nivel freatico"); } if (medicion.Totalizador == null || medicion.Totalizador.Equals("")) { vacios.Add("totalizador"); } if (vacios.Count > 0) { await FileLoggerHelper.InsertarLogsAsync("REGISTRAR", $"Medicion {medicion.Code} no registra {string.Join(", ", vacios)}",""); } 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.nivelFreaticoDelPozo?.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); } } await WriteLineAndLog("FIN","Fin proceso de recuperación DGA",""); 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) { try { if (!string.IsNullOrEmpty(medicionVilos.Code)) { var rutEmpresa = string.Empty; if (medicionVilos.tipo_empresa.Equals("AV")) { rutEmpresa = CredencialDGA.RutAv; } else if (medicionVilos.tipo_empresa.Equals("EV")) { rutEmpresa = CredencialDGA.RutEsval; } List vacios = new List(); if (medicionVilos.Caudal == null || medicionVilos.Caudal.Equals("")) { vacios.Add("caudal"); } if (medicionVilos.DateOrigen == null) { vacios.Add("fecha origen"); } if (medicionVilos.nivelFreaticoDelPozo == null || medicionVilos.nivelFreaticoDelPozo.ToString().Equals("")) { vacios.Add("nivel freatico"); } if (medicionVilos.Totalizador == null || medicionVilos.Totalizador.Equals("")) { vacios.Add("totalizador"); } if (vacios.Count > 0) { await FileLoggerHelper.InsertarLogsAsync("REGISTRAR", $"Medicion {medicionVilos.Code} no registra {string.Join(", ", vacios)}", "VILOS"); } 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.nivelFreaticoDelPozo?.ToString() ?? "", Totalizador = medicionVilos.Totalizador.ToString() ?? "", } }; //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); } } 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; } return true; } 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}"); } 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); } } }