Sha256: 1a71d1605090b701d1d81328063b0507725ccfef4d38730ae94f37ad6e73c548

Contents?: true

Size: 1.31 KB

Versions: 2

Compression:

Stored size: 1.31 KB

Contents

module RailsMarketplace
	class Cart < ActiveRecord::Base
		has_many :cart_products, :dependent => :destroy
		has_many :products, :through => :cart_products
		# belongs_to :customer

		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

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

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

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

		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

	end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rails_marketplace-0.0.2 app/models/rails_marketplace/cart.rb
rails_marketplace-0.0.1 app/models/rails_marketplace/cart.rb