@webresto/graphql 1.3.6 → 1.3.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. package/.gitattributes +2 -0
  2. package/.gitlab-ci.yml +18 -0
  3. package/.vscode/extensions.json +5 -0
  4. package/docs/actions.md +25 -0
  5. package/docs/authorization.md +215 -0
  6. package/docs/captcha.md +71 -0
  7. package/docs/device-id.md +30 -0
  8. package/docs/messages.md +10 -0
  9. package/docs/user.md +54 -0
  10. package/index.d.ts +0 -1
  11. package/index.js +6 -2
  12. package/index.ts +2 -2
  13. package/lib/afterHook.js +8 -0
  14. package/lib/afterHook.ts +9 -0
  15. package/lib/bindTranslations.d.ts +1 -0
  16. package/lib/bindTranslations.js +40 -0
  17. package/lib/bindTranslations.ts +39 -0
  18. package/lib/defaults.d.ts +1 -0
  19. package/lib/defaults.js +49 -10
  20. package/lib/defaults.ts +55 -0
  21. package/lib/eventHelper.d.ts +14 -5
  22. package/lib/eventHelper.js +28 -9
  23. package/lib/eventHelper.ts +41 -8
  24. package/lib/getRecomended.d.ts +1 -0
  25. package/lib/getRecomended.js +29 -0
  26. package/lib/getRecomended.ts +31 -0
  27. package/lib/graphqlHelper.d.ts +3 -4
  28. package/lib/graphqlHelper.js +184 -73
  29. package/lib/graphqlHelper.ts +329 -186
  30. package/lib/jwt.d.ts +10 -0
  31. package/lib/jwt.js +43 -0
  32. package/lib/jwt.ts +61 -0
  33. package/package.json +13 -6
  34. package/src/additionalResolvers.d.ts +72 -9
  35. package/src/additionalResolvers.js +93 -24
  36. package/src/additionalResolvers.ts +105 -34
  37. package/src/graphql.d.ts +5 -3
  38. package/src/graphql.js +170 -37
  39. package/src/graphql.ts +210 -60
  40. package/src/resolvers/bonusProgram.d.ts +32 -0
  41. package/src/resolvers/bonusProgram.js +65 -0
  42. package/src/resolvers/bonusProgram.ts +79 -0
  43. package/src/resolvers/captcha.d.ts +11 -0
  44. package/src/resolvers/captcha.js +19 -0
  45. package/src/resolvers/captcha.ts +16 -0
  46. package/src/resolvers/checkout.d.ts +43 -14
  47. package/src/resolvers/checkout.js +172 -122
  48. package/src/resolvers/checkout.ts +218 -142
  49. package/src/resolvers/dishAndModifier.js +8 -4
  50. package/src/resolvers/dishAndModifier.ts +4 -0
  51. package/src/resolvers/error.d.ts +9 -0
  52. package/src/resolvers/error.js +21 -0
  53. package/src/resolvers/error.ts +21 -0
  54. package/src/resolvers/menu.d.ts +9 -0
  55. package/src/resolvers/menu.js +12 -0
  56. package/src/resolvers/menu.ts +10 -0
  57. package/src/resolvers/order.d.ts +527 -0
  58. package/src/resolvers/order.js +349 -0
  59. package/src/resolvers/order.ts +435 -0
  60. package/src/resolvers/paymentMethod.js +7 -3
  61. package/src/resolvers/paymentMethod.ts +9 -5
  62. package/src/resolvers/pickupPoint.d.ts +1 -0
  63. package/src/resolvers/pickupPoint.js +24 -0
  64. package/src/resolvers/pickupPoint.ts +23 -0
  65. package/src/resolvers/recomended.d.ts +13 -0
  66. package/src/resolvers/recomended.js +80 -0
  67. package/src/resolvers/recomended.ts +86 -0
  68. package/src/resolvers/restrictions.d.ts +37 -1
  69. package/src/resolvers/restrictions.js +100 -15
  70. package/src/resolvers/restrictions.ts +106 -14
  71. package/src/resolvers/streets.d.ts +1 -1
  72. package/src/resolvers/streets.js +1 -4
  73. package/src/resolvers/streets.ts +1 -3
  74. package/src/resolvers/subscriptions.d.ts +4 -4
  75. package/src/resolvers/subscriptions.js +49 -12
  76. package/src/resolvers/subscriptions.ts +59 -14
  77. package/src/resolvers/telemetry.d.ts +14 -0
  78. package/src/resolvers/telemetry.js +25 -0
  79. package/src/resolvers/telemetry.ts +24 -0
  80. package/src/resolvers/user.d.ts +82 -0
  81. package/src/resolvers/user.js +416 -0
  82. package/src/resolvers/user.ts +621 -0
  83. package/src/resolvers/userLocation.d.ts +53 -0
  84. package/src/resolvers/userLocation.js +74 -0
  85. package/src/resolvers/userLocation.ts +125 -0
  86. package/src/resolvers/userOTPrequest.d.ts +21 -0
  87. package/src/resolvers/userOTPrequest.js +57 -0
  88. package/src/resolvers/userOTPrequest.ts +75 -0
  89. package/test/e2e_helper.js +157 -0
  90. package/test/e2e_helper.ts +212 -0
  91. package/test/fixture/config/i18n.js +7 -20
  92. package/test/fixture/config/locales/de.json +1 -0
  93. package/test/fixture/config/locales/en.json +10 -0
  94. package/test/fixture/config/locales/es.json +3 -0
  95. package/test/fixture/config/locales/fr.json +1 -0
  96. package/test/fixture/config/log.js +1 -1
  97. package/test/fixture/package.json +5 -6
  98. package/test/fixture/patches/rttc+10.0.1.patch +17 -0
  99. package/test/integration/captcha.test.js +20 -0
  100. package/test/integration/captcha.test.ts +25 -0
  101. package/test/integration/dish.test.js +35 -0
  102. package/test/integration/dish.test.ts +43 -0
  103. package/test/integration/graphql.test.js +5 -2
  104. package/test/integration/graphql.test.ts +2 -4
  105. package/test/integration/images.test.js +35 -0
  106. package/test/integration/images.test.ts +40 -0
  107. package/test/integration/locale.test.js +26 -0
  108. package/test/integration/locale.test.ts +32 -0
  109. package/test/integration/order.test.js +56 -43
  110. package/test/integration/order.test.ts +59 -59
  111. package/test/integration/subscriptions.test.js +136 -0
  112. package/test/integration/subscriptions.test.ts +162 -0
  113. package/test/integration/user.test.js +249 -0
  114. package/test/integration/user.test.ts +299 -0
  115. package/test/unit/first.test.js +4 -2
  116. package/test/unit/first.test.ts +1 -1
  117. package/test/unit/get-recomended.test.js +56 -0
  118. package/test/unit/get-recomended.test.ts +63 -0
  119. package/translations/de.json +2 -0
  120. package/translations/en.json +3 -0
  121. package/translations/es.json +3 -0
  122. package/translations/fr.json +2 -0
  123. package/translations/ru.json +36 -0
  124. package/tsconfig.json +20 -5
  125. package/types/global.d.ts +30 -0
  126. package/types/global.js +2 -0
  127. package/types/global.ts +31 -0
  128. package/types/primitives.d.ts +19 -0
  129. package/types/references.d.ts +1 -0
  130. package/types/restoGraphQLConfig.d.ts +13 -0
  131. package/lib/afterHook.ts___graphql-transport-ws +0 -138
  132. package/lib/afterHook.ts___graphql-ws +0 -133
  133. package/lib/errorWrapper.d.ts +0 -4
  134. package/lib/errorWrapper.js +0 -13
  135. package/lib/errorWrapper.ts +0 -12
  136. package/notes.md +0 -1976
  137. package/src/resolvers/cart.d.ts +0 -343
  138. package/src/resolvers/cart.js +0 -196
  139. package/src/resolvers/cart.ts +0 -277
  140. package/test/fixture/config/connections.js +0 -9
  141. package/test/integration/sails_not_crash.test.js +0 -3
  142. package/test/integration/sails_not_crash.test.ts +0 -3
@@ -1,343 +0,0 @@
1
- declare const _default: {
2
- Query: {
3
- order: {
4
- def: string;
5
- fn: (parent: any, args: any, context: any) => Promise<{
6
- id: string;
7
- shortId: string;
8
- dishes: number[] | import("@webresto/core/models/OrderDish").default[];
9
- paymentMethod: any;
10
- paymentMethodTitle: string;
11
- paid: {
12
- type: string;
13
- defaultsTo: boolean;
14
- };
15
- isPaymentPromise: boolean;
16
- dishesCount: number;
17
- uniqueDishes: number;
18
- modifiers: any;
19
- customer: any;
20
- address: any;
21
- comment: string;
22
- personsCount: string;
23
- date: string;
24
- problem: boolean;
25
- rmsDelivered: boolean;
26
- rmsId: string;
27
- rmsOrderNumber: string;
28
- rmsOrderData: any;
29
- rmsDeliveryDate: string;
30
- rmsErrorMessage: string;
31
- rmsErrorCode: string;
32
- rmsStatusCode: string;
33
- deliveryStatus: string;
34
- selfService: boolean;
35
- deliveryDescription: string;
36
- message: string;
37
- deliveryItem: any;
38
- deliveryCost: number;
39
- totalWeight: number;
40
- trifleFrom: number;
41
- bonusesTotal: number;
42
- total: number;
43
- orderTotal: number;
44
- discountTotal: number;
45
- orderDate: string;
46
- customData: any;
47
- state: string;
48
- toJSON(): any;
49
- }>;
50
- };
51
- };
52
- Mutation: {
53
- orderAddDish: {
54
- def: string;
55
- fn: (parent: any, args: any, context: any) => Promise<{
56
- id: string;
57
- shortId: string;
58
- dishes: number[] | import("@webresto/core/models/OrderDish").default[];
59
- paymentMethod: any;
60
- paymentMethodTitle: string;
61
- paid: {
62
- type: string;
63
- defaultsTo: boolean;
64
- };
65
- isPaymentPromise: boolean;
66
- dishesCount: number;
67
- uniqueDishes: number;
68
- modifiers: any;
69
- customer: any;
70
- address: any;
71
- comment: string;
72
- personsCount: string;
73
- date: string;
74
- problem: boolean;
75
- rmsDelivered: boolean;
76
- rmsId: string;
77
- rmsOrderNumber: string;
78
- rmsOrderData: any;
79
- rmsDeliveryDate: string;
80
- rmsErrorMessage: string;
81
- rmsErrorCode: string;
82
- rmsStatusCode: string;
83
- deliveryStatus: string;
84
- selfService: boolean;
85
- deliveryDescription: string;
86
- message: string;
87
- deliveryItem: any;
88
- deliveryCost: number;
89
- totalWeight: number;
90
- trifleFrom: number;
91
- bonusesTotal: number;
92
- total: number;
93
- orderTotal: number;
94
- discountTotal: number;
95
- orderDate: string;
96
- customData: any;
97
- state: string;
98
- toJSON(): any;
99
- }>;
100
- };
101
- orderReplaceDish: {
102
- def: string;
103
- fn: (parent: any, args: any, context: any) => Promise<{
104
- id: string;
105
- shortId: string;
106
- dishes: number[] | import("@webresto/core/models/OrderDish").default[];
107
- paymentMethod: any;
108
- paymentMethodTitle: string;
109
- paid: {
110
- type: string;
111
- defaultsTo: boolean;
112
- };
113
- isPaymentPromise: boolean;
114
- dishesCount: number;
115
- uniqueDishes: number;
116
- modifiers: any;
117
- customer: any;
118
- address: any;
119
- comment: string;
120
- personsCount: string;
121
- date: string;
122
- problem: boolean;
123
- rmsDelivered: boolean;
124
- rmsId: string;
125
- rmsOrderNumber: string;
126
- rmsOrderData: any;
127
- rmsDeliveryDate: string;
128
- rmsErrorMessage: string;
129
- rmsErrorCode: string;
130
- rmsStatusCode: string;
131
- deliveryStatus: string;
132
- selfService: boolean;
133
- deliveryDescription: string;
134
- message: string;
135
- deliveryItem: any;
136
- deliveryCost: number;
137
- totalWeight: number;
138
- trifleFrom: number;
139
- bonusesTotal: number;
140
- total: number;
141
- orderTotal: number;
142
- discountTotal: number;
143
- orderDate: string;
144
- customData: any;
145
- state: string;
146
- toJSON(): any;
147
- }>;
148
- };
149
- orderRemoveDish: {
150
- def: string;
151
- fn: (parent: any, args: any, context: any) => Promise<{
152
- id: string;
153
- shortId: string;
154
- dishes: number[] | import("@webresto/core/models/OrderDish").default[];
155
- paymentMethod: any;
156
- paymentMethodTitle: string;
157
- paid: {
158
- type: string;
159
- defaultsTo: boolean;
160
- };
161
- isPaymentPromise: boolean;
162
- dishesCount: number;
163
- uniqueDishes: number;
164
- modifiers: any;
165
- customer: any;
166
- address: any;
167
- comment: string;
168
- personsCount: string;
169
- date: string;
170
- problem: boolean;
171
- rmsDelivered: boolean;
172
- rmsId: string;
173
- rmsOrderNumber: string;
174
- rmsOrderData: any;
175
- rmsDeliveryDate: string;
176
- rmsErrorMessage: string;
177
- rmsErrorCode: string;
178
- rmsStatusCode: string;
179
- deliveryStatus: string;
180
- selfService: boolean;
181
- deliveryDescription: string;
182
- message: string;
183
- deliveryItem: any;
184
- deliveryCost: number;
185
- totalWeight: number;
186
- trifleFrom: number;
187
- bonusesTotal: number;
188
- total: number;
189
- orderTotal: number;
190
- discountTotal: number;
191
- orderDate: string;
192
- customData: any;
193
- state: string;
194
- toJSON(): any;
195
- }>;
196
- };
197
- orderSetDishAmount: {
198
- def: string;
199
- fn: (parent: any, args: any, context: any) => Promise<{
200
- id: string;
201
- shortId: string;
202
- dishes: number[] | import("@webresto/core/models/OrderDish").default[];
203
- paymentMethod: any;
204
- paymentMethodTitle: string;
205
- paid: {
206
- type: string;
207
- defaultsTo: boolean;
208
- };
209
- isPaymentPromise: boolean;
210
- dishesCount: number;
211
- uniqueDishes: number;
212
- modifiers: any;
213
- customer: any;
214
- address: any;
215
- comment: string;
216
- personsCount: string;
217
- date: string;
218
- problem: boolean;
219
- rmsDelivered: boolean;
220
- rmsId: string;
221
- rmsOrderNumber: string;
222
- rmsOrderData: any;
223
- rmsDeliveryDate: string;
224
- rmsErrorMessage: string;
225
- rmsErrorCode: string;
226
- rmsStatusCode: string;
227
- deliveryStatus: string;
228
- selfService: boolean;
229
- deliveryDescription: string;
230
- message: string;
231
- deliveryItem: any;
232
- deliveryCost: number;
233
- totalWeight: number;
234
- trifleFrom: number;
235
- bonusesTotal: number;
236
- total: number;
237
- orderTotal: number;
238
- discountTotal: number;
239
- orderDate: string;
240
- customData: any;
241
- state: string;
242
- toJSON(): any;
243
- }>;
244
- };
245
- orderSetDishComment: {
246
- def: string;
247
- fn: (parent: any, args: any, context: any) => Promise<{
248
- id: string;
249
- shortId: string;
250
- dishes: number[] | import("@webresto/core/models/OrderDish").default[];
251
- paymentMethod: any;
252
- paymentMethodTitle: string;
253
- paid: {
254
- type: string;
255
- defaultsTo: boolean;
256
- };
257
- isPaymentPromise: boolean;
258
- dishesCount: number;
259
- uniqueDishes: number;
260
- modifiers: any;
261
- customer: any;
262
- address: any;
263
- comment: string;
264
- personsCount: string;
265
- date: string;
266
- problem: boolean;
267
- rmsDelivered: boolean;
268
- rmsId: string;
269
- rmsOrderNumber: string;
270
- rmsOrderData: any;
271
- rmsDeliveryDate: string;
272
- rmsErrorMessage: string;
273
- rmsErrorCode: string;
274
- rmsStatusCode: string;
275
- deliveryStatus: string;
276
- selfService: boolean;
277
- deliveryDescription: string;
278
- message: string;
279
- deliveryItem: any;
280
- deliveryCost: number;
281
- totalWeight: number;
282
- trifleFrom: number;
283
- bonusesTotal: number;
284
- total: number;
285
- orderTotal: number;
286
- discountTotal: number;
287
- orderDate: string;
288
- customData: any;
289
- state: string;
290
- toJSON(): any;
291
- }>;
292
- };
293
- orderUpdate: {
294
- def: string;
295
- fn: (parent: any, args: any, context: any) => Promise<{
296
- id: string;
297
- shortId: string;
298
- dishes: number[] | import("@webresto/core/models/OrderDish").default[];
299
- paymentMethod: any;
300
- paymentMethodTitle: string;
301
- paid: {
302
- type: string;
303
- defaultsTo: boolean;
304
- };
305
- isPaymentPromise: boolean;
306
- dishesCount: number;
307
- uniqueDishes: number;
308
- modifiers: any;
309
- customer: any;
310
- address: any;
311
- comment: string;
312
- personsCount: string;
313
- date: string;
314
- problem: boolean;
315
- rmsDelivered: boolean;
316
- rmsId: string;
317
- rmsOrderNumber: string;
318
- rmsOrderData: any;
319
- rmsDeliveryDate: string;
320
- rmsErrorMessage: string;
321
- rmsErrorCode: string;
322
- rmsStatusCode: string;
323
- deliveryStatus: string;
324
- selfService: boolean;
325
- deliveryDescription: string;
326
- message: string;
327
- deliveryItem: any;
328
- deliveryCost: number;
329
- totalWeight: number;
330
- trifleFrom: number;
331
- bonusesTotal: number;
332
- total: number;
333
- orderTotal: number;
334
- discountTotal: number;
335
- orderDate: string;
336
- customData: any;
337
- state: string;
338
- toJSON(): any;
339
- }>;
340
- };
341
- };
342
- };
343
- export default _default;
@@ -1,196 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const checkExpression_1 = require("@webresto/core/libs/checkExpression");
4
- const getEmitter_1 = require("@webresto/core/libs/getEmitter");
5
- const errorWrapper_1 = require("../../lib/errorWrapper");
6
- exports.default = {
7
- Query: {
8
- order: {
9
- def: '""" если orderId не задан, вернется новая корзина """ order(orderId: String, shortId: String, orderNumber: String): Order',
10
- fn: async function (parent, args, context) {
11
- let order;
12
- let criteria = {};
13
- if (args.orderNumber) {
14
- criteria["rmsOrderNumber"] = args.orderNumber;
15
- criteria["sort"] = "createdAt DESC";
16
- }
17
- else if (args.orderId) {
18
- criteria["id"] = args.orderId;
19
- }
20
- else if (args.shortId) {
21
- criteria["shortId"] = args.shortId;
22
- }
23
- if (Object.keys(criteria).length !== 0) {
24
- order = (await Order.find(criteria))[0];
25
- }
26
- if (!order) {
27
- sails.log.error("GQL > order resolver error: ", `order with id ${args.orderId} . Trying make new cart.`);
28
- order = await getNewCart(args.orderId);
29
- }
30
- let fullOrder = await Order.populate(order.id);
31
- getEmitter_1.default().emit("http-api:before-response-order", fullOrder);
32
- return fullOrder;
33
- },
34
- },
35
- },
36
- Mutation: {
37
- orderAddDish: {
38
- def: "orderAddDish(orderId: String, dishId: String, amount: Int, modifiers: Json, comment: String, from: String, replace: Boolean, orderDishId: Int): Order",
39
- fn: async function (parent, args, context) {
40
- let order;
41
- if (args.modifiers) {
42
- args.modifiers.forEach((modifier) => {
43
- if (modifier.amount === undefined || modifier.id === undefined)
44
- throw new errorWrapper_1.Error(0, "ERROR", `modifier required (amount, id) for dish: ${args.dishId} current values: id: ${modifier.id}, amount: ${modifier.amount}`);
45
- });
46
- }
47
- if (args.orderId)
48
- order = await Order.findOne({ id: args.orderId });
49
- if (!order) {
50
- sails.log.error("GQL > orderAddDish resolver error: ", `order with id ${args.orderId} has problem. Trying make new cart.`);
51
- order = await getNewCart(args.orderId);
52
- }
53
- const dish = await Dish.findOne({ id: args.dishId });
54
- if (!dish && !args.replace)
55
- throw new errorWrapper_1.Error(0, "ERROR", `dish with id ${args.dishId} not found`);
56
- if (dish && checkExpression_1.default(dish) === "promo") {
57
- let additionalInfo;
58
- try {
59
- additionalInfo = JSON.parse(dish.additionalInfo);
60
- }
61
- catch (e) { }
62
- if (additionalInfo && additionalInfo.defaultOrderDish) {
63
- // Исключение на товар в каждую корзину
64
- }
65
- else {
66
- throw new errorWrapper_1.Error(0, "ERROR", `"${dish.name}" является акционным и не может быть добавлено пользователем`);
67
- }
68
- }
69
- await Order.addDish(order.id, args.dishId, args.amount, args.modifiers || [], args.comment, args.from, args.replace, args.orderDishId);
70
- await Order.countCart(order);
71
- let fullOrder = await Order.populate(order.id);
72
- getEmitter_1.default().emit("http-api:before-response-order-add-dish", fullOrder);
73
- return fullOrder;
74
- },
75
- },
76
- orderReplaceDish: {
77
- def: "orderReplaceDish(orderId: String!, orderDishId: Int!, amount: Int, modifiers: Json, comment: String, from: String): Order",
78
- fn: async (parent, args, context) => {
79
- let order;
80
- if (args.orderId)
81
- order = await Order.findOne({ id: args.orderId });
82
- if (!order) {
83
- sails.log.error("GQL > orderReplaceDish resolver error: ", `order with id ${args.orderId} has problem. Trying make new cart.`);
84
- order = await getNewCart(args.orderId);
85
- }
86
- if (order.paid || order.state === "ORDER") {
87
- order = await getNewCart();
88
- }
89
- await Order.addDish(order.id, args.dishId, args.amount, args.modifiers || [], args.comment, args.from, args.replace, args.orderDishId);
90
- await Order.countCart(order);
91
- let fullOrder = await Order.populate(order.id);
92
- getEmitter_1.default().emit("http-api:before-response-order-replace-dish", fullOrder);
93
- return fullOrder;
94
- },
95
- },
96
- orderRemoveDish: {
97
- def: "orderRemoveDish(id: String!, orderDishId: Int!, amount: Int): Order",
98
- fn: async function (parent, args, context) {
99
- let order;
100
- order = await Order.findOne({ id: args.id });
101
- if (!order) {
102
- sails.log.error("GQL > orderRemoveDish resolver error: ", `order with id ${args.orderId} has problem. Trying make new cart.`);
103
- order = await getNewCart(args.orderId);
104
- }
105
- if (order.paid || order.state === "ORDER") {
106
- order = await getNewCart();
107
- }
108
- const orderDish = await OrderDish.findOne({ id: args.orderDishId });
109
- await Order.removeDish(order.id, orderDish, args.amount, false);
110
- await Order.countCart(order);
111
- let fullOrder = await Order.populate(order.id);
112
- getEmitter_1.default().emit("http-api:before-response-order-remove-dish", fullOrder);
113
- return fullOrder;
114
- },
115
- },
116
- orderSetDishAmount: {
117
- def: "orderSetDishAmount(id: String, orderDishId: Int, amount: Int): Order",
118
- fn: async function (parent, args, context) {
119
- let order;
120
- order = await Order.findOne(args.id);
121
- if (!order) {
122
- sails.log.error("GQL > orderSetDishAmount resolver error: ", `order with id ${args.orderId} has problem. Trying make new cart.`);
123
- order = await getNewCart(args.orderId);
124
- }
125
- if (order.paid || order.state === "ORDER") {
126
- order = await getNewCart();
127
- }
128
- let dish = await OrderDish.findOne(args.orderDishId).populate("dish");
129
- if (!dish)
130
- throw new errorWrapper_1.Error(0, "ERROR", `OrderDish with id ${args.orderDishId} not found`);
131
- if (!dish.dish)
132
- throw new errorWrapper_1.Error(0, "ERROR", `Dish in OrderDish with id ${args.orderDishId} not found`);
133
- await Order.setCount(order.id, dish, args.amount);
134
- await Order.countCart(order);
135
- let fullOrder = await Order.populate(order.id);
136
- getEmitter_1.default().emit("http-api:before-response-order-set-dish-amount", fullOrder);
137
- return fullOrder;
138
- },
139
- },
140
- orderSetDishComment: {
141
- def: "orderSetDishComment(id: String, orderDishId: Int, comment: String): Order",
142
- fn: async function (parent, args, context) {
143
- let order;
144
- const data = args;
145
- const orderId = data.orderId;
146
- const comment = data.comment || "";
147
- const dishId = data.dishId;
148
- if (!dishId) {
149
- throw new errorWrapper_1.Error(0, "ERROR", "dishId is required");
150
- }
151
- order = await Order.findOne(orderId);
152
- if (!order) {
153
- sails.log.error("GQL > orderSetDishComment resolver error: ", `order with id ${args.orderId} has problem. Trying make new cart.`);
154
- order = await getNewCart(args.orderId);
155
- }
156
- if (order.paid || order.state === "ORDER") {
157
- order = await getNewCart();
158
- }
159
- const dish = await OrderDish.findOne({ id: dishId }).populate("dish");
160
- if (!dish) {
161
- throw new errorWrapper_1.Error(0, "ERROR", `Dish with id ${dishId} not found`);
162
- }
163
- await order.setComment(dish, comment);
164
- await Order.countCart(order);
165
- let fullOrder = await Order.populate(order.id);
166
- getEmitter_1.default().emit("http-api:before-response-order-set-dish-comment", fullOrder);
167
- return fullOrder;
168
- },
169
- },
170
- orderUpdate: {
171
- def: '"""Experimental! allowed only for trifleFrom """ orderUpdate(order: Json): Order',
172
- fn: async function (parent, args, context) {
173
- let order = args.order;
174
- if (!order.id)
175
- throw "order.id field is required";
176
- await Order.update({ id: order.id }, { trifleFrom: order.trifleFrom });
177
- await Order.populate(order.id);
178
- let fullOrder = await Order.populate(order.id);
179
- getEmitter_1.default().emit("http-api:before-response-order-update", fullOrder);
180
- return fullOrder;
181
- },
182
- },
183
- },
184
- };
185
- // Generate new cart
186
- async function getNewCart(orderId) {
187
- let order;
188
- let initOrder = {};
189
- // Pass oredrId from frontend
190
- if (orderId)
191
- initOrder["id"] = orderId;
192
- getEmitter_1.default().emit("http-api:init-newcart", initOrder);
193
- order = await Order.create(initOrder).fetch();
194
- await getEmitter_1.default().emit("http-api:create-newcart", order);
195
- return order;
196
- }