73 lines
1.6 KiB
Ruby
73 lines
1.6 KiB
Ruby
class ApiShoppingCartsController < ApiController
|
|
|
|
before_filter :api_any_user
|
|
|
|
respond_to :json
|
|
|
|
def log
|
|
@log || Logging.logger[VanillaForumsController ]
|
|
end
|
|
|
|
def index
|
|
@carts = any_user.shopping_carts
|
|
end
|
|
|
|
def add_jamtrack
|
|
jam_track = JamTrack.find_by_id(params[:id])
|
|
|
|
# verify JamTrack exists
|
|
if jam_track.nil?
|
|
raise StateError, "Invalid JamTrack."
|
|
end
|
|
|
|
@cart = ShoppingCart.add_jam_track_to_cart(any_user, jam_track, clear:params[:clear])
|
|
|
|
if @cart.errors.any?
|
|
response.status = :unprocessable_entity
|
|
respond_with @cart
|
|
else
|
|
# let add_jamtrack.rabl take over
|
|
end
|
|
end
|
|
|
|
def update_cart
|
|
@cart = ShoppingCart.find_by_id params[:id]
|
|
|
|
#verify Cart exists
|
|
raise StateError, "Invalid Cart." if @cart.nil?
|
|
|
|
@cart.quantity = params[:quantity]
|
|
|
|
if @cart.errors.any?
|
|
response.statue = :unprocessable_entity
|
|
respond_with @cart
|
|
else
|
|
# let update_cart.rabl take over
|
|
end
|
|
end
|
|
|
|
def remove_cart
|
|
@cart = any_user.shopping_carts.find_by_id(params[:id])
|
|
raise StateError, "Invalid Cart." if @cart.nil?
|
|
|
|
ShoppingCart.remove_jam_track_from_cart(any_user, @cart)
|
|
|
|
# let remove_cart.rabl take over
|
|
end
|
|
|
|
# take all shopping carts from anonymous user and copy them to logged in user
|
|
def port
|
|
if current_user && anonymous_user
|
|
ShoppingCart.port(current_user, anonymous_user)
|
|
else
|
|
render :json => {message: 'one or both users not available'}, :status => 403
|
|
end
|
|
end
|
|
|
|
def clear_all
|
|
any_user.destroy_all_shopping_carts
|
|
render :json=>{}, :status=>200
|
|
end
|
|
|
|
end
|