public async Task <bool> Handle(TrataNotificacaoCargosNiveisCommand request, CancellationToken cancellationToken)
        {
            foreach (var notificacaoParaTratarAgrupada in request.Notificacoes.GroupBy(a => a.UECodigo))
            {
                var cargosIdsDaUe       = notificacaoParaTratarAgrupada.Select(a => a.Cargo).Distinct().ToList();
                var listaCargoDosNiveis = EnumExtensao.ListarDto <Cargo>();
                cargosIdsDaUe.AddRange(listaCargoDosNiveis.Select(a => a.Id));
                cargosIdsDaUe = cargosIdsDaUe.Distinct().ToList();
                var dreCodigo = notificacaoParaTratarAgrupada.FirstOrDefault(a => !string.IsNullOrEmpty(a.DRECodigo)).DRECodigo;

                var funcionariosCargosDaUe = await mediator.Send(new ObterFuncionariosCargosPorUeCargosQuery(notificacaoParaTratarAgrupada.Key, cargosIdsDaUe, dreCodigo));

                var workflowsIdsParaTratar = notificacaoParaTratarAgrupada.Select(a => a.WorkflowId).Distinct().ToList();

                foreach (var workflowsIdParaTratar in workflowsIdsParaTratar)
                {
                    var notificacaoParaTratar = notificacaoParaTratarAgrupada.FirstOrDefault(a => a.WorkflowId == workflowsIdParaTratar);

                    var funcionariosNoCargo = funcionariosCargosDaUe.Where(a => a.CargoId == notificacaoParaTratar.Cargo).ToList();

                    if (!funcionariosNoCargo.Any())
                    {
                        await mediator.Send(new AlteraWorkflowAprovacaoNivelNotificacaoCargoCommand(notificacaoParaTratar.WorkflowId, notificacaoParaTratar.NotificacaoId, funcionariosCargosDaUe.ToList()));
                    }
                    else
                    {
                        await mediator.Send(new AlteraWorkflowAprovacaoNotificacaoCargoCommand(notificacaoParaTratar.WorkflowId, notificacaoParaTratar.NotificacaoId, funcionariosNoCargo));
                    }
                }
            }

            return(true);
        }
示例#2
0
        public async Task <IEnumerable <OpcaoDropdownDto> > Handle(ObterFiltroRelatoriosModalidadesPorUeQuery request, CancellationToken cancellationToken)
        {
            if (request.CodigoUe == "-99")
            {
                return(EnumExtensao.ListarDto <Modalidade>().Select(c => new OpcaoDropdownDto(c.Id.ToString(), c.Descricao)));
            }

            var login  = servicoUsuario.ObterLoginAtual();
            var perfil = servicoUsuario.ObterPerfilAtual();

            var listaAbrangencia = await repositorioAbrangencia.ObterModalidades(login, perfil, request.AnoLetivo, request.ConsideraHistorico);

            var modalidades = await repositorioAbrangencia.ObterModalidadesPorUe(request.CodigoUe);

            return(modalidades?.Where(m => listaAbrangencia.Contains((int)m))?.Select(c => new OpcaoDropdownDto(((int)c).ToString(), c.Name())));
        }
        public async Task <IEnumerable <OpcaoDropdownDto> > Handle(ObterFiltroRelatoriosModalidadesPorUeAbrangenciaQuery request, CancellationToken cancellationToken)
        {
            if (request.CodigoUe == "-99")
            {
                return(EnumExtensao.ListarDto <Modalidade>().Select(c => new OpcaoDropdownDto(c.Id.ToString(), c.Descricao)));
            }

            var usuarioLogado = await mediator.Send(new ObterUsuarioLogadoQuery());

            if (usuarioLogado == null)
            {
                throw new NegocioException("Não foi possível localizar o usuario logado.");
            }

            var modalidades = await repositorioAbrangencia.ObterModalidadesPorUeAbrangencia(request.CodigoUe, usuarioLogado.Login, usuarioLogado.PerfilAtual);

            return(modalidades?.Select(c => new OpcaoDropdownDto(((int)c).ToString(), c.Name())));
        }
示例#4
0
 public IEnumerable <EnumeradoRetornoDto> ObterCategorias()
 {
     return(EnumExtensao.ListarDto <NotificacaoCategoria>());
 }
示例#5
0
 public IEnumerable <EnumeradoRetornoDto> ObterTipos()
 {
     return(EnumExtensao.ListarDto <NotificacaoTipo>());
 }
示例#6
0
 public IEnumerable <EnumeradoRetornoDto> ObterStatus()
 {
     return(EnumExtensao.ListarDto <NotificacaoStatus>());
 }
示例#7
0
        public async Task <IList <DisciplinaRetornoDto> > Handle(ObterCCPorTurmaUsuarioQuery request, CancellationToken cancellationToken)
        {
            var componenteMat = new DisciplinaRetornoDto()
            {
                CodigoComponenteCurricular = "math", Nome = "Matemática"
            };
            var componentePor = new DisciplinaRetornoDto()
            {
                CodigoComponenteCurricular = "port", Nome = "Língua Portuguesa"
            };

            var listFixaComponentes = new List <DisciplinaRetornoDto>()
            {
                componenteMat, componentePor
            };

            var perfilAtual = await mediator.Send(new ObterPerfilUsuarioLogadoQuery());

            if (perfilAtual.ToUpper() == "40E1E074-37D6-E911-ABD6-F81654FE895D")
            {
                var token = await mediator.Send(new ObterTokenUsuarioLogadoQuery());

                using (var httpClient = httpClientFactory.CreateClient("apiSGP"))
                {
                    httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {token}");
                    var resposta = await httpClient.GetAsync($"v1/professores/turmas/{request.TurmaCodigo}/disciplinas");

                    if (!resposta.IsSuccessStatusCode || resposta.StatusCode == HttpStatusCode.NoContent)
                    {
                        if (resposta.StatusCode == HttpStatusCode.Unauthorized)
                        {
                            throw new NegocioException("Não autorizado", 401);
                        }
                        else
                        {
                            return(null);
                        }
                    }

                    var json = await resposta.Content.ReadAsStringAsync();

                    var listaComponentesSGP = JsonConvert.DeserializeObject <List <DisciplinaRetornoDto> >(json);

                    //Verificar se tem regencia, se tiver, deve visualizar PT e MT, caso não, verifico se tem MT e PT para deixar na lista
                    var listaIdsEnum = EnumExtensao.Listar <ComponentesCurricularesRegenciaEnum>().Select(a => (int)a);


                    if (!listaComponentesSGP.Any(a => listaIdsEnum.Contains(int.Parse(a.CodigoComponenteCurricular))))
                    {
                        //Verifico se tem Mat
                        if (!listaComponentesSGP.Any(a => a.CodigoComponenteCurricular == "2"))
                        {
                            listFixaComponentes.Remove(componenteMat);
                        }

                        //Verifico se tem Pt
                        if (!listaComponentesSGP.Any(a => a.CodigoComponenteCurricular == "138"))
                        {
                            listFixaComponentes.Remove(componentePor);
                        }
                    }
                }
            }


            return(listFixaComponentes);
        }