Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }