Exemplo n.º 1
0
        public IQueryable <Modulo> SelecionarPorSistemaUsuario(int sistema, int usuario)
        {
            Usuario us = new UsuarioRepository().Selecionar(usuario);

            IQueryable <int> dados;

            if (us.Master)
            {
                dados = (from m in _db.Modulos
                         where !m.Administracao && m.SistemaId == sistema
                         select m.Id);
            }
            else
            {
                dados = (from q in _db.UsuarioFuncoes
                         join f in _db.Funcoes on q.FuncaoId equals f.Id
                         join m in _db.Modulos on f.ModuloId equals m.Id
                         where q.UsuarioId == usuario && m.SistemaId == sistema
                         select m.Id).Union((from pf in _db.PerfilFuncoes
                                             join f in _db.Funcoes on pf.FuncaoId equals f.Id
                                             join m in _db.Modulos on f.ModuloId equals m.Id
                                             where (from up in _db.UsuarioPerfis
                                                    where up.UsuarioId == usuario && m.SistemaId == sistema
                                                    select up.PerfilId).Contains(pf.PerfilId)
                                             select m.Id));
            }

            if (us.Administrador)
            {
                dados = dados.Union((from m in _db.Modulos
                                     where m.Administracao && m.SistemaId == sistema
                                     select m.Id));
            }

            return(from m in _db.Modulos
                   where dados.Distinct().Contains(m.Id)
                   select m);
        }
Exemplo n.º 2
0
        public IQueryable <UsuarioFuncaoDTO> SelecionarAcessoPorUsuarioModulo(int usuario, int modulo, int sistema)
        {
            bool admin  = false;
            bool master = false;

            if (usuario != 0)
            {
                Usuario us = new UsuarioRepository().Selecionar(usuario);
                admin  = us.Administrador;
                master = us.Master;
            }

            IQueryable <UsuarioFuncaoDTO> dados;

            if (!master)
            {
                dados =
                    (from q in _db.UsuarioFuncoes
                     join u in _db.Usuarios on q.UsuarioId equals u.Id
                     join f in _db.Funcoes on q.FuncaoId equals f.Id
                     join m in _db.Modulos on f.ModuloId equals m.Id
                     where q.UsuarioId == usuario
                     select new UsuarioFuncaoDTO
                {
                    FuncaoId = q.FuncaoId,
                    FuncaoDescricao = f.Descricao,
                    FuncaoGrupo = f.Grupo,
                    ModuloId = f.ModuloId,
                    ModuloDescricao = m.Descricao,
                    ModuloCor = m.Cor,
                    SistemaId = m.SistemaId,
                    PermiteIncluir = q.PermiteIncluir,
                    PermiteAlterar = q.PermiteAlterar,
                    PermiteExcluir = q.PermiteExcluir
                }).Union((from pf in _db.PerfilFuncoes
                          join f in _db.Funcoes on pf.FuncaoId equals f.Id
                          join m in _db.Modulos on f.ModuloId equals m.Id
                          where (from up in _db.UsuarioPerfis
                                 where up.UsuarioId == usuario
                                 select up.PerfilId).Contains(pf.PerfilId)
                          select new UsuarioFuncaoDTO
                {
                    FuncaoId = pf.FuncaoId,
                    FuncaoDescricao = f.Descricao,
                    FuncaoGrupo = f.Grupo,
                    ModuloId = f.ModuloId,
                    ModuloDescricao = m.Descricao,
                    ModuloCor = m.Cor,
                    SistemaId = m.SistemaId,
                    PermiteIncluir = pf.PermiteIncluir,
                    PermiteAlterar = pf.PermiteAlterar,
                    PermiteExcluir = pf.PermiteExcluir
                }));
            }
            else
            {
                dados = (from f in _db.Funcoes
                         join m in _db.Modulos on f.ModuloId equals m.Id
                         where !m.Administracao && m.SistemaId == sistema
                         select new UsuarioFuncaoDTO
                {
                    FuncaoId = f.Id,
                    FuncaoDescricao = f.Descricao,
                    FuncaoGrupo = f.Grupo,
                    ModuloId = f.ModuloId,
                    ModuloDescricao = m.Descricao,
                    ModuloCor = m.Cor,
                    SistemaId = m.SistemaId,
                    PermiteIncluir = true,
                    PermiteAlterar = true,
                    PermiteExcluir = true
                });
            }

            if (admin)
            {
                dados = dados.Union(
                    (from f in _db.Funcoes
                     join m in _db.Modulos on f.ModuloId equals m.Id
                     where m.Administracao && m.SistemaId == sistema
                     select new UsuarioFuncaoDTO
                {
                    FuncaoId = f.Id,
                    FuncaoDescricao = f.Descricao,
                    FuncaoGrupo = f.Grupo,
                    ModuloId = f.ModuloId,
                    ModuloDescricao = m.Descricao,
                    ModuloCor = m.Cor,
                    SistemaId = m.SistemaId,
                    PermiteIncluir = true,
                    PermiteAlterar = true,
                    PermiteExcluir = true
                }));
            }

            if (modulo != 0)
            {
                dados = dados.Where(p => p.ModuloId == modulo);
            }

            return(dados.Distinct());
        }