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>());
 }