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); }
public void Salvar(WorkflowAprovacaoDto workflowAprovacaoNiveisDto) { WorkflowAprovacao workflowAprovacao = MapearDtoParaEntidade(workflowAprovacaoNiveisDto); unitOfWork.IniciarTransacao(); repositorioWorkflowAprovacao.Salvar(workflowAprovacao); foreach (var workflowAprovacaoNivel in workflowAprovacao.Niveis) { workflowAprovacaoNivel.WorkflowId = workflowAprovacao.Id; repositorioWorkflowAprovacaoNivel.Salvar(workflowAprovacaoNivel); foreach (var usuario in workflowAprovacaoNivel.Usuarios) { repositorioWorkflowAprovacaoNivelUsuario.Salvar(new WorkflowAprovacaoNivelUsuario() { UsuarioId = usuario.Id, WorkflowAprovacaoNivelId = workflowAprovacaoNivel.Id }); } } servicoWorkflowAprovacao.ConfiguracaoInicial(workflowAprovacao); }