Class: Spree::Api::V2::Storefront::WishlistsController

Inherits:
ResourceController show all
Defined in:
app/controllers/spree/api/v2/storefront/wishlists_controller.rb

Instance Method Summary collapse

Methods inherited from ResourceController

#index

Methods included from Caching

#collection_cache_key, #collection_cache_opts

Methods included from CollectionOptionsHelpers

#collection_links, #collection_meta, #collection_permitted_params

Methods inherited from BaseController

#content_type

Instance Method Details

#add_itemObject



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'app/controllers/spree/api/v2/storefront/wishlists_controller.rb', line 60

def add_item
  spree_authorize! :create, Spree::WishedItem

  if resource.wished_items.present? && resource.wished_items.detect { |wv| wv.variant_id.to_s == params[:variant_id].to_s }.present?
    @wished_item = resource.wished_items.detect { |wi| wi.variant_id.to_s == params[:variant_id].to_s }
    @wished_item.quantity = params[:quantity]
  else
    @wished_item = Spree::WishedItem.new(params.permit(:quantity, :variant_id))
    @wished_item.wishlist = resource
    @wished_item.save
  end

  resource.reload

  if @wished_item.persisted?
    render_serialized_payload { serialize_wished_item(@wished_item) }
  else
    render_error_payload(resource.errors.full_messages.to_sentence)
  end
end

#createObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/controllers/spree/api/v2/storefront/wishlists_controller.rb', line 14

def create
  spree_authorize! :create, Spree::Wishlist

  @wishlist = spree_current_user.wishlists.new(wishlist_attributes)

  ensure_current_store(@wishlist)

  @wishlist.save

  if @wishlist.persisted?
    render_serialized_payload(201) { serialize_resource(@wishlist) }
  else
    render_error_payload(@wishlist.errors.full_messages.to_sentence)
  end
end

#defaultObject



52
53
54
55
56
57
58
# File 'app/controllers/spree/api/v2/storefront/wishlists_controller.rb', line 52

def default
  spree_authorize! :create, Spree::Wishlist

  @default_wishlist = spree_current_user.default_wishlist_for_store(current_store)

  render_serialized_payload { serialize_resource(@default_wishlist) }
end

#destroyObject



42
43
44
45
46
47
48
49
50
# File 'app/controllers/spree/api/v2/storefront/wishlists_controller.rb', line 42

def destroy
  authorize! :destroy, resource

  if resource.destroy
    head 204
  else
    render_error_payload(I18n.t('spree.api.v2.wishlist.errors.the_wishlist_could_not_be_destroyed'))
  end
end

#remove_itemObject



93
94
95
96
97
98
99
100
101
# File 'app/controllers/spree/api/v2/storefront/wishlists_controller.rb', line 93

def remove_item
  spree_authorize! :destroy, wished_item

  if wished_item.destroy
    render_serialized_payload { serialize_wished_item(wished_item) }
  else
    render_error_payload(resource.errors.full_messages.to_sentence)
  end
end

#set_item_quantityObject



81
82
83
84
85
86
87
88
89
90
91
# File 'app/controllers/spree/api/v2/storefront/wishlists_controller.rb', line 81

def set_item_quantity
  spree_authorize! :update, wished_item

  wished_item.update(params.permit(:quantity))

  if wished_item.errors.empty?
    render_serialized_payload { serialize_wished_item(wished_item) }
  else
    render_error_payload(resource.errors.full_messages.to_sentence)
  end
end

#showObject



9
10
11
12
# File 'app/controllers/spree/api/v2/storefront/wishlists_controller.rb', line 9

def show
  spree_authorize! :show, resource
  super
end

#updateObject



30
31
32
33
34
35
36
37
38
39
40
# File 'app/controllers/spree/api/v2/storefront/wishlists_controller.rb', line 30

def update
  authorize! :update, resource

  resource.update wishlist_attributes

  if resource.errors.empty?
    render_serialized_payload { serialize_resource(resource) }
  else
    render_error_payload(resource.errors.full_messages.to_sentence)
  end
end