Beispiel #1
0
        private static IEnumerable <CategoriaConteudo> ObterCategoriasPorUsuario(Usuario usuario, bool exibirTodasUfsGestor, bool exibirTodasCategorias = false)
        {
            var manterCategoria = new ManterCategoriaConteudo();

            // Caso não deseje filtrar as categorias, exibir todas.
            if (exibirTodasCategorias)
            {
                return(manterCategoria.ObterTodasCategoriasConteudo());
            }

            // Atualizar lista de categorias, pois fica salva na sessão.
            var listaCategoriaConteudo = new ManterUsuario().ObterUsuarioPorID(usuario.ID).ListaCategoriaConteudo;

            if (usuario == null)
            {
                throw new AcademicoException("Usuário inválido na busca de categorias");
            }

            // Caso seja gestor, filtrar as categorias.
            if (usuario.IsGestor())
            {
                if (exibirTodasUfsGestor)
                {
                    return(manterCategoria.ObterTodasCategoriasConteudoPorUF(usuario.UF));
                }

                // Caso o usuário possua categorias selecionadas, filtra mais ainda.
                if (listaCategoriaConteudo.Any())
                {
                    return(manterCategoria.ObterTodasCategoriasConteudoPorUF(usuario.UF)
                           .Where(c => c.ListaUsuario.Select(u => u.ID).Contains(usuario.ID)));
                }

                return(manterCategoria.ObterTodasCategoriasConteudoPorUF(usuario.UF));
            }

            // Caso seja administrador, não filtrar as categorias.
            return(manterCategoria.ObterTodasCategoriasConteudo());
        }