Example #1
0
        private async Task TrataModificacaoDosNiveis(List <FuncionarioCargoDTO> funcionariosCargosDaUe, WorkflowAprovacao wfAprovacao, WorkflowAprovacaoNivel nivelParaModificar, bool modificarNivelAtual, WorkflowAprovacaoNivel nivelDoCargo, bool modificaNiveisPosteriores)
        {
            if (modificarNivelAtual)
            {
                if (modificaNiveisPosteriores)
                {
                    var niveisParaModificar = wfAprovacao.Niveis.Where(a => a.Nivel > nivelParaModificar.Nivel);

                    foreach (var nivel in niveisParaModificar)
                    {
                        nivel.Nivel += 1;
                        await repositorioWorkflowAprovacaoNivel.SalvarAsync(nivel);
                    }
                }

                await repositorioNotificacao.ExcluirLogicamentePorIdsAsync(nivelParaModificar.Notificacoes.Select(a => a.Id).ToArray());

                nivelParaModificar.Status = WorkflowAprovacaoNivelStatus.Substituido;
                nivelDoCargo.Status       = WorkflowAprovacaoNivelStatus.AguardandoAprovacao;

                await repositorioWorkflowAprovacaoNivel.SalvarAsync(nivelParaModificar);

                nivelDoCargo.Id = await repositorioWorkflowAprovacaoNivel.SalvarAsync(nivelDoCargo);
                await TrataNovoNivel(wfAprovacao, nivelDoCargo, funcionariosCargosDaUe);
            }
        }
Example #2
0
        public async Task <long> Handle(SalvarWorkflowAprovacaoCommand request, CancellationToken cancellationToken)
        {
            if (request.WorkflowAprovacao.Tipo != WorkflowAprovacaoTipo.Basica && request.WorkflowAprovacao.EntidadeParaAprovarId == 0)
            {
                throw new NegocioException("Para um workflow diferente de básico, é necessário informar o Id da entidade para Aprovar.");
            }

            WorkflowAprovacao workflowAprovacao = await MapearDtoParaEntidade(request.WorkflowAprovacao);

            await repositorioWorkflowAprovacao.SalvarAsync(workflowAprovacao);

            foreach (var workflowAprovacaoNivel in workflowAprovacao.Niveis)
            {
                workflowAprovacaoNivel.WorkflowId = workflowAprovacao.Id;
                await repositorioWorkflowAprovacaoNivel.SalvarAsync(workflowAprovacaoNivel);

                foreach (var usuario in workflowAprovacaoNivel.Usuarios)
                {
                    repositorioWorkflowAprovacaoNivelUsuario.Salvar(new WorkflowAprovacaoNivelUsuario()
                    {
                        UsuarioId = usuario.Id,
                        WorkflowAprovacaoNivelId = workflowAprovacaoNivel.Id
                    });
                }
            }
            servicoWorkflowAprovacao.ConfiguracaoInicial(workflowAprovacao, request.WorkflowAprovacao.EntidadeParaAprovarId);

            return(workflowAprovacao.Id);
        }