Esempio n. 1
0
        private List <HelperFrecuencia> GeneraTopGeneralPrivado(int idTipoUsuario, int idUsuario)
        {
            List <HelperFrecuencia> result;
            DataBaseModelContext    db = new DataBaseModelContext();

            try
            {
                db.ContextOptions.ProxyCreationEnabled = _proxy;
                BusinessArbolAcceso bArbol = new BusinessArbolAcceso();

                List <int> gpos        = db.UsuarioGrupo.Where(w => w.IdUsuario == idUsuario && w.IdRol == (int)BusinessVariables.EnumRoles.AccesoCentroSoporte).Select(s => s.IdGrupoUsuario).ToList();
                var        frecuencias = (
                    from f in db.Frecuencia
                    join aa in db.ArbolAcceso on new { idarbol = f.IdArbolAcceso, idtu = f.IdTipoUsuario } equals new { idarbol = aa.Id, idtu = aa.IdTipoUsuario }
                    join iaa in db.InventarioArbolAcceso on aa.Id equals iaa.IdArbolAcceso
                    join guia in db.GrupoUsuarioInventarioArbol on iaa.Id equals guia.IdInventarioArbolAcceso
                    join ug in db.UsuarioGrupo on new { idgpo = guia.IdGrupoUsuario, idsbgpo = guia.IdSubGrupoUsuario } equals new { idgpo = ug.IdGrupoUsuario, idsbgpo = ug.IdSubGrupoUsuario }
                    //join ug in db.UsuarioGrupo on new { idgpo = guia.IdGrupoUsuario, idsbgpo = guia.IdSubGrupoUsuario } equals new { idgpo = ug.IdGrupoUsuario, idsbgpo = ug.IdSubGrupoUsuario }
                    where gpos.Contains(guia.IdGrupoUsuario) &&  //ug.IdUsuario == idUsuario
                    aa.IdTipoUsuario == idTipoUsuario && !aa.Sistema && aa.Habilitado && aa.EsTerminal
                    select f).Distinct().GroupBy(g => new { g.IdArbolAcceso, g.NumeroVisitas })
                                         .Select(s => new { s.Key.IdArbolAcceso, NumeroVisitas = s.Sum(sa => sa.NumeroVisitas) })
                                         .OrderByDescending(o => o.NumeroVisitas).Take(10).ToList();
                result = new List <HelperFrecuencia>();
                foreach (var type in frecuencias.Distinct())
                {
                    ArbolAcceso arbol = bArbol.ObtenerArbolAcceso(type.IdArbolAcceso);
                    if (!result.Any(a => a.IdArbol == arbol.Id))
                    {
                        result.Add(new HelperFrecuencia
                        {
                            IdArbol                = type.IdArbolAcceso,
                            IdArea                 = bArbol.ObtenerArbolAcceso(type.IdArbolAcceso).IdArea,
                            IdTipoArbol            = arbol.IdTipoArbolAcceso,
                            DescripcionOpcion      = bArbol.ObtenerTipificacion(type.IdArbolAcceso),
                            DescripcionOpcionLarga = arbol.Descripcion
                        });
                    }
                }

                List <int> arbolesAgregados = new List <int>();
                arbolesAgregados.AddRange(result.Select(s => s.IdArbol));
                int take = 10 - result.Count;
                if (result.Count < 10)
                {
                    List <ArbolAcceso> opciones = (from aa in db.ArbolAcceso
                                                   join iaa in db.InventarioArbolAcceso on aa.Id equals iaa.IdArbolAcceso
                                                   join guia in db.GrupoUsuarioInventarioArbol on iaa.Id equals guia.IdInventarioArbolAcceso
                                                   join ug in db.UsuarioGrupo on new { idgpo = guia.IdGrupoUsuario } equals new { idgpo = ug.IdGrupoUsuario }
                                                   where aa.EsTerminal &&
                                                   !aa.Sistema &&
                                                   aa.Habilitado &&
                                                   ug.IdUsuario == idUsuario &&
                                                   aa.IdTipoUsuario == idTipoUsuario && !arbolesAgregados.Contains(aa.Id) &&
                                                   ug.GrupoUsuario.IdTipoGrupo == (int)BusinessVariables.EnumTiposGrupos.AccesoCentroSoporte
                                                   select aa).Distinct().ToList();
                    List <int> opcionesListadas = opciones.Select(s => s.Id).Distinct().ToList();

                    opciones.AddRange(db.ArbolAcceso.Where(
                                          w => w.EsTerminal && !w.Sistema && w.Habilitado && w.Publico &&
                                          w.IdTipoUsuario == idTipoUsuario && !arbolesAgregados.Contains(w.Id) && !opcionesListadas.Contains(w.Id))
                                      .OrderByDescending(d => d.FechaAlta)
                                      .Take(take)
                                      .ToList());
                    foreach (ArbolAcceso opcion in opciones)
                    {
                        ArbolAcceso arbol = bArbol.ObtenerArbolAcceso(opcion.Id);
                        result.Add(new HelperFrecuencia
                        {
                            IdArbol                = arbol.Id,
                            IdArea                 = arbol.IdArea,
                            IdTipoArbol            = arbol.IdTipoArbolAcceso,
                            DescripcionOpcion      = bArbol.ObtenerTipificacion(arbol.Id),
                            DescripcionOpcionLarga = arbol.Descripcion
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                db.Dispose();
            }
            return(result.Take(10).ToList());
        }
Esempio n. 2
0
        public List <HelperFrecuencia> GeneraTopIncidentePublico(int idTipoUsuario)
        {
            List <HelperFrecuencia> result;
            DataBaseModelContext    db = new DataBaseModelContext();

            try
            {
                db.ContextOptions.ProxyCreationEnabled = _proxy;
                BusinessArbolAcceso bArbol = new BusinessArbolAcceso();
                var frecuencias            = (from f in db.Frecuencia
                                              where f.ArbolAcceso.IdTipoUsuario == idTipoUsuario && !f.ArbolAcceso.Sistema && f.ArbolAcceso.Habilitado && f.ArbolAcceso.Publico &&
                                              f.IdTipoArbolAcceso == (int)BusinessVariables.EnumTipoArbol.ReportarProblemas
                                              group f by f.IdArbolAcceso
                                              into frec
                                              orderby frec.Key
                                              select new
                {
                    IdArbolAcceso = frec.Key,
                    NumeroVisitas = frec.Sum(s => s.NumeroVisitas)
                }).Take(10);

                result = new List <HelperFrecuencia>();
                foreach (var type in frecuencias.Distinct())
                {
                    ArbolAcceso arbol = bArbol.ObtenerArbolAcceso(type.IdArbolAcceso);
                    result.Add(new HelperFrecuencia
                    {
                        IdArbol                = type.IdArbolAcceso,
                        IdArea                 = bArbol.ObtenerArbolAcceso(type.IdArbolAcceso).IdArea,
                        IdTipoArbol            = arbol.IdTipoArbolAcceso,
                        DescripcionOpcion      = bArbol.ObtenerTipificacion(type.IdArbolAcceso),
                        DescripcionOpcionLarga = arbol.Descripcion
                    });
                }

                List <int> arbolesAgregados = new List <int>();
                arbolesAgregados.AddRange(result.Select(s => s.IdArbol));
                int take = 10 - result.Count;
                if (result.Count < 10)
                {
                    List <ArbolAcceso> opciones = db.ArbolAcceso.Where(w => w.IdTipoArbolAcceso == (int)BusinessVariables.EnumTipoArbol.ReportarProblemas && w.EsTerminal && w.Publico && !w.Sistema && w.Habilitado && w.IdTipoUsuario == idTipoUsuario && !arbolesAgregados.Contains(w.Id)).OrderByDescending(d => d.FechaAlta).Take(take).ToList();
                    foreach (ArbolAcceso opcion in opciones)
                    {
                        ArbolAcceso arbol = bArbol.ObtenerArbolAcceso(opcion.Id);
                        result.Add(new HelperFrecuencia
                        {
                            IdArbol                = arbol.Id,
                            IdArea                 = arbol.IdArea,
                            IdTipoArbol            = arbol.IdTipoArbolAcceso,
                            DescripcionOpcion      = bArbol.ObtenerTipificacion(arbol.Id),
                            DescripcionOpcionLarga = arbol.Descripcion
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                db.Dispose();
            }
            return(result.Take(10).ToList());
        }