Files
old-ribica/front-api/controllers/cart.rb
2015-02-13 06:52:10 +01:00

45 lines
1.2 KiB
Ruby

helpers do
def anonymous_id
auid = cookies[:anonymous_user_id]
if auid.nil?
auid = AnonymousUser.uid
response.set_cookie('anonymous_user_id', :path=> '/', :httponly => true, :value=>auid, :expires=>Time.now+100.year)
end
auid
end
end
get '/cart' do
# -1 is a placeholder for user id when we implement users
# auid will still be used in case user is not logged in
Cart.find_or_create(anonymous_id, -1).to_json
end
# gets number of items in cart for every item
get '/cart/item' do
Cart.find_or_create(anonymous_id, -1).item_in_carts.to_json
end
update_cart_item = ->() {
cart_id = Cart.find_or_create(anonymous_id, -1).id
item_id = @json_params["item_id"].to_i
count = @json_params["count"].to_i
ItemInCart.update_state(cart_id, item_id, count).to_json
}
put '/cart/item', &update_cart_item
post '/cart/item', &update_cart_item
# gets list of items in cart without count
get '/cart/item/display' do
cart = Cart.find_or_create(anonymous_id, -1)
item_ids = cart.item_in_carts.map do |x|
x.item_id
end
items = []
items = Item.find(item_ids) if cart.item_in_carts.length > 0
prepare_items_for_mass_display(items)
end