private User UpdateUserBalance(PlaceOrderRequest request)
        {
            var user = _repository.GetUser(request.UserId);

            user.UpdateBalance(request.OrderAmount);
            _repository.UpdateUser(user);

            return(user);
        }
        public ObjectResult PlaceOrder(PlaceOrderRequest request)
        {
            try
            {
                var user = UpdateUserBalance(request);

                if (user.HasExceededBalance())
                {
                    _bus.Publish(new CanNotOrder());
                }

                return(Ok(true));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }