/// <summary> /// Obtiene las configuraciones de alerta /// </summary> /// <param name="activo"></param> internal List <AlertaInfo> ObtenerConfiguracionAlertas(EstatusEnum activo) { List <AlertaInfo> listaAlertaConfiguracion = null; try { var IncidenciasDal = new IncidenciasDAL(); listaAlertaConfiguracion = IncidenciasDal.ObtenerConfiguracionAlertas(activo); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(listaAlertaConfiguracion); }
/// <summary> /// Genera Incidencias SIAP /// </summary> internal void GenerarIncidenciasSIAP() { try { List <IncidenciasInfo> listaIncidencias = new List <IncidenciasInfo>(); List <IncidenciasInfo> listaNuevasIncidencias = new List <IncidenciasInfo>(); List <XDocument> listaNew = new List <XDocument>(); var usuarioBL = new UsuarioBL(); usuario = usuarioBL.ObtenerPorActiveDirectory(UsuarioProcesosEnum.AlertaSIAP.ToString()); IList <OrganizacionInfo> ListaOrganizacion = new List <OrganizacionInfo>(); var organizacionBL = new OrganizacionBL(); ListaOrganizacion = organizacionBL.ObtenerTodos(); var IncidenciasDal = new IncidenciasDAL(); listaAlertaConfiguracion = IncidenciasDal.ObtenerConfiguracionAlertas(EstatusEnum.Activo); listaIncidencias = ObtenerIncidenciasActivas(); if (listaAlertaConfiguracion != null && listaAlertaConfiguracion.Any()) { foreach (AlertaInfo alertaInfo in listaAlertaConfiguracion) { List <XDocument> listaNueva = new List <XDocument>(); string query = CrearQuery(alertaInfo.ConfiguracionAlerta); XDocument resultadoQuery = IncidenciasDal.EjecutarQuery(query); if (resultadoQuery != null) { if (resultadoQuery.Root != null) { var result = resultadoQuery.Root.Elements().ToList(); listaNueva.AddRange(result.Select(xElement => XDocument.Parse(xElement.ToString()))); } if (listaIncidencias != null && listaIncidencias.Any()) { List <XDocument> listaRegistrada = new List <XDocument>(); var incidencias = listaIncidencias.Where(x => x.Alerta.AlertaID == alertaInfo.AlertaID).ToList(); listaRegistrada.AddRange(incidencias.Select(incidenciasInfo => XDocument.Parse(incidenciasInfo.XmlConsulta.ToString()))); if (incidencias.Any()) { List <XDocument> registradas = new List <XDocument>(); foreach (var xDocument in listaRegistrada) { var xdocumetCopy = new XDocument ( new XElement("Table", from row in xDocument.Root.Elements() select new XElement(row.Name, row.Value))); foreach (var document in listaNueva.Where(document => XNode.DeepEquals(xdocumetCopy, document))) { listaNew.Add(document); registradas.Add(xDocument); } } if (alertaInfo.TerminadoAutomatico == EstatusEnum.Activo) { listaRegistrada = listaRegistrada.Except(registradas).ToList(); if (listaRegistrada != null && listaRegistrada.Any()) { foreach (IncidenciasInfo incidencia in listaRegistrada .Select(xDocument => incidencias.FirstOrDefault(x => XNode.DeepEquals(x.XmlConsulta, xDocument))) .Where(incidencia => incidencia != null).Where(incidencia => incidencia.Estatus.EstatusId != Estatus.CerrarAler.GetHashCode())) { CerrarIncidenciaAutomatico(incidencia); } } } listaNueva = listaNueva.Except(listaNew).ToList(); } } if (listaNueva.Any()) { foreach (var xDocument in listaNueva) { int organizacionID = 0; foreach (var xElement in xDocument.Root.Elements()) { if (xElement.Name.ToString().ToUpper() == "OrganizacionID".ToUpper()) { int xElementOrganizacionID; if (int.TryParse(xElement.Value, out xElementOrganizacionID)) { OrganizacionInfo organizacion = ListaOrganizacion.FirstOrDefault(o => o.OrganizacionID == (int.Parse(xElement.Value)) && o.TipoOrganizacion.TipoOrganizacionID == TipoOrganizacion.Ganadera.GetHashCode()); if (organizacion != null) { organizacionID = organizacion.OrganizacionID; } } break; } if (xElement.Name.ToString().ToUpper() == "Nombre_Del_Centro".ToUpper()) { OrganizacionInfo organizacion = ListaOrganizacion.FirstOrDefault(o => o.Descripcion.ToUpper() == (xElement.Value.ToUpper())); organizacion = ListaOrganizacion.FirstOrDefault( o => organizacion != null && o.Division.ToUpper() == organizacion.Division.ToUpper() && o.TipoOrganizacion.TipoOrganizacionID == TipoOrganizacion.Ganadera.GetHashCode()); if (organizacion != null) { organizacionID = organizacion.OrganizacionID; } break; } } IncidenciasInfo incidenciasInfo = new IncidenciasInfo { Organizacion = new OrganizacionInfo { OrganizacionID = organizacionID }, Alerta = new AlertaInfo { AlertaID = alertaInfo.AlertaID, HorasRespuesta = alertaInfo.HorasRespuesta, ConfiguracionAlerta = new ConfiguracionAlertasInfo { NivelAlerta = new NivelAlertaInfo { NivelAlertaId = alertaInfo.ConfiguracionAlerta.NivelAlerta.NivelAlertaId } } }, XmlConsulta = xDocument, Estatus = new EstatusInfo { EstatusId = Estatus.NuevaAlert.GetHashCode() }, UsuarioCreacionID = usuario.UsuarioID, Activo = EstatusEnum.Activo }; listaNuevasIncidencias.Add(incidenciasInfo); } } } } } using (var transaction = new TransactionScope()) { if (listaNuevasIncidencias.Any()) { GuardarNuevasIncidencias(listaNuevasIncidencias, TipoFolio.AlertaSiap.GetHashCode()); } ProcesarIncicencias(); transaction.Complete(); } } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }