public async Task <bool> Handle(CancelarPedidoCommand request, CancellationToken cancellationToken) { var pedido = await _repository.ObterPorId(request.IdPedido); if (pedido.StatusEnum == PedidoStatusEnum.Cancelado) { _validation.Add("O pedido já está cancelado."); return(false); } if (pedido.StatusEnum == PedidoStatusEnum.Finalizado) { _validation.Add("O pedido está finalizado."); return(false); } var result = await _repository.CancelarPedido(request.IdPedido); if (result) { await _mediator.Publish(new PedidoCanceladoNotification(request.IdPedido)); } return(result); }
public async Task <bool> Handle(FinalizarPedidoCommand request, CancellationToken cancellationToken) { var pedido = await _repository.ObterPorId(request.IdPedido); if (pedido.StatusEnum == PedidoStatusEnum.Finalizado) { _validation.Add("O pedido já está finalizado."); return(false); } var result = await _repository.FinalizarPedido(request.IdPedido); if (result) { var valorTransacao = pedido.Itens.Sum(a => a.ValorCashback); await _mediator.Publish(new PedidoFinalizadoNotification(pedido.IdCliente, pedido.IdPedido, pedido.ValorPedido, valorTransacao)); } return(result); }