Sha256: b5360fdd505f21dc930c560d1169c909a1629f60a34fc309025f7ce37d9a6e96

Contents?: true

Size: 1.05 KB

Versions: 16

Compression:

Stored size: 1.05 KB

Contents

#
# This is for use with session-based carts. Token-based carts (V3 widget)
# can't use these methods
#
module CartFinder
  extend ActiveSupport::Concern

  included do |c|
    c.helper_method :current_cart
  end

  def current_box_office_cart
    current_cart(BoxOffice::Cart)
  end

  def current_cart(klass = Cart)
    (!session_cart(klass) || session_cart(klass).approved?) ? create_new_cart(klass) : session_cart(klass)
  end

  def session_cart(klass = Cart)
    @current_cart ||= Cart.find_by_id(session[session_key(klass)])
  end

  def create_new_cart(klass = Cart)
    @current_cart = klass.create
    session[session_key(klass)] = @current_cart ? @current_cart.id : nil
    @current_cart
  end

  #
  # Use with care. Only assign updated carts (in the case of discounts)
  # TODO: Enforce that this isn't used to actually switch to another cart object
  #
  def current_cart=(cart)
    @current_cart = cart
  end

  def cart_name(klass = Cart)
    klass.name.gsub("::","").underscore
  end

  def session_key(klass)
    (cart_name(klass) + "_id").to_sym
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
artfully_ose-1.2.0.pre.24 app/concerns/cart_finder.rb
artfully_ose-1.2.0.pre.23 app/concerns/cart_finder.rb
artfully_ose-1.2.0.pre.21 app/concerns/cart_finder.rb
artfully_ose-1.2.0.pre.20 app/concerns/cart_finder.rb
artfully_ose-1.2.0.pre.19 app/models/carts/cart_finder.rb
artfully_ose-1.2.0.pre.18 app/models/carts/cart_finder.rb
artfully_ose-1.2.0.pre.17 app/models/carts/cart_finder.rb
artfully_ose-1.2.0.pre.16 app/models/carts/cart_finder.rb
artfully_ose-1.2.0.pre.15 app/models/carts/cart_finder.rb
artfully_ose-1.2.0.pre.12 app/models/carts/cart_finder.rb
artfully_ose-1.2.0.pre.11 app/models/carts/cart_finder.rb
artfully_ose-1.2.0.pre.10 app/models/carts/cart_finder.rb
artfully_ose-1.2.0.pre.9 app/models/carts/cart_finder.rb
artfully_ose-1.2.0.pre.8 app/models/carts/cart_finder.rb
artfully_ose-1.2.0.pre.7 app/models/carts/cart_finder.rb
artfully_ose-1.2.0.pre.6 app/models/carts/cart_finder.rb