Class: RailsMarketplace::Cart

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/rails_marketplace/cart.rb

Instance Method Summary collapse

Instance Method Details

#add_product(product_id, quantity) ⇒ Object

belongs_to :customer



7
8
9
10
11
12
13
14
15
16
17
# File 'app/models/rails_marketplace/cart.rb', line 7

def add_product(product_id, quantity)
  cart_product = cart_products.where('product_id = ?', product_id).first
  if cart_product
    # increase the quantity of product in cart
    cart_product.quantity = cart_product.quantity + quantity.to_i
    cart_product.save
  else
    # product does not exist in cart
    cart_products << CartProduct.new(product_id: product_id, quantity: quantity, price: Product.find(product_id).price)
  end
end

#cart_quantityObject



23
24
25
26
27
28
29
# File 'app/models/rails_marketplace/cart.rb', line 23

def cart_quantity
	total = 0
	cart_products.each do |cart_product|
		total += cart_product.quantity
	end
	total
end

#cart_subtotalObject



31
32
33
34
35
36
37
# File 'app/models/rails_marketplace/cart.rb', line 31

def cart_subtotal
	subtotal = 0
	cart_products.each do |cart_product|
		subtotal += cart_product.quantity * cart_product.price
	end
	subtotal
end

#delete_product(product_id) ⇒ Object



19
20
21
# File 'app/models/rails_marketplace/cart.rb', line 19

def delete_product(product_id)
	cart_products.delete(CartProduct.find_by(product_id: product_id))
end

#get_product_groupsObject



39
40
41
42
43
44
45
46
# File 'app/models/rails_marketplace/cart.rb', line 39

def get_product_groups
	product_groups = {}
	cart_products.each do |cart_product|
		seller_id = Product.find(cart_product.product_id).seller.id
		(product_groups[seller_id] ||= []) << cart_product
	end
	product_groups
end