aboutyou-sdk 0.0.22 → 0.0.23

Sign up to get free protection for your applications and to get access to all the features.
@@ -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