ecommerceshopppingcartgem 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/ecommerceshopppingcartgem.rb +62 -0
- metadata +43 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 30e84a00966dba66a4838bbff12a1b6a0168557c923ce6e97e80849e43be9a5f
|
4
|
+
data.tar.gz: b9b88cd2f1e107fb748ac21ee3791499b07d0b4e468b5a3adc52fdbdc22fecfc
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b3196ee2a941137111c8c789978169425c9704cfbf7bf686fd738e4b6071d5674c783af3207cd98fd904988df52e4f3ca9b82996b997417c2ed3053c089c2b94
|
7
|
+
data.tar.gz: 219bc9eb71c0a60c345e37ff6a2f1105f5e181b22d9024113ba25dcb866226631d6436d6364d678bd62c96af61ef2a912bea771530926a43a85a396721b95922
|
@@ -0,0 +1,62 @@
|
|
1
|
+
class ShoppingCart
|
2
|
+
|
3
|
+
delegate :sub_total, :total, to: :order
|
4
|
+
|
5
|
+
def initialize(token, cart_user)
|
6
|
+
@token = token
|
7
|
+
@cart_user = cart_user
|
8
|
+
end
|
9
|
+
|
10
|
+
def order
|
11
|
+
@order ||= Order.find_or_create_by(token: @token, status: 'cart') do |order|
|
12
|
+
order.sub_total = 0
|
13
|
+
order.total = 0
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def items_count
|
18
|
+
order.items.sum(:quantity)
|
19
|
+
end
|
20
|
+
|
21
|
+
def add_item(product_id:, quantity: 1)
|
22
|
+
product = Product.find(product_id)
|
23
|
+
|
24
|
+
order_item = order.items.find_or_initialize_by(
|
25
|
+
product_id:
|
26
|
+
)
|
27
|
+
|
28
|
+
order_item.price = product.net_price
|
29
|
+
order_item.quantity = quantity
|
30
|
+
|
31
|
+
ActiveRecord::Base.transaction do
|
32
|
+
order_item.save
|
33
|
+
update_sub_total!
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def remove_item(id:)
|
38
|
+
ActiveRecord::Base.transaction do
|
39
|
+
order.items.destroy(id)
|
40
|
+
update_sub_total!
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def update_sub_total!
|
47
|
+
order.sub_total = order.items.sum('quantity * price')
|
48
|
+
order.save
|
49
|
+
update_total!
|
50
|
+
end
|
51
|
+
|
52
|
+
def update_total!
|
53
|
+
order.total = (order.sub_total * 0.23) + order.sub_total
|
54
|
+
order.save
|
55
|
+
update_user!
|
56
|
+
end
|
57
|
+
|
58
|
+
def update_user!
|
59
|
+
order.user_id = @cart_user
|
60
|
+
order.save
|
61
|
+
end
|
62
|
+
end
|
metadata
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ecommerceshopppingcartgem
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- rubyl
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-01-14 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Shopping cart processor
|
14
|
+
email: x19128355@student.ncirl.ie
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/ecommerceshopppingcartgem.rb
|
20
|
+
homepage: http://rubygems.org/gems/ecommerceshopppingcartgem
|
21
|
+
licenses:
|
22
|
+
- MIT
|
23
|
+
metadata: {}
|
24
|
+
post_install_message:
|
25
|
+
rdoc_options: []
|
26
|
+
require_paths:
|
27
|
+
- lib
|
28
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - ">="
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
requirements: []
|
39
|
+
rubygems_version: 3.3.7
|
40
|
+
signing_key:
|
41
|
+
specification_version: 4
|
42
|
+
summary: Gem used to process order checkouts
|
43
|
+
test_files: []
|