public async Task <bool> Handle(ExcluirWorkflowCommand request, CancellationToken cancellationToken) { var workflow = repositorioWorkflowAprovacao.ObterEntidadeCompleta(request.WorkflowId); if (workflow == null) { throw new NegocioException("Não foi possível localizar o fluxo de aprovação."); } if (workflow.Niveis.Any(n => n.Status == WorkflowAprovacaoNivelStatus.Reprovado)) { return(false); } foreach (WorkflowAprovacaoNivel wfNivel in workflow.Niveis) { wfNivel.Status = WorkflowAprovacaoNivelStatus.Excluido; repositorioWorkflowAprovacaoNivel.Salvar(wfNivel); foreach (Notificacao notificacao in wfNivel.Notificacoes) { repositorioWorkflowAprovacaoNivelNotificacao.ExcluirPorWorkflowNivelNotificacaoId(wfNivel.Id, notificacao.Id); repositorioNotificacao.Remover(notificacao); } } workflow.Excluido = true; await repositorioWorkflowAprovacao.SalvarAsync(workflow); return(true); }
public async Task ExcluirWorkflowNotificacoes(long id) { var workflow = repositorioWorkflowAprovacao.ObterEntidadeCompleta(id); if (workflow == null) { throw new NegocioException("Não foi possível localizar o fluxo de aprovação."); } if (workflow.Niveis.Any(n => n.Status == WorkflowAprovacaoNivelStatus.Reprovado)) { return; } foreach (WorkflowAprovacaoNivel wfNivel in workflow.Niveis) { wfNivel.Status = WorkflowAprovacaoNivelStatus.Excluido; workflowAprovacaoNivel.Salvar(wfNivel); foreach (Notificacao notificacao in wfNivel.Notificacoes) { repositorioWorkflowAprovacaoNivelNotificacao.ExcluirPorWorkflowNivelNotificacaoId(wfNivel.Id, notificacao.Id); repositorioNotificacao.Remover(notificacao); } } workflow.Excluido = true; await repositorioWorkflowAprovacao.SalvarAsync(workflow); }