Class Opensteam::CartBase::Cart
In: lib/opensteam/cart_base.rb
Parent: Object

Methods

add   del   get   new   set_quantity   total_price  

Attributes

items  [RW]  cart_items

Public Class methods

intialize items array

[Source]

    # File lib/opensteam/cart_base.rb, line 89
89:       def initialize
90:         @items = []
91:       end

Public Instance methods

add an item to cart or increment its quantity

[Source]

     # File lib/opensteam/cart_base.rb, line 117
117:       def add( yamlid )
118:         item = get( :yamlid => yamlid )
119:         if item.nil?
120:           @items << CartItem.new( yamlid )
121:           return true
122:         else
123:           return item.incr
124:         end
125:       end

delete item from cart (:cart_item_id or :yamlid )

[Source]

     # File lib/opensteam/cart_base.rb, line 147
147:       def del( opts = {} )
148:         if opts.has_key?( :yamlid )
149:           @items.delete( get( :yamlid => opts[:yamlid] ) )
150:         elsif opts.has_key?( :cart_item_id )
151:           @items.delete_at( opts[:cart_item_id].to_i )
152:         end
153:       end

get item from cart

  get( :cart_itemd_id => 1 ) # get item by internal array id
  get( :yamlid => 3 ) # get item by Inventory-id

[Source]

     # File lib/opensteam/cart_base.rb, line 99
 99:       def get( opts = {} )
100: 
101:         if opts.has_key? :yamlid
102:           @items.each do |v|
103:             return v if v.yamlid == opts[:yamlid]
104:           end
105:                                         
106:         elsif opts.has_key? :cart_item_id
107:           return @items[ opts[:cart_item_id].to_i ]
108:         end
109:                                 
110:         return nil
111:                 
112:       end

set quantity for item (by internal array-id)

[Source]

     # File lib/opensteam/cart_base.rb, line 130
130:       def set_quantity( id, q )
131:         item = @items[ id.to_i ]
132:                                 
133:         return nil if item.nil?
134:                                 
135:         q = q.to_i
136:         if q == 0
137:           @items.delete_at( id.to_i )
138:         elsif q > 0
139:           item.quantity = ( item.inventory.storage < q ) ? item.inventory.storage : q 
140:         end
141:                                 
142:         item
143:       end

calculate total price

[Source]

     # File lib/opensteam/cart_base.rb, line 158
158:       def total_price
159:         @items.collect { |x| x.price * x.quantity }.inject(&:+)
160:       end

[Validate]