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