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