Class: AboutYou::SDK::Model::Basket
- Inherits:
-
Object
- Object
- AboutYou::SDK::Model::Basket
- Defined in:
- lib/AboutYou/Model/basket.rb
Overview
This Class represents a basket model
- author
-
Collins GmbH & Co KG
Instance Attribute Summary collapse
-
#deleted_items ⇒ Object
Returns the value of attribute deleted_items.
-
#errors ⇒ Object
errors of the basket.
-
#items ⇒ Object
array of items in the basket.
-
#products ⇒ Object
Returns the value of attribute products.
-
#total_amount ⇒ Object
Returns the value of attribute total_amount.
-
#total_net ⇒ Object
Returns the value of attribute total_net.
-
#total_price ⇒ Object
Returns the value of attribute total_price.
-
#total_vat ⇒ Object
Returns the value of attribute total_vat.
-
#unique_variant_count ⇒ Object
Returns the value of attribute unique_variant_count.
-
#updated_items ⇒ Object
Returns the value of attribute updated_items.
Class Method Summary collapse
Instance Method Summary collapse
- #check_additional_data(add_data = nil, _img_url_required = false) ⇒ Object
- #collected_items ⇒ Object
-
#delete_all_items ⇒ Object
$this.
-
#delete_item(item_id) ⇒ Object
$this.
-
#delete_items(item_ids) ⇒ Object
$this.
-
#errors? ⇒ Boolean
Boolean.
-
#item(item_id) ⇒ Object
BasketItem|BasketSet|null.
-
#order_lines_array ⇒ Object
build order line for update query.
- #parse_items(json_object, factory) ⇒ Object
-
#update_item(basket_item) ⇒ Object
$this.
-
#update_item_set(basket_set) ⇒ Object
$this.
Instance Attribute Details
#deleted_items ⇒ Object
Returns the value of attribute deleted_items.
20 21 22 |
# File 'lib/AboutYou/Model/basket.rb', line 20 def deleted_items @deleted_items end |
#errors ⇒ Object
errors of the basket
13 14 15 |
# File 'lib/AboutYou/Model/basket.rb', line 13 def errors @errors end |
#items ⇒ Object
array of items in the basket
11 12 13 |
# File 'lib/AboutYou/Model/basket.rb', line 11 def items @items end |
#products ⇒ Object
Returns the value of attribute products.
15 16 17 |
# File 'lib/AboutYou/Model/basket.rb', line 15 def products @products end |
#total_amount ⇒ Object
Returns the value of attribute total_amount.
19 20 21 |
# File 'lib/AboutYou/Model/basket.rb', line 19 def total_amount @total_amount end |
#total_net ⇒ Object
Returns the value of attribute total_net.
17 18 19 |
# File 'lib/AboutYou/Model/basket.rb', line 17 def total_net @total_net end |
#total_price ⇒ Object
Returns the value of attribute total_price.
16 17 18 |
# File 'lib/AboutYou/Model/basket.rb', line 16 def total_price @total_price end |
#total_vat ⇒ Object
Returns the value of attribute total_vat.
18 19 20 |
# File 'lib/AboutYou/Model/basket.rb', line 18 def total_vat @total_vat end |
#unique_variant_count ⇒ Object
Returns the value of attribute unique_variant_count.
14 15 16 |
# File 'lib/AboutYou/Model/basket.rb', line 14 def unique_variant_count @unique_variant_count end |
#updated_items ⇒ Object
Returns the value of attribute updated_items.
21 22 23 |
# File 'lib/AboutYou/Model/basket.rb', line 21 def updated_items @updated_items end |
Class Method Details
.create_from_json(json_object, factory) ⇒ Object
Returns Basket.
29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/AboutYou/Model/basket.rb', line 29 def self.create_from_json(json_object, factory) basket = new basket.errors = {} basket.deleted_items = {} basket.updated_items = {} basket.total_price = json_object['total_price'] basket.total_net = json_object['total_net'] basket.total_vat = json_object['total_vat'] basket.parse_items(json_object, factory) basket.total_amount = items.count basket end |
Instance Method Details
#check_additional_data(add_data = nil, _img_url_required = false) ⇒ Object
225 226 227 228 229 230 231 |
# File 'lib/AboutYou/Model/basket.rb', line 225 def check_additional_data(add_data = nil, _img_url_required = false) fail 'InvalidArgumentException! description is required in additional data' if add_data && !add_data.key?('description') fail 'InvalidArgumentException! internal_infos must be an array' if add_data.key?('internal_infos') && !add_data['internal_infos'].is_a?(Array) end |
#collected_items ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/AboutYou/Model/basket.rb', line 59 def collected_items items = self.items items_merged = {} items.each do |item| key = item.unique_key if items_merged.key?(key) amount = items_merged[key]['amount'] + 1 items_merged[key] = { 'item' => item, 'price' => item.total_price * amount, 'amount' => amount } else items_merged[key] = { 'item' => item, 'price' => item.total_price, 'amount' => 1 } end end items_merged end |
#delete_all_items ⇒ Object
Returns $this.
157 158 159 160 161 162 163 164 165 166 167 168 |
# File 'lib/AboutYou/Model/basket.rb', line 157 def delete_all_items items = self.items return self unless items.empty? ids = [] items.each do |item| ids.push = item.id end delete_items(ids) self end |
#delete_item(item_id) ⇒ Object
Returns $this.
135 136 137 138 139 |
# File 'lib/AboutYou/Model/basket.rb', line 135 def delete_item(item_id) deleted_items[item_id] = item_id self end |
#delete_items(item_ids) ⇒ Object
Returns $this.
146 147 148 149 150 151 152 |
# File 'lib/AboutYou/Model/basket.rb', line 146 def delete_items(item_ids) item_ids.each do |item_id| deleted_items[item_id] = item_id end self end |
#errors? ⇒ Boolean
Returns boolean.
46 47 48 |
# File 'lib/AboutYou/Model/basket.rb', line 46 def errors? errors.count > 0 end |
#item(item_id) ⇒ Object
Returns BasketItem|BasketSet|null.
55 56 57 |
# File 'lib/AboutYou/Model/basket.rb', line 55 def item(item_id) return items[item_id] if items.key?(item_id) end |
#order_lines_array ⇒ Object
build order line for update query
87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/AboutYou/Model/basket.rb', line 87 def order_lines_array order_lines = [] deleted_items.uniq.each do |itemId| order_lines.push('delete' => itemId) end updatedItems.each do |item| order_lines.push(item) end order_lines end |
#parse_items(json_object, factory) ⇒ Object
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/AboutYou/Model/basket.rb', line 101 def parse_items(json_object, factory) products = {} json_object['products'].each do |key, json_product| products[key] = factory.create_product(json_product) end if json_object['products'] self.products = products vids = [] json_object['order_lines'].each do |key, json_item| if json_item['set_items'] item = factory.create_basket_set(json_item, products) else vids.push(json_item['variantId']) item = factory.create_basket_item(json_item, products) end if item.errors? errors[key] = item else items[item.id] = item end end if json_object['order_lines'] vids = vids.uniq self.uniqueVariantCount = vids.count end |
#update_item(basket_item) ⇒ Object
Returns $this.
175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 |
# File 'lib/AboutYou/Model/basket.rb', line 175 def update_item(basket_item) item = { 'id' => basket_item.id, 'variant_id' => basket_item.variant_id, 'app_id' => basket_item.app_id } add_data = basket_item.additional_data if add_data check_additional_data(add_data) item['additional_data'] = add_data end updated_items[basket_item.id] = item self end |
#update_item_set(basket_set) ⇒ Object
Returns $this.
196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 |
# File 'lib/AboutYou/Model/basket.rb', line 196 def update_item_set(basket_set) items = basket_set.items fail 'InvalidArgumentException! BasketSet needs at least one item' if items.empty? item_set = [] items.each do |sub_item| item = { 'variant_id' => sub_item.variant_id, 'app_id' => sub_item.app_id } add_data = sub_item.additional_data if add_data check_additional_data(add_data) item['additional_data'] = add_data end item_set.push = item end updated_items[basket_set.id] = { 'id' => basket_set.id, 'additional_data' => basket_set.additional_data, 'set_items' => item_set } self end |