예제 #1
0
        public async Task Aprovar(WorkflowAprovacao workflow, bool aprovar, string observacao, long notificacaoId)
        {
            WorkflowAprovacaoNivel nivel = workflow.ObterNivelPorNotificacaoId(notificacaoId);

            var codigoDaNotificacao = nivel.Notificacoes.FirstOrDefault(a => a.Id == notificacaoId)?.Codigo;

            if (codigoDaNotificacao == null)
            {
                throw new NegocioException("Não foi possível localizar a notificação.");
            }

            nivel.PodeAprovar();

            var niveisParaPersistir = workflow.ModificarStatusPorNivel(aprovar ? WorkflowAprovacaoNivelStatus.Aprovado : WorkflowAprovacaoNivelStatus.Reprovado, nivel.Nivel, observacao);

            AtualizaNiveis(niveisParaPersistir);

            if (aprovar)
            {
                await AprovarNivel(nivel, workflow, (long)codigoDaNotificacao);
            }
            else
            {
                await ReprovarNivel(workflow, (long)codigoDaNotificacao, observacao, nivel.Cargo, nivel);
            }
        }
        public void Deve_Retornar_Nivel_Por_Notificacao()
        {
            WorkflowAprovacao workflowAprovacao = GeraWorkflow();
            var nivel = workflowAprovacao.ObtemNiveis(5);

            Assert.True(nivel != null && nivel.FirstOrDefault().Nivel == 5);
            nivel.FirstOrDefault().Adicionar(new Notificacao()
            {
                Id = 10, Mensagem = "Mensagem de teste"
            });

            var nivelDaNotificacao = workflowAprovacao.ObterNivelPorNotificacaoId(10);

            Assert.True(nivelDaNotificacao != null && nivelDaNotificacao.Nivel == 5);
        }
예제 #3
0
        public void Aprovar(WorkflowAprovacao workflow, bool aprovar, string observacao, long notificacaoId)
        {
            WorkflowAprovacaoNivel nivel = workflow.ObterNivelPorNotificacaoId(notificacaoId);

            nivel.PodeAprovar();

            var niveisParaPersistir = workflow.ModificarStatusPorNivel(aprovar ? WorkflowAprovacaoNivelStatus.Aprovado : WorkflowAprovacaoNivelStatus.Reprovado, nivel.Nivel, observacao);

            AtualizaNiveis(niveisParaPersistir);

            if (aprovar)
            {
                var codigoDaNotificacao = nivel.Notificacoes
                                          .FirstOrDefault(a => a.Id == notificacaoId).Codigo;

                var niveis = workflow.ObtemNiveisParaEnvioPosAprovacao();
                if (niveis != null)
                {
                    EnviaNotificacaoParaNiveis(niveis.ToList(), codigoDaNotificacao);
                }
            }
        }
        public void Aprovar(WorkflowAprovacao workflow, bool aprovar, string observacao, long notificacaoId)
        {
            WorkflowAprovacaoNivel nivel = workflow.ObterNivelPorNotificacaoId(notificacaoId);

            nivel.PodeAprovar();

            var niveisParaPersistir = workflow.ModificarStatusPorNivel(aprovar ? WorkflowAprovacaoNivelStatus.Aprovado : WorkflowAprovacaoNivelStatus.Reprovado, nivel.Nivel, observacao);

            AtualizaNiveis(niveisParaPersistir);

            var codigoDaNotificacao = nivel.Notificacoes
                                      .FirstOrDefault(a => a.Id == notificacaoId).Codigo;

            if (aprovar)
            {
                AprovarNivel(nivel, notificacaoId, workflow, codigoDaNotificacao);
            }
            else
            {
                ReprovarNivel(workflow, codigoDaNotificacao, observacao, nivel.Cargo, nivel);
            }
        }