Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
            }
        }