Class: Locomotive::Ecommerce::EcommerceDrop

Inherits:
Liquid::Drop
  • Object
show all
Defined in:
lib/locomotive/ecommerce/plugin/ecommerce_drop.rb

Instance Method Summary collapse

Constructor Details

#initialize(source) ⇒ EcommerceDrop

Returns a new instance of EcommerceDrop.



4
5
6
7
8
9
10
11
12
13
# File 'lib/locomotive/ecommerce/plugin/ecommerce_drop.rb', line 4

def initialize(source)
  @source = source
  urls = ['cart_url', 'checkout_url', 'new_checkout_url', 'product_url',
    'products_url', 'purchases_url']
  urls.each do |name|
    self.class.send(:define_method, name) do
      source.mounted_rack_app.config_or_default(name)
    end
  end
end

Instance Method Details

#cartObject



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/locomotive/ecommerce/plugin/ecommerce_drop.rb', line 23

def cart
  unless @cart
    session = @context.registers[:controller].session
    site = Thread.current[:site]
    user_from_plugin = site.plugin_object_for_id('identity_plugin').js3_context['identity_plugin_users']
    user = user_from_plugin.where(id: session[:user_id]).first
    id = user == nil ? nil : user.id
    @cart = Cart.find_or_create(id, session)
  end
  @cart
end

#productsObject



15
16
17
# File 'lib/locomotive/ecommerce/plugin/ecommerce_drop.rb', line 15

def products
  search_filter(source.inventory_items)
end

#purchaseObject



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/locomotive/ecommerce/plugin/ecommerce_drop.rb', line 35

def purchase
  unless @purchase
    session = @context.registers[:controller].session
    site = Thread.current[:site]
    user_from_plugin = site.plugin_object_for_id('identity_plugin').js3_context['identity_plugin_users']
    user = user_from_plugin.where(id: session[:user_id]).first
    puts "Count in Drop 1: #{Purchase.count}"
    @purchase = cart.purchase || Purchase.new
    cart.purchase = @purchase
    cart.save!
    @purchase.save!
    puts "Count in Drop 2: #{Purchase.count}"
  end
  @purchase
end

#purchasesObject



51
52
53
54
55
56
57
# File 'lib/locomotive/ecommerce/plugin/ecommerce_drop.rb', line 51

def purchases
  session = @context.registers[:controller].session
  site = Thread.current[:site]
  user_from_plugin = site.plugin_object_for_id('identity_plugin').js3_context['identity_plugin_users']
  user = user_from_plugin.where(id: session[:user_id]).first
  Purchase.where(user_id: user.id).all.to_a
end

#show_out_of_stock?Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/locomotive/ecommerce/plugin/ecommerce_drop.rb', line 19

def show_out_of_stock?
  !!Engine.config_or_default('with_quantity')
end