diff --git a/BLL/Recuperacion_DGA/EnvioDGA.cs b/BLL/Recuperacion_DGA/EnvioDGA.cs index 0aad658..2e6781b 100644 --- a/BLL/Recuperacion_DGA/EnvioDGA.cs +++ b/BLL/Recuperacion_DGA/EnvioDGA.cs @@ -21,107 +21,168 @@ namespace BLL.Recuperacion_DGA public async Task RegistrarMedicionesAsync() { - WriteLineAndLog("Iniciando el proceso de recuperación DGA..."); - WriteLineAndLog("Obteniendo Mediciones Scada", ConsoleColor.Green); - var mediciones = await _dGAMedicionScadaRepository.ObtenerMedicionesAsync(); - - foreach (var medicion in mediciones) + try { - 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) { - if (!string.IsNullOrEmpty(medicion.Code)) + try { - var rutEmpresa = string.Empty; - if (medicion.tipo_empresa == null) + if (!string.IsNullOrEmpty(medicion.Code)) { - continue; - } - if (medicion.tipo_empresa == "AV") - { - rutEmpresa = CredencialDGA.RutAv; - } - if (medicion.tipo_empresa =="EV") - { - rutEmpresa = CredencialDGA.RutEsval; - } - - - - var body = new MedicionSubterraneaRequest - { - Autenticacion = new Autenticacion + var rutEmpresa = string.Empty; + if (medicion.tipo_empresa == null) { - 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() ?? "", + continue; } - }; - await _registrarMedicion.EnviarMedicionAsync(medicion.Code, body, medicion.Id); + 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); } - } - catch (Exception ex) + 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) { - FileLoggerHelper.LogError($"[Error] {ex.Message}.",ex); - WriteLineAndLog($"Error al enviar la medición con ID {medicion.Code}.", ConsoleColor.Red); + 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; } - - //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; - // } - - // 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); - // } - //} - return true; } @@ -140,5 +201,21 @@ namespace BLL.Recuperacion_DGA 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); + } } } diff --git a/SHARED/Helper/FileLoggerHelper.cs b/SHARED/Helper/FileLoggerHelper.cs index b3e0bf1..767dd89 100644 --- a/SHARED/Helper/FileLoggerHelper.cs +++ b/SHARED/Helper/FileLoggerHelper.cs @@ -1,5 +1,8 @@ -using Microsoft.Extensions.Configuration; +using Dapper; +using Microsoft.Data.SqlClient; +using Microsoft.Extensions.Configuration; using Serilog; +using Shared.DTO.VariablesEntorno; namespace Shared.Helper { @@ -25,5 +28,31 @@ namespace Shared.Helper { Log.Error(ex, message); } + + public static async Task InsertarLogsAsync(string evento, string proceso, string operacion) + { + try + { + using var connection = new SqlConnection(BdConexion.StringConnection); + await connection.OpenAsync(); + + string sql = @"INSERT INTO DGA_LOGS_REGISTROS_ENVIOS (evento, proceso, operacion) + VALUES (@evento, @proceso, @operacion)"; + + await connection.ExecuteAsync(sql, new + { + evento, + proceso, + operacion + }); + return true; + } + catch (Exception e) + { + LogError("Error al insertar logs", e); + return false; + } + } + } } diff --git a/SHARED/Shared.csproj b/SHARED/Shared.csproj index b5542cf..2b365e5 100644 --- a/SHARED/Shared.csproj +++ b/SHARED/Shared.csproj @@ -7,6 +7,8 @@ + +