aboutyou-sdk 0.0.22 → 0.0.23

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.
@@ -1,261 +1,267 @@
1
1
  module AboutYou
2
2
  module SDK
3
3
  module Model
4
+ ###
5
+ # This Class represents a basket model
6
+ #
7
+ # author:: Collins GmbH & Co KG
8
+ ###
4
9
  class Basket
5
-
6
- attr_accessor :items
7
- attr_accessor :errors
8
- attr_accessor :uniqueVariantCount
9
- attr_accessor :products
10
- attr_accessor :totalPrice
11
- attr_accessor :totalNet
12
- attr_accessor :totalVat
13
- attr_accessor :totalAmount
14
- attr_accessor :deletedItems
15
- attr_accessor :updatesItems
16
-
17
-
18
- ###
19
- # @param object $jsonObject
20
- # @param ModelFactoryInterface $factory
21
- #
22
- # @return Basket
23
- ###
24
- def self.createFromJson(jsonObject, factory)
25
-
26
- basket = self.new
27
- basket.errors = Hash.new
28
- basket.deletedItems = Hash.new
29
- basket.updatedItems = Hash.new
30
- basket.totalPrice = jsonObject["total_price"];
31
- basket.totalNet = jsonObject["total_net"];
32
- basket.totalVat = jsonObject["total_vat"]
33
- basket.parseItems(jsonObject, factory);
34
- basket.totalAmount = self.items.count
35
-
36
- return basket;
37
- end
38
-
39
- ###
40
- # @return boolean
41
- ###
42
- def hasErrors()
43
-
44
- return self.errors.count > 0;
45
- end
46
-
47
- ###
48
- # @param $itemId
49
- #
50
- # @return BasketItem|BasketSet|null
51
- ###
52
- def item(itemId)
53
-
54
- if (self.items.key?(itemId))
55
- return self.items[itemId]
56
- else
57
- return nil
58
- end
59
- end
60
-
61
- def collectedItems()
62
-
63
- items = self.items;
64
- itemsMerged = Hash.new
65
- items.each do |item|
66
- key = item.uniqueKey();
67
- if (itemsMerged.key?(key))
68
- amount = itemsMerged[key]['amount'] + 1;
69
- itemsMerged[key] = Hash[
70
- 'item' => item,
71
- 'price' => (item.totalPrice() * amount),
72
- 'amount' => amount
73
- ]
74
- else
75
- itemsMerged[key] = Hash[
76
- 'item' => item,
77
- 'price' => item.totalPrice(),
78
- 'amount' => 1
10
+ # array of items in the basket
11
+ attr_accessor :items
12
+ # errors of the basket
13
+ attr_accessor :errors
14
+ attr_accessor :uniqueVariantCount
15
+ attr_accessor :products
16
+ attr_accessor :totalPrice
17
+ attr_accessor :totalNet
18
+ attr_accessor :totalVat
19
+ attr_accessor :totalAmount
20
+ attr_accessor :deletedItems
21
+ attr_accessor :updatesItems
22
+
23
+
24
+ ###
25
+ # @param object $jsonObject
26
+ # @param ModelFactoryInterface $factory
27
+ #
28
+ # @return Basket
29
+ ###
30
+ def self.createFromJson(jsonObject, factory)
31
+
32
+ basket = self.new
33
+ basket.errors = Hash.new
34
+ basket.deletedItems = Hash.new
35
+ basket.updatedItems = Hash.new
36
+ basket.totalPrice = jsonObject["total_price"];
37
+ basket.totalNet = jsonObject["total_net"];
38
+ basket.totalVat = jsonObject["total_vat"]
39
+ basket.parseItems(jsonObject, factory);
40
+ basket.totalAmount = self.items.count
41
+
42
+ return basket;
43
+ end
44
+
45
+ ###
46
+ # @return boolean
47
+ ###
48
+ def hasErrors()
49
+
50
+ return self.errors.count > 0;
51
+ end
52
+
53
+ ###
54
+ # @param $itemId
55
+ #
56
+ # @return BasketItem|BasketSet|null
57
+ ###
58
+ def item(itemId)
59
+
60
+ if (self.items.key?(itemId))
61
+ return self.items[itemId]
62
+ else
63
+ return nil
64
+ end
65
+ end
66
+
67
+ def collectedItems()
68
+
69
+ items = self.items;
70
+ itemsMerged = Hash.new
71
+ items.each do |item|
72
+ key = item.uniqueKey();
73
+ if (itemsMerged.key?(key))
74
+ amount = itemsMerged[key]['amount'] + 1;
75
+ itemsMerged[key] = Hash[
76
+ 'item' => item,
77
+ 'price' => (item.totalPrice() * amount),
78
+ 'amount' => amount
79
79
  ]
80
- end
81
- end
82
-
83
- return itemsMerged
84
- end
85
-
86
- ###
87
- # build order line for update query
88
- # @return array
89
- ###
90
- def orderLinesArray()
91
-
92
- orderLines = Array(nil)
93
-
94
- (self.deletedItems.uniq).each do |itemId|
95
- orderLines.push(Hash['delete' =>itemId])
96
- end
97
-
98
- self.updatedItems.each do |item|
99
- orderLines.push(item)
100
- end
101
-
102
- return orderLines
103
- end
104
-
105
- def parseItems(jsonObject, factory)
106
-
107
- products = Hash.new
108
- if (jsonObject["products"])
109
- jsonObject["products"].each do |key, jsonProduct|
110
- products[key] = factory.createProduct(jsonProduct);
80
+ else
81
+ itemsMerged[key] = Hash[
82
+ 'item' => item,
83
+ 'price' => item.totalPrice(),
84
+ 'amount' => 1
85
+ ]
111
86
  end
112
- end
113
-
114
- self.products = products;
115
-
116
- vids = Array(nil)
117
- if (jsonObject["order_lines"])
118
- jsonObject["order_lines"].each do |key, jsonItem|
119
- if (jsonItem["set_items"])
120
- item = factory.createBasketSet(jsonItem, products);
121
- else
122
- vids.push(jsonItem["variantId"])
123
- item = factory.createBasketItem(jsonItem, products);
124
- end
125
-
126
- if (item.hasErrors)
127
- self.errors[key] = item;
128
- else
129
- self.items[item.id] = item;
130
- end
131
- end
132
- end
133
-
134
- vids = vids.uniq
135
- self.uniqueVariantCount = vids.count;
136
- end
137
-
138
- ###
139
- # Methods to manipulate basket
140
- #
141
- # this api is unstable method names and signatures may be changed in the future
142
- ###
143
-
144
-
145
- ###
146
- # @param string $itemId
147
- #
148
- # @return $this
149
- ###
150
- def deleteItem(itemId)
151
-
152
- self.deletedItems[itemId] = itemId;
153
- return self
154
- end
155
-
156
- ###
157
- # @param string[] $itemIds
158
- #
159
- # @return $this
160
- ###
161
- def deleteItems(itemIds)
162
-
163
- itemIds.each do |itemId|
164
- self.deletedItems[itemId] = itemId
165
- end
166
- return self
167
- end
168
-
169
- ###
170
- # @return $this
171
- ###
172
- def deleteAllItems()
87
+ end
173
88
 
174
- items = self.items
89
+ return itemsMerged
90
+ end
175
91
 
176
- if !(items.empty?)
177
- ids = Array(nil);
92
+ ###
93
+ # build order line for update query
94
+ # @return array
95
+ ###
96
+ def orderLinesArray()
178
97
 
179
- items.each do |item|
180
- ids.push = item.id
181
- end
182
-
183
- self.deleteItems(ids)
184
- end
185
-
186
- return self;
187
- end
188
-
189
- ###
190
- # @param BasketItem $basketItem
191
- #
192
- # @return $this
193
- ###
194
- def updateItem(basketItem)
195
-
196
- item = Hash[
197
- 'id' => basketItem.id,
198
- 'variant_id' => basketItem.variantId(),
199
- 'app_id' => basketItem.appId()
200
- ]
201
- additionalData = basketItem.additionalData();
202
- if (additionalData)
203
- self.checkAdditionData(additionalData);
204
- item['additional_data'] = additionalData;
205
- end
98
+ orderLines = Array(nil)
206
99
 
207
- self.updatedItems[basketItem.id] = item;
100
+ (self.deletedItems.uniq).each do |itemId|
101
+ orderLines.push(Hash['delete' =>itemId])
102
+ end
208
103
 
209
- return self
210
- end
104
+ self.updatedItems.each do |item|
105
+ orderLines.push(item)
106
+ end
211
107
 
212
- ###
213
- # @param BasketSet $basketSet
214
- #
215
- # @return $this
216
- ###
217
- def updateItemSet(basketSet)
108
+ return orderLines
109
+ end
218
110
 
219
- items = basketSet.items;
111
+ def parseItems(jsonObject, factory)
220
112
 
221
- if (items.empty?)
222
- raise 'InvalidArgumentException! BasketSet needs at least one item'
113
+ products = Hash.new
114
+ if (jsonObject["products"])
115
+ jsonObject["products"].each do |key, jsonProduct|
116
+ products[key] = factory.createProduct(jsonProduct);
223
117
  end
118
+ end
119
+
120
+ self.products = products;
121
+
122
+ vids = Array(nil)
123
+ if (jsonObject["order_lines"])
124
+ jsonObject["order_lines"].each do |key, jsonItem|
125
+ if (jsonItem["set_items"])
126
+ item = factory.createBasketSet(jsonItem, products);
127
+ else
128
+ vids.push(jsonItem["variantId"])
129
+ item = factory.createBasketItem(jsonItem, products);
130
+ end
131
+
132
+ if (item.hasErrors)
133
+ self.errors[key] = item;
134
+ else
135
+ self.items[item.id] = item;
136
+ end
137
+ end
138
+ end
139
+
140
+ vids = vids.uniq
141
+ self.uniqueVariantCount = vids.count;
142
+ end
143
+
144
+ ###
145
+ # Methods to manipulate basket
146
+ #
147
+ # this api is unstable method names and signatures may be changed in the future
148
+ ###
149
+
150
+
151
+ ###
152
+ # @param string $itemId
153
+ #
154
+ # @return $this
155
+ ###
156
+ def deleteItem(itemId)
157
+
158
+ self.deletedItems[itemId] = itemId;
159
+ return self
160
+ end
161
+
162
+ ###
163
+ # @param string[] $itemIds
164
+ #
165
+ # @return $this
166
+ ###
167
+ def deleteItems(itemIds)
168
+
169
+ itemIds.each do |itemId|
170
+ self.deletedItems[itemId] = itemId
171
+ end
172
+ return self
173
+ end
174
+
175
+ ###
176
+ # @return $this
177
+ ###
178
+ def deleteAllItems()
179
+
180
+ items = self.items
181
+
182
+ if !(items.empty?)
183
+ ids = Array(nil);
184
+
185
+ items.each do |item|
186
+ ids.push = item.id
187
+ end
224
188
 
225
- itemSet = Array(nil);
226
- items.each do |subItem|
227
- item = Hash[
228
- 'variant_id' => subItem.variantId(),
229
- 'app_id' => subItem.appId()
230
- ]
231
- additionalData = subItem.additionalData();
232
- if (additionalData)
233
- checkAdditionData(additionalData);
234
- item['additional_data'] = additionalData;
235
- end
236
- itemSet.push = item;
237
- end
189
+ self.deleteItems(ids)
190
+ end
191
+
192
+ return self;
193
+ end
194
+
195
+ ###
196
+ # @param BasketItem $basketItem
197
+ #
198
+ # @return $this
199
+ ###
200
+ def updateItem(basketItem)
201
+
202
+ item = Hash[
203
+ 'id' => basketItem.id,
204
+ 'variant_id' => basketItem.variantId(),
205
+ 'app_id' => basketItem.appId()
206
+ ]
207
+ additionalData = basketItem.additionalData();
208
+ if (additionalData)
209
+ self.checkAdditionData(additionalData);
210
+ item['additional_data'] = additionalData;
211
+ end
212
+
213
+ self.updatedItems[basketItem.id] = item;
214
+
215
+ return self
216
+ end
217
+
218
+ ###
219
+ # @param BasketSet $basketSet
220
+ #
221
+ # @return $this
222
+ ###
223
+ def updateItemSet(basketSet)
224
+
225
+ items = basketSet.items;
226
+
227
+ if (items.empty?)
228
+ raise 'InvalidArgumentException! BasketSet needs at least one item'
229
+ end
230
+
231
+ itemSet = Array(nil);
232
+ items.each do |subItem|
233
+ item = Hash[
234
+ 'variant_id' => subItem.variantId(),
235
+ 'app_id' => subItem.appId()
236
+ ]
237
+ additionalData = subItem.additionalData();
238
+ if (additionalData)
239
+ checkAdditionData(additionalData);
240
+ item['additional_data'] = additionalData;
241
+ end
242
+ itemSet.push = item;
243
+ end
238
244
 
239
- self.updatedItems[basketSet.id] = Hash[
240
- 'id' => basketSet.id,
241
- 'additional_data' => basketSet.additionalData,
242
- 'set_items' => itemSet
243
- ]
245
+ self.updatedItems[basketSet.id] = Hash[
246
+ 'id' => basketSet.id,
247
+ 'additional_data' => basketSet.additionalData,
248
+ 'set_items' => itemSet
249
+ ]
244
250
 
245
- return self;
246
- end
251
+ return self;
252
+ end
247
253
 
248
-
249
- def checkAdditionData(additionalData = nil, imageUrlRequired = false)
250
254
 
251
- if (additionalData && !additionalData.key?('description'))
252
- raise 'InvalidArgumentException! description is required in additional data'
253
- end
255
+ def checkAdditionData(additionalData = nil, imageUrlRequired = false)
254
256
 
255
- if (additionalData.key?('internal_infos') && !(additionalData['internal_infos'].is_a? Array))
256
- raise 'InvalidArgumentException! internal_infos must be an array'
257
- end
258
- end
257
+ if (additionalData && !additionalData.key?('description'))
258
+ raise 'InvalidArgumentException! description is required in additional data'
259
+ end
260
+
261
+ if (additionalData.key?('internal_infos') && !(additionalData['internal_infos'].is_a? Array))
262
+ raise 'InvalidArgumentException! internal_infos must be an array'
263
+ end
264
+ end
259
265
  end
260
266
  end
261
267
  end