public async Task <Unit> Handle(UpdateMovimentacaoPrevistaCommand request, CancellationToken cancellationToken) { MovimentacaoPrevista movimentacaoPrevista = mapper.Map <MovimentacaoPrevista>(request); var validate = new MovimentacaoPrevistaValidation().Validate(movimentacaoPrevista); if (!validate.IsValid) { throw new ValidationException(validate.Errors); } Movimentacao movimentacao = movimentacaoDomainService.GetByKey(movimentacaoPrevista.IdItemMovimentacao, movimentacaoPrevista.DataReferencia); if (movimentacao.MovimentacoesRealizadas.Count == 0 && movimentacaoPrevista.Status.Equals(StatusMovimentacaoPrevista.Q) || movimentacao.MovimentacoesRealizadas.Count > 0 && !movimentacaoPrevista.Status.Equals(StatusMovimentacaoPrevista.Q)) { throw new StatusMovimentacaoInvalidoException(movimentacao.ItemMovimentacao.Descricao, movimentacao.DataReferencia, StatusMovimentacaoPrevista.Q); } movimentacaoPrevistaDomainService.Update(movimentacaoPrevista); await mediator.Publish(new MovimentacaoPrevistaNotification { MovimentacaoPrevista = movimentacaoPrevista, Action = ActionNotification.Atualizar }); return(Unit.Value); }
public async Task <Unit> Handle(CreateMovimentacaoPrevistaCommand request, CancellationToken cancellationToken) { if (request.QtdeParcelas <= 0) { throw new TotalParcelasMovimentacaoInvalidoException(0); } if (request.TipoRecorrencia != TipoRecorrenciaMovimentacaoPrevista.M.ToString() && request.TipoRecorrencia != TipoRecorrenciaMovimentacaoPrevista.N.ToString() && request.TipoRecorrencia != TipoRecorrenciaMovimentacaoPrevista.P.ToString()) { throw new TipoRecorrenciaMovimentacaoInvalidoException(); } MovimentacaoPrevista movimentacaoPrevista = mapper.Map <MovimentacaoPrevista>(request); var validate = new MovimentacaoPrevistaValidation().Validate(movimentacaoPrevista); if (!validate.IsValid) { throw new ValidationException(validate.Errors); } List <MovimentacaoPrevista> movimentacoesPrevistas = ConvertList(movimentacaoPrevista, request.TipoRecorrencia, request.QtdeParcelas); movimentacaoPrevistaDomainService.Add(movimentacoesPrevistas); await mediator.Publish(new MovimentacaoPrevistaNotification { MovimentacoesPrevistas = movimentacoesPrevistas, Action = ActionNotification.Criar }); return(Unit.Value); }