Exemple #1
0
        public async Task <ResponseResult> Handle(CriarPedidoCommand request, CancellationToken cancellationToken)
        {
            request.Validate();
            if (request.Notifications.Any())
            {
                _response.AddNotifications(request.Notifications);
                return(_response);
            }

            var clienteId = _usuarioAutenticado.GetCurrentId();
            var cliente   = await _unitOfWork.Usuarios.ObterPorIdAsync(clienteId);

            if (cliente == null)
            {
                _response.AddNotification(new Notification("pedido", Erros.ErroCliente_NaoEncontrado));
                return(_response);
            }

            var pedido = Pedido.Criar(request.Id, request.Peso, request.Valor, cliente);

            pedido.AtualizarStatusPedido(PedidoStatus.AguardandoPagamento);

            //publica o evento para o bus
            await _eventBus.Publish(new PedidoCriadoEvent(pedido.Id, pedido.Valor));

            await _unitOfWork.Pedidos.AdicionarAsync(pedido);

            await _unitOfWork.SaveAsync();

            return(_response);
        }
Exemple #2
0
        public async Task <ResponseResult> Handle(PedidosQuery request, CancellationToken cancellationToken)
        {
            var pedidos = await _unitOfWork.Pedidos.ObterDoClienteAsync(_usuarioAutenticado.GetCurrentId());

            _response.AddValue(new
            {
                pedidos = _mapper.Map <IEnumerable <Pedido>, IEnumerable <PedidoDto> >(pedidos)
            });

            return(_response);
        }