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); }
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); }