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 <IActionResult> Put(UpdateMovimentacaoPrevistaCommand command)
        {
            try
            {
                await movimentacaoPrevistaApplicationService.Update(command);

                return(Ok(new { message = "MovimentaĆ§Ć£o atualizada com sucesso!" }));
            }
            catch (ValidationException e)
            {
                return(BadRequest(ValidationAdapter.Parse(e.Errors)));
            }
            catch (StatusMovimentacaoInvalidoException e)
            {
                return(StatusCode(418, e.Message));
            }
            catch (Exception e)
            {
                return(StatusCode(500, e.Message));
            }
        }
Example #3
0
 public Task Update(UpdateMovimentacaoPrevistaCommand command)
 {
     return(mediator.Send(command));
 }