private async Task <IEnumerable <Int64> > ObterUnidadesPerfilPessoa(UsuarioLogadoRequest request)
        {
            var perfisUsuario = await ObterPerfilPessoaAsync(request);

            var unidades = new List <Int64>()
            {
                perfisUsuario.Result.UnidadeId
            };

            //Se não for gestor do sistema, deve filtrar
            if (!perfisUsuario.Result.Perfis.Any(p => p.Perfil == (int)PerfilUsuarioEnum.Gestor))
            {
                //Obtém as unidades em que o usuário é chefe
                var unidadesChefia = (from perfil in perfisUsuario.Result.Perfis
                                      from unidade in perfil.Unidades
                                      select unidade).Distinct().ToList();

                //Filtra pelas unidades em que é chefe ou o plano é dele
                unidades.AddRange(unidadesChefia);
                return(unidades);
            }
            return(null);
        }
Example #2
0
        public async Task <IApplicationResult <PactoTrabalhoViewModel> > ObterAtualAsync(UsuarioLogadoRequest request)
        {
            var result = new ApplicationResult <PactoTrabalhoViewModel>();

            DynamicParameters parameters = new DynamicParameters();

            parameters.Add("@situacaoRascunho", (int)SituacaoPactoTrabalhoEnum.Rascunho, DbType.Int32, ParameterDirection.Input);
            parameters.Add("@situacaoEnviadoAceite", (int)SituacaoPactoTrabalhoEnum.EnviadoAceite, DbType.Int32, ParameterDirection.Input);
            parameters.Add("@situacaoAceito", (int)SituacaoPactoTrabalhoEnum.Aceito, DbType.Int32, ParameterDirection.Input);
            parameters.Add("@situacaoEmExecucao", (int)SituacaoPactoTrabalhoEnum.EmExecucao, DbType.Int32, ParameterDirection.Input);
            parameters.Add("@pessoaId", request.UsuarioLogadoId, DbType.Int64, ParameterDirection.Input);

            using (var connection = new SqlConnection(Configuration.GetConnectionString("DefaultConnection")))
            {
                connection.Open();

                var dados = await connection.QueryFirstOrDefaultAsync <PactoTrabalhoViewModel>(PactoTrabalhoRawSqls.ObterAtual, parameters);

                result.Result = dados;

                connection.Close();
            }

            return(result);
        }
Example #3
0
        public async Task <IApplicationResult <DashboardViewModel> > ObterDashboardAsync(UsuarioLogadoRequest request)
        {
            var result = new ApplicationResult <DashboardViewModel>()
            {
                Result = new DashboardViewModel()
            };

            DynamicParameters parameters = new DynamicParameters();

            parameters.Add("@pessoaId", request.UsuarioLogadoId, DbType.Int32, ParameterDirection.Input);

            using (var connection = new SqlConnection(Configuration.GetConnectionString("DefaultConnection")))
            {
                connection.Open();

                var dashboardData = await connection.QueryMultipleAsync(PessoaRawSqls.ObterDashboard, parameters);

                result.Result.PlanosTrabalho = dashboardData.Read <PlanoTrabalhoViewModel>().ToList();
                result.Result.PactosTrabalho = dashboardData.Read <PactoTrabalhoViewModel>().ToList();
                result.Result.Solicitacoes   = dashboardData.Read <PactoTrabalhoSolicitacaoViewModel>().ToList();

                connection.Close();
            }

            return(result);
        }
 public async Task <IActionResult> GetComCatalogoCadastro([FromRoute] UsuarioLogadoRequest request)
 => await EstruturaOrganizacionalQuery.ObterComCatalogoCadastradoComboAsync(request);
 public async Task <IActionResult> GetComPlanoTrabalhoDadosCombo([FromRoute] UsuarioLogadoRequest request)
 => await EstruturaOrganizacionalQuery.ObterUnidadesComPlanoTrabalhoDadosComboAsync(request);
 public async Task <IActionResult> GetPerfilAll([FromQuery] UsuarioLogadoRequest request)
 => await EstruturaOrganizacionalQuery.ObterPerfilPessoaAsync(request);
 public async Task <IActionResult> GetDashboard([FromQuery] UsuarioLogadoRequest request)
 => await PessoaQuery.ObterDashboardAsync(request);
Example #8
0
 public async Task <IActionResult> GetHabilitacao([FromQuery] UsuarioLogadoRequest request)
 => await PlanoTrabalhoQuery.ObterEmHabiliacaoAsync(request);
Example #9
0
 public async Task <IActionResult> GetAtual([FromQuery] UsuarioLogadoRequest request)
 => await PlanoTrabalhoQuery.ObterAtualAsync(request);
        public async Task <IApplicationResult <PessoaPerfilViewModel> > ObterPerfilPessoaAsync(UsuarioLogadoRequest request)
        {
            var result = new ApplicationResult <PessoaPerfilViewModel>();

            var dadosPessoa = await PessoaQuery.ObterPorChaveAsync(request.UsuarioLogadoId);

            result.Result = new PessoaPerfilViewModel()
            {
                PessoaId  = dadosPessoa.Result.PessoaId,
                Nome      = dadosPessoa.Result.Nome,
                UnidadeId = dadosPessoa.Result.UnidadeId,
                Perfis    = new List <PessoaPerfilAcessoViewModel>()
            };

            #region Perfil modo avançado

            var perfilExibirModoAvancado = await DominioQuery.ObterDominioPorClassificacaoAsync(ClassificacaoCatalogoDominioEnum.ModoAvancado);

            if (perfilExibirModoAvancado.Result.Any(g => Int64.Parse(g.Descricao) == request.UsuarioLogadoId))
            {
                result.Result.Perfis.Add(new PessoaPerfilAcessoViewModel()
                {
                    Perfil = (int)PerfilUsuarioEnum.ModoAvancado
                });
            }

            #endregion

            #region Perfis de administração do sistema

            var gestores = await DominioQuery.ObterDominioPorClassificacaoAsync(ClassificacaoCatalogoDominioEnum.GestorSistema);

            if (gestores.Result.Any(g => Int64.Parse(g.Descricao) == request.UsuarioLogadoId))
            {
                result.Result.Perfis.Add(new PessoaPerfilAcessoViewModel()
                {
                    Perfil = (int)PerfilUsuarioEnum.Gestor
                });
            }

            #endregion

            #region Perfis por unidade

            if (dadosPessoa.Result.TipoFuncaoUnidadeId == (int)TipoFuncaoUnidadeEnum.COGEP)
            {
                result.Result.Perfis.Add(new PessoaPerfilAcessoViewModel()
                {
                    Perfil = (int)PerfilUsuarioEnum.GestorPessoas
                });
            }

            if (dadosPessoa.Result.TipoFuncaoUnidadeId == (int)TipoFuncaoUnidadeEnum.COGET)
            {
                result.Result.Perfis.Add(new PessoaPerfilAcessoViewModel()
                {
                    Perfil = (int)PerfilUsuarioEnum.GestorIndicadores
                });
            }

            #endregion

            #region Perfis pelo servidor

            if (dadosPessoa.Result.TipoFuncaoId.HasValue)
            {
                //Se tiver função na unidade dele, tem perfil servidor na unidade acima
                var unidadeChefe = await UnidadeQuery.ObterPorChaveAsync(dadosPessoa.Result.UnidadeId);

                if (unidadeChefe.Result.UnidadeIdPai.HasValue)
                {
                    result.Result.Perfis.Add(new PessoaPerfilAcessoViewModel()
                    {
                        Perfil = (int)PerfilUsuarioEnum.Servidor, Unidades = new List <long>()
                        {
                            unidadeChefe.Result.UnidadeIdPai.Value
                        }
                    });
                }

                if (dadosPessoa.Result.Chefe.HasValue && dadosPessoa.Result.Chefe.Value)
                {
                    //Obtém as unidades subordinadas à que a pessoa é chefe
                    var unidadesSubordinadas = await UnidadeQuery.ObterSubordinadasAsync(dadosPessoa.Result.UnidadeId);

                    var idsUnidades = unidadesSubordinadas.Result.Select(u => Int64.Parse(u.Id)).ToList();

                    //Adiciona os perfis de chefia
                    result.Result.Perfis.Add(new PessoaPerfilAcessoViewModel()
                    {
                        Perfil = (int)PerfilUsuarioEnum.ChefeUnidade, Unidades = idsUnidades
                    });

                    if (dadosPessoa.Result.TipoFuncaoId == (int)TipoFuncaoPessoaEnum.ChefeDepartamento ||
                        dadosPessoa.Result.TipoFuncaoId == (int)TipoFuncaoPessoaEnum.CoordenadorGeral)
                    {
                        result.Result.Perfis.Add(new PessoaPerfilAcessoViewModel()
                        {
                            Perfil = (int)PerfilUsuarioEnum.CoordenadorGeral, Unidades = idsUnidades
                        });
                    }

                    if (dadosPessoa.Result.TipoFuncaoId == (int)TipoFuncaoPessoaEnum.Superintendente ||
                        dadosPessoa.Result.TipoFuncaoId == (int)TipoFuncaoPessoaEnum.Diretor)
                    {
                        result.Result.Perfis.Add(new PessoaPerfilAcessoViewModel()
                        {
                            Perfil = (int)PerfilUsuarioEnum.Diretor, Unidades = idsUnidades
                        });
                    }
                }
            }
            else
            {
                result.Result.Perfis.Add(new PessoaPerfilAcessoViewModel()
                {
                    Perfil = (int)PerfilUsuarioEnum.Servidor, Unidades = new List <long>()
                    {
                        dadosPessoa.Result.UnidadeId
                    }
                });
            }

            #endregion

            return(result);
        }
        private async Task <IEnumerable <PactoTrabalhoViewModel> > RestringirPactosTrabalhoPerfilUsuario(UsuarioLogadoRequest request, IEnumerable <PactoTrabalhoViewModel> items)
        {
            var perfisUsuario = await ObterPerfilPessoaAsync(request);

            //Se não for gestor do sistema, deve filtrar
            if (!perfisUsuario.Result.Perfis.Any(p => p.Perfil == (int)PerfilUsuarioEnum.Gestor))
            {
                //Obtém as unidades em que o usuário é chefe
                var unidadesChefia = (from perfil in perfisUsuario.Result.Perfis
                                      from unidade in perfil.Unidades
                                      select unidade).Distinct().ToList();

                //Filtra pelas unidades em que é chefe ou o plano é dele
                items = items.Where(p => unidadesChefia.Any(uu => uu == p.UnidadeId) || p.PessoaId == perfisUsuario.Result.PessoaId);
            }

            return(items);
        }
        public async Task <IApplicationResult <IEnumerable <DadosComboViewModel> > > ObterPessoasComPactoTrabalhoDadosComboAsync(UsuarioLogadoRequest request)
        {
            var result = new ApplicationResult <IEnumerable <DadosComboViewModel> >();

            //Obtém as pessoas
            var dados = await PessoaQuery.ObterComPactoTrabalhoAsync();

            //Filtra os itens de acordo com o perfil do usuário
            var itens = await RestringirPessoasPerfilUsuario(request, dados.Result);

            //Converte de para DadosComboViewModel
            result.Result = itens.Select(u => new DadosComboViewModel()
            {
                Id = u.PessoaId.ToString(), Descricao = u.Nome
            });

            return(result);
        }
        private async Task <IEnumerable <UnidadeViewModel> > RestringirUnidadesPerfilUsuario(UsuarioLogadoRequest request, IEnumerable <UnidadeViewModel> items, Boolean incluirUnidadePaiSeChefe)
        {
            var retorno       = items.ToList();
            var perfisUsuario = await ObterPerfilPessoaAsync(request);

            //Se não for gestor do sistema, deve filtrar
            if (!perfisUsuario.Result.Perfis.Any(p => p.Perfil == (int)PerfilUsuarioEnum.Gestor))
            {
                //Obtém as unidades em que o usuário é chefe
                var unidadesChefia = (from perfil in perfisUsuario.Result.Perfis
                                      where perfil.Perfil == (int)PerfilUsuarioEnum.ChefeUnidade ||
                                      perfil.Perfil == (int)PerfilUsuarioEnum.CoordenadorGeral ||
                                      perfil.Perfil == (int)PerfilUsuarioEnum.Diretor
                                      from unidade in perfil.Unidades
                                      select unidade).Distinct().ToList();


                //Filtra pelas unidades em que é chefe ou o plano é dele
                retorno = items.Where(p => unidadesChefia.Any(uu => uu == p.UnidadeId) || p.UnidadeId == perfisUsuario.Result.UnidadeId).ToList();

                //Se for para incluir a unidade pai se o usuário for chefe, encontra a unidade e adiciona
                if (incluirUnidadePaiSeChefe && unidadesChefia.Any())
                {
                    var unidadeChefe    = items.FirstOrDefault(u => u.UnidadeId == perfisUsuario.Result.UnidadeId);
                    var unidadePaiChefe = items.FirstOrDefault(u => u.UnidadeId == unidadeChefe.UnidadeIdPai);
                    if (unidadePaiChefe != null)
                    {
                        retorno.Add(unidadePaiChefe);
                    }
                }
            }
            return(retorno);
        }
        public async Task <IApplicationResult <IEnumerable <DadosComboViewModel> > > ObterComCatalogoCadastradoComboAsync(UsuarioLogadoRequest request)
        {
            var result = new ApplicationResult <IEnumerable <DadosComboViewModel> >();

            //Obtém as unidades
            var dados = await UnidadeQuery.ObterComCatalogoCadastradoComboAsync();

            //Filtra as unidades de acordo com o perfil do usuário
            var unidades = await RestringirUnidadesPerfilUsuario(request, dados.Result, false);

            //Converte de UnidadeViewModel para DadosComboViewModel
            result.Result = unidades.Select(u => new DadosComboViewModel()
            {
                Id = u.UnidadeId.ToString(), Descricao = u.SiglaCompleta
            });

            return(result);
        }