@chevre/domain 21.2.0-alpha.10 → 21.2.0-alpha.100

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.
Files changed (235) hide show
  1. package/example/src/chevre/aggregation/aggregateSystem.ts +58 -31
  2. package/example/src/chevre/createManyEventsIfNotExist.ts +4 -1
  3. package/example/src/chevre/deleteTasksByName.ts +10 -2
  4. package/example/src/chevre/importEventsFromCOA.ts +3 -4
  5. package/example/src/chevre/migrateOrderAdditionalProperties.ts +85 -0
  6. package/example/src/chevre/processPay.ts +5 -1
  7. package/example/src/chevre/processReserve.ts +4 -1
  8. package/example/src/chevre/saveTasks.ts +13 -10
  9. package/example/src/chevre/searchAbortedTasks.ts +36 -0
  10. package/example/src/chevre/searchActions.ts +33 -0
  11. package/example/src/chevre/searchReservationNumbersByOrderNumbers.ts +37 -1
  12. package/example/src/chevre/searchSendEmailActions.ts +44 -0
  13. package/example/src/chevre/task/executeTasks.ts +26 -0
  14. package/example/src/chevre/transaction/findCreditCard.ts +1 -1
  15. package/example/src/chevre/transaction/orderMembershipService.ts +1 -1
  16. package/example/src/chevre/transaction/processReturnOrder.ts +40 -0
  17. package/example/src/chevre/transaction/startExportTasks.ts +20 -0
  18. package/example/src/chevre/updateTransaction.ts +1 -1
  19. package/example/src/playOnMoment.ts +24 -0
  20. package/lib/chevre/credentials.d.ts +1 -0
  21. package/lib/chevre/credentials.js +2 -1
  22. package/lib/chevre/eventEmitter/assetTransaction.d.ts +21 -0
  23. package/lib/chevre/eventEmitter/assetTransaction.js +25 -0
  24. package/lib/chevre/eventEmitter/task.d.ts +18 -0
  25. package/lib/chevre/eventEmitter/task.js +25 -0
  26. package/lib/chevre/eventEmitter/transaction.d.ts +21 -0
  27. package/lib/chevre/eventEmitter/transaction.js +25 -0
  28. package/lib/chevre/eventEmitter.d.ts +4 -0
  29. package/lib/chevre/eventEmitter.js +9 -0
  30. package/lib/chevre/index.d.ts +3 -2
  31. package/lib/chevre/index.js +5 -3
  32. package/lib/chevre/repo/accountTransaction.d.ts +3 -11
  33. package/lib/chevre/repo/accountTransaction.js +1 -54
  34. package/lib/chevre/repo/action.d.ts +29 -1
  35. package/lib/chevre/repo/action.js +98 -55
  36. package/lib/chevre/repo/assetTransaction.d.ts +25 -9
  37. package/lib/chevre/repo/assetTransaction.js +256 -85
  38. package/lib/chevre/repo/comment.d.ts +4 -1
  39. package/lib/chevre/repo/comment.js +20 -5
  40. package/lib/chevre/repo/confirmationNumber.d.ts +0 -1
  41. package/lib/chevre/repo/confirmationNumber.js +3 -15
  42. package/lib/chevre/repo/creativeWork.d.ts +1 -3
  43. package/lib/chevre/repo/emailMessage.d.ts +1 -27
  44. package/lib/chevre/repo/event.d.ts +5 -1
  45. package/lib/chevre/repo/merchantReturnPolicy.d.ts +1 -3
  46. package/lib/chevre/repo/mongoose/schemas/account.d.ts +4 -2
  47. package/lib/chevre/repo/mongoose/schemas/accountTitle.d.ts +29 -3
  48. package/lib/chevre/repo/mongoose/schemas/accountTransaction.d.ts +31 -3
  49. package/lib/chevre/repo/mongoose/schemas/accountTransaction.js +1 -1
  50. package/lib/chevre/repo/mongoose/schemas/accountingReport.d.ts +13 -3
  51. package/lib/chevre/repo/mongoose/schemas/action.d.ts +43 -3
  52. package/lib/chevre/repo/mongoose/schemas/action.js +19 -1
  53. package/lib/chevre/repo/mongoose/schemas/additionalProperty.d.ts +17 -3
  54. package/lib/chevre/repo/mongoose/schemas/aggregation.d.ts +4 -2
  55. package/lib/chevre/repo/mongoose/schemas/assetTransaction.d.ts +44 -3
  56. package/lib/chevre/repo/mongoose/schemas/assetTransaction.js +32 -19
  57. package/lib/chevre/repo/mongoose/schemas/authorization.d.ts +19 -3
  58. package/lib/chevre/repo/mongoose/schemas/authorization.js +1 -1
  59. package/lib/chevre/repo/mongoose/schemas/categoryCode.d.ts +25 -3
  60. package/lib/chevre/repo/mongoose/schemas/comments.d.ts +27 -3
  61. package/lib/chevre/repo/mongoose/schemas/comments.js +1 -1
  62. package/lib/chevre/repo/mongoose/schemas/creativeWork.d.ts +43 -3
  63. package/lib/chevre/repo/mongoose/schemas/customer.d.ts +25 -3
  64. package/lib/chevre/repo/mongoose/schemas/emailMessages.d.ts +21 -3
  65. package/lib/chevre/repo/mongoose/schemas/event.d.ts +71 -3
  66. package/lib/chevre/repo/mongoose/schemas/member.d.ts +13 -3
  67. package/lib/chevre/repo/mongoose/schemas/merchantReturnPolicy.d.ts +21 -3
  68. package/lib/chevre/repo/mongoose/schemas/offer.d.ts +65 -3
  69. package/lib/chevre/repo/mongoose/schemas/offerCatalog.d.ts +27 -3
  70. package/lib/chevre/repo/mongoose/schemas/offerItemCondition.d.ts +74 -0
  71. package/lib/chevre/repo/mongoose/schemas/offerItemCondition.js +45 -0
  72. package/lib/chevre/repo/mongoose/schemas/order.d.ts +51 -3
  73. package/lib/chevre/repo/mongoose/schemas/order.js +1 -1
  74. package/lib/chevre/repo/mongoose/schemas/ownershipInfo.d.ts +25 -3
  75. package/lib/chevre/repo/mongoose/schemas/ownershipInfo.js +1 -1
  76. package/lib/chevre/repo/mongoose/schemas/place.d.ts +49 -3
  77. package/lib/chevre/repo/mongoose/schemas/priceSpecification.d.ts +29 -3
  78. package/lib/chevre/repo/mongoose/schemas/product.d.ts +31 -3
  79. package/lib/chevre/repo/mongoose/schemas/project.d.ts +23 -3
  80. package/lib/chevre/repo/mongoose/schemas/reservation.d.ts +63 -5
  81. package/lib/chevre/repo/mongoose/schemas/reservation.js +1 -1
  82. package/lib/chevre/repo/mongoose/schemas/role.d.ts +11 -3
  83. package/lib/chevre/repo/mongoose/schemas/seller.d.ts +31 -3
  84. package/lib/chevre/repo/mongoose/schemas/seller.js +6 -0
  85. package/lib/chevre/repo/mongoose/schemas/serviceOutput.d.ts +11 -3
  86. package/lib/chevre/repo/mongoose/schemas/serviceOutput.js +1 -1
  87. package/lib/chevre/repo/mongoose/schemas/task.d.ts +30 -3
  88. package/lib/chevre/repo/mongoose/schemas/task.js +2 -1
  89. package/lib/chevre/repo/mongoose/schemas/telemetry.d.ts +21 -3
  90. package/lib/chevre/repo/mongoose/schemas/transaction.d.ts +40 -3
  91. package/lib/chevre/repo/mongoose/schemas/transaction.js +2 -1
  92. package/lib/chevre/repo/mongoose/schemas/trip.d.ts +11 -3
  93. package/lib/chevre/repo/offerItemCondition.d.ts +22 -0
  94. package/lib/chevre/repo/offerItemCondition.js +120 -0
  95. package/lib/chevre/repo/order.d.ts +55 -3
  96. package/lib/chevre/repo/order.js +56 -5
  97. package/lib/chevre/repo/reservation.d.ts +12 -4
  98. package/lib/chevre/repo/reservation.js +16 -44
  99. package/lib/chevre/repo/seller.js +19 -19
  100. package/lib/chevre/repo/task.d.ts +42 -2
  101. package/lib/chevre/repo/task.js +90 -9
  102. package/lib/chevre/repo/transaction.d.ts +23 -3
  103. package/lib/chevre/repo/transaction.js +174 -54
  104. package/lib/chevre/repository.d.ts +5 -2
  105. package/lib/chevre/repository.js +8 -4
  106. package/lib/chevre/service/aggregation/system.d.ts +67 -22
  107. package/lib/chevre/service/aggregation/system.js +101 -89
  108. package/lib/chevre/service/assetTransaction/cancelReservation.js +1 -28
  109. package/lib/chevre/service/assetTransaction/moneyTransfer.js +1 -23
  110. package/lib/chevre/service/assetTransaction/pay/potentialActions.js +17 -1
  111. package/lib/chevre/service/assetTransaction/pay.d.ts +5 -1
  112. package/lib/chevre/service/assetTransaction/pay.js +18 -32
  113. package/lib/chevre/service/assetTransaction/refund.js +1 -23
  114. package/lib/chevre/service/assetTransaction/registerService.js +1 -25
  115. package/lib/chevre/service/assetTransaction/reserve/factory.d.ts +15 -5
  116. package/lib/chevre/service/assetTransaction/reserve/factory.js +122 -58
  117. package/lib/chevre/service/assetTransaction/reserve.d.ts +10 -1
  118. package/lib/chevre/service/assetTransaction/reserve.js +85 -69
  119. package/lib/chevre/service/assetTransaction.d.ts +6 -2
  120. package/lib/chevre/service/assetTransaction.js +9 -5
  121. package/lib/chevre/service/event.js +3 -1
  122. package/lib/chevre/service/notification/factory.js +2 -2
  123. package/lib/chevre/service/notification.d.ts +3 -1
  124. package/lib/chevre/service/notification.js +41 -7
  125. package/lib/chevre/service/offer/event/authorize.d.ts +3 -0
  126. package/lib/chevre/service/offer/event/authorize.js +8 -2
  127. package/lib/chevre/service/offer/event/factory.d.ts +3 -0
  128. package/lib/chevre/service/offer/event/factory.js +16 -5
  129. package/lib/chevre/service/offer/event/voidTransaction.d.ts +2 -0
  130. package/lib/chevre/service/offer/event/voidTransaction.js +17 -1
  131. package/lib/chevre/service/offer.js +1 -1
  132. package/lib/chevre/service/order/deleteOrder.d.ts +3 -1
  133. package/lib/chevre/service/order/deleteOrder.js +8 -8
  134. package/lib/chevre/service/order/onOrderStatusChanged/factory.d.ts +5 -2
  135. package/lib/chevre/service/order/onOrderStatusChanged/factory.js +41 -81
  136. package/lib/chevre/service/order/onOrderStatusChanged.js +1 -3
  137. package/lib/chevre/service/order/onOrderUpdated.d.ts +16 -0
  138. package/lib/chevre/service/order/onOrderUpdated.js +22 -0
  139. package/lib/chevre/service/order/placeOrder.d.ts +1 -0
  140. package/lib/chevre/service/order/placeOrder.js +41 -24
  141. package/lib/chevre/service/order/returnOrder.d.ts +1 -0
  142. package/lib/chevre/service/order/returnOrder.js +7 -12
  143. package/lib/chevre/service/order/sendOrder.d.ts +1 -0
  144. package/lib/chevre/service/order/sendOrder.js +7 -10
  145. package/lib/chevre/service/order.d.ts +2 -1
  146. package/lib/chevre/service/order.js +3 -1
  147. package/lib/chevre/service/payment/any/onPaid.js +1 -1
  148. package/lib/chevre/service/payment/any/onRefund.js +1 -1
  149. package/lib/chevre/service/payment/any.d.ts +9 -5
  150. package/lib/chevre/service/payment/any.js +80 -18
  151. package/lib/chevre/service/payment/creditCard.d.ts +1 -1
  152. package/lib/chevre/service/payment/creditCard.js +21 -15
  153. package/lib/chevre/service/payment/movieTicket/checkByIdentifier.d.ts +7 -6
  154. package/lib/chevre/service/payment/movieTicket/validation.d.ts +6 -6
  155. package/lib/chevre/service/payment/movieTicket/validation.js +54 -31
  156. package/lib/chevre/service/payment/movieTicket.d.ts +2 -2
  157. package/lib/chevre/service/payment/movieTicket.js +5 -4
  158. package/lib/chevre/service/product.js +1 -5
  159. package/lib/chevre/service/report/telemetry.d.ts +0 -11
  160. package/lib/chevre/service/report/telemetry.js +21 -24
  161. package/lib/chevre/service/reserve/cancelReservation.d.ts +5 -3
  162. package/lib/chevre/service/reserve/cancelReservation.js +147 -139
  163. package/lib/chevre/service/reserve/checkInReservation.d.ts +9 -4
  164. package/lib/chevre/service/reserve/checkInReservation.js +77 -3
  165. package/lib/chevre/service/reserve/confirmReservation.d.ts +7 -4
  166. package/lib/chevre/service/reserve/confirmReservation.js +125 -58
  167. package/lib/chevre/service/reserve/factory.d.ts +1 -1
  168. package/lib/chevre/service/reserve/potentialActions/onReservationCanceled.d.ts +17 -5
  169. package/lib/chevre/service/reserve/potentialActions/onReservationCanceled.js +26 -24
  170. package/lib/chevre/service/reserve/potentialActions/onReservationCheckedIn.js +2 -3
  171. package/lib/chevre/service/reserve/potentialActions/onReservationConfirmed.js +2 -31
  172. package/lib/chevre/service/reserve/potentialActions/onReservationUsed.js +2 -3
  173. package/lib/chevre/service/reserve/useReservation.d.ts +7 -3
  174. package/lib/chevre/service/reserve/useReservation.js +61 -71
  175. package/lib/chevre/service/reserve/verifyToken4reservation.d.ts +15 -0
  176. package/lib/chevre/service/reserve/verifyToken4reservation.js +56 -0
  177. package/lib/chevre/service/reserve.d.ts +3 -2
  178. package/lib/chevre/service/reserve.js +4 -2
  179. package/lib/chevre/service/task/cancelPendingReservation.js +5 -1
  180. package/lib/chevre/service/task/confirmRegisterServiceTransaction.js +1 -1
  181. package/lib/chevre/service/task/deleteTransaction.js +10 -8
  182. package/lib/chevre/service/task/importOffersFromCOA.js +4 -0
  183. package/lib/chevre/service/task/onAuthorizationCreated.d.ts +7 -0
  184. package/lib/chevre/service/task/onAuthorizationCreated.js +108 -0
  185. package/lib/chevre/service/task/placeOrder.js +1 -1
  186. package/lib/chevre/service/task/reserve.js +10 -7
  187. package/lib/chevre/service/task/returnOrder.js +1 -1
  188. package/lib/chevre/service/task/returnPayTransaction.js +2 -12
  189. package/lib/chevre/service/task/sendOrder.js +1 -1
  190. package/lib/chevre/service/task/useReservation.d.ts +7 -0
  191. package/lib/chevre/service/task/useReservation.js +36 -0
  192. package/lib/chevre/service/task/voidReserveTransaction.js +3 -1
  193. package/lib/chevre/service/task.d.ts +9 -0
  194. package/lib/chevre/service/task.js +43 -4
  195. package/lib/chevre/service/transaction/deleteTransaction.d.ts +21 -0
  196. package/lib/chevre/service/transaction/deleteTransaction.js +232 -0
  197. package/lib/chevre/service/transaction/moneyTransfer/exportTasks/factory.js +11 -1
  198. package/lib/chevre/service/transaction/moneyTransfer/factory.js +3 -1
  199. package/lib/chevre/service/transaction/moneyTransfer/potentialActions.d.ts +1 -0
  200. package/lib/chevre/service/transaction/moneyTransfer/potentialActions.js +1 -1
  201. package/lib/chevre/service/transaction/moneyTransfer.js +9 -12
  202. package/lib/chevre/service/transaction/orderProgramMembership.js +6 -2
  203. package/lib/chevre/service/transaction/placeOrder/exportTasks/factory.js +42 -30
  204. package/lib/chevre/service/transaction/placeOrder.js +1 -5
  205. package/lib/chevre/service/transaction/placeOrderInProgress/factory.js +1 -1
  206. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/moneyTransfer.d.ts +1 -0
  207. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/moneyTransfer.js +1 -1
  208. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/registerService.d.ts +1 -0
  209. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/registerService.js +1 -1
  210. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions.d.ts +1 -0
  211. package/lib/chevre/service/transaction/placeOrderInProgress/result/acceptedOffers.d.ts +3 -0
  212. package/lib/chevre/service/transaction/placeOrderInProgress/result/acceptedOffers.js +7 -3
  213. package/lib/chevre/service/transaction/placeOrderInProgress/result.d.ts +1 -0
  214. package/lib/chevre/service/transaction/placeOrderInProgress/result.js +2 -2
  215. package/lib/chevre/service/transaction/placeOrderInProgress/validation/validateMovieTicket.d.ts +1 -1
  216. package/lib/chevre/service/transaction/placeOrderInProgress/validation/validateMovieTicket.js +2 -2
  217. package/lib/chevre/service/transaction/placeOrderInProgress/validation.d.ts +2 -1
  218. package/lib/chevre/service/transaction/placeOrderInProgress/validation.js +23 -17
  219. package/lib/chevre/service/transaction/placeOrderInProgress.d.ts +0 -3
  220. package/lib/chevre/service/transaction/placeOrderInProgress.js +22 -11
  221. package/lib/chevre/service/transaction/returnOrder/exportTasks/factory.js +10 -1
  222. package/lib/chevre/service/transaction/returnOrder/potentialActions/returnPaymentMethod.js +25 -17
  223. package/lib/chevre/service/transaction/returnOrder.d.ts +4 -0
  224. package/lib/chevre/service/transaction/returnOrder.js +225 -35
  225. package/lib/chevre/service/transaction.d.ts +8 -13
  226. package/lib/chevre/service/transaction.js +12 -145
  227. package/lib/chevre/settings.d.ts +4 -1
  228. package/lib/chevre/settings.js +15 -5
  229. package/package.json +5 -5
  230. package/example/src/chevre/migrateMoneyTransferPendingTransactionIdentifier.ts +0 -96
  231. package/example/src/chevre/migrateMovieAdditionalProperties.ts +0 -98
  232. package/lib/chevre/service/task/deleteAssetTransaction.d.ts +0 -12
  233. package/lib/chevre/service/task/deleteAssetTransaction.js +0 -65
  234. package/lib/chevre/service/task/deleteOrder.d.ts +0 -6
  235. package/lib/chevre/service/task/deleteOrder.js +0 -35
@@ -13,6 +13,7 @@ exports.MongoRepository = void 0;
13
13
  const moment = require("moment");
14
14
  const factory = require("../factory");
15
15
  const transaction_1 = require("./mongoose/schemas/transaction");
16
+ const transaction_2 = require("../eventEmitter/transaction");
16
17
  /**
17
18
  * 取引リポジトリ
18
19
  */
@@ -263,7 +264,9 @@ class MongoRepository {
263
264
  else {
264
265
  expires = params.expires;
265
266
  }
266
- return this.transactionModel.create(Object.assign(Object.assign({}, params), { typeOf: params.typeOf, status: factory.transactionStatusType.InProgress, startDate, endDate: undefined, expires, tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported }))
267
+ return this.transactionModel.create(Object.assign(Object.assign({}, params), { typeOf: params.typeOf, status: factory.transactionStatusType.InProgress, startDate, endDate: undefined, expires, tasksExportAction: {
268
+ actionStatus: factory.actionStatusType.PotentialActionStatus
269
+ }, tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported }))
267
270
  .then((doc) => doc.toObject());
268
271
  });
269
272
  }
@@ -272,10 +275,29 @@ class MongoRepository {
272
275
  */
273
276
  findById(params) {
274
277
  return __awaiter(this, void 0, void 0, function* () {
278
+ let projection = {};
279
+ if (Array.isArray(params.inclusion) && params.inclusion.length > 0) {
280
+ params.inclusion.forEach((field) => {
281
+ projection[field] = 1;
282
+ });
283
+ }
284
+ else {
285
+ projection = {
286
+ __v: 0,
287
+ createdAt: 0,
288
+ updatedAt: 0
289
+ };
290
+ if (Array.isArray(params.exclusion) && params.exclusion.length > 0) {
291
+ params.exclusion.forEach((field) => {
292
+ projection[field] = 0;
293
+ });
294
+ }
295
+ }
275
296
  const doc = yield this.transactionModel.findOne({
276
297
  _id: { $eq: params.id },
277
298
  typeOf: { $eq: params.typeOf }
278
299
  })
300
+ .select(projection)
279
301
  .exec();
280
302
  if (doc === null) {
281
303
  throw new factory.errors.NotFound(this.transactionModel.modelName);
@@ -291,7 +313,9 @@ class MongoRepository {
291
313
  const doc = yield this.transactionModel.findOne({
292
314
  _id: { $eq: params.id },
293
315
  typeOf: { $eq: params.typeOf },
294
- status: { $eq: factory.transactionStatusType.InProgress }
316
+ status: { $eq: factory.transactionStatusType.InProgress },
317
+ // expiresを条件に追加(2023-05-12~),
318
+ expires: { $gt: new Date() }
295
319
  })
296
320
  .exec();
297
321
  if (doc === null) {
@@ -343,9 +367,9 @@ class MongoRepository {
343
367
  var _a, _b;
344
368
  return __awaiter(this, void 0, void 0, function* () {
345
369
  const doc = yield this.transactionModel.findOneAndUpdate({
346
- _id: params.id,
347
- typeOf: params.typeOf,
348
- status: factory.transactionStatusType.InProgress
370
+ _id: { $eq: params.id },
371
+ typeOf: { $eq: params.typeOf },
372
+ status: { $eq: factory.transactionStatusType.InProgress }
349
373
  }, {
350
374
  $set: Object.assign(Object.assign({ 'agent.id': params.agent.id }, (typeof params.agent.name === 'string') ? { 'agent.name': params.agent.name } : undefined), (typeof ((_b = (_a = params.object) === null || _a === void 0 ? void 0 : _a.customer) === null || _b === void 0 ? void 0 : _b.typeOf) === 'string') ? { 'object.customer': params.object.customer } : undefined)
351
375
  }, {
@@ -363,9 +387,9 @@ class MongoRepository {
363
387
  updateExpires(params) {
364
388
  return __awaiter(this, void 0, void 0, function* () {
365
389
  const doc = yield this.transactionModel.findOneAndUpdate({
366
- _id: params.id,
367
- typeOf: params.typeOf,
368
- status: factory.transactionStatusType.InProgress
390
+ _id: { $eq: params.id },
391
+ typeOf: { $eq: params.typeOf },
392
+ status: { $eq: factory.transactionStatusType.InProgress }
369
393
  }, {
370
394
  $set: {
371
395
  expires: params.expires
@@ -387,9 +411,9 @@ class MongoRepository {
387
411
  var _a;
388
412
  return __awaiter(this, void 0, void 0, function* () {
389
413
  const doc = yield this.transactionModel.findOneAndUpdate({
390
- _id: params.id,
391
- typeOf: params.typeOf,
392
- status: factory.transactionStatusType.InProgress
414
+ _id: { $eq: params.id },
415
+ typeOf: { $eq: params.typeOf },
416
+ status: { $eq: factory.transactionStatusType.InProgress }
393
417
  }, {
394
418
  $set: Object.assign({}, (typeof ((_a = params.object) === null || _a === void 0 ? void 0 : _a.name) === 'string') ? { 'object.name': params.object.name } : undefined)
395
419
  }, {
@@ -407,9 +431,9 @@ class MongoRepository {
407
431
  confirm(params) {
408
432
  return __awaiter(this, void 0, void 0, function* () {
409
433
  const doc = yield this.transactionModel.findOneAndUpdate({
410
- _id: params.id,
411
- typeOf: params.typeOf,
412
- status: factory.transactionStatusType.InProgress
434
+ _id: { $eq: params.id },
435
+ typeOf: { $eq: params.typeOf },
436
+ status: { $eq: factory.transactionStatusType.InProgress }
413
437
  }, {
414
438
  status: factory.transactionStatusType.Confirmed,
415
439
  endDate: new Date(),
@@ -424,43 +448,49 @@ class MongoRepository {
424
448
  // NotFoundであれば取引状態確認
425
449
  if (doc === null) {
426
450
  const transaction = yield this.findById({ typeOf: params.typeOf, id: params.id });
427
- // tslint:disable-next-line:no-single-line-block-comment
428
- /* istanbul ignore next */
429
451
  if (transaction.status === factory.transactionStatusType.Confirmed) {
430
- // すでに確定済の場合
431
- return;
432
- // tslint:disable-next-line:no-single-line-block-comment
433
- /* istanbul ignore next */
452
+ // すでに確定済の場合スルー
434
453
  }
435
454
  else if (transaction.status === factory.transactionStatusType.Expired) {
436
455
  throw new factory.errors.Argument('Transaction id', 'Already expired');
437
- // tslint:disable-next-line:no-single-line-block-comment
438
- /* istanbul ignore next */
439
456
  }
440
457
  else if (transaction.status === factory.transactionStatusType.Canceled) {
441
458
  throw new factory.errors.Argument('Transaction id', 'Already canceled');
442
- // tslint:disable-next-line:no-single-line-block-comment
443
- /* istanbul ignore next */
444
459
  }
445
460
  else {
446
461
  throw new factory.errors.NotFound(this.transactionModel.modelName);
447
462
  }
448
463
  }
449
- // return doc.toObject();
464
+ transaction_2.transactionEventEmitter.emitTransactionStatusChanged({
465
+ id: params.id,
466
+ typeOf: params.typeOf,
467
+ status: factory.transactionStatusType.Confirmed
468
+ });
450
469
  });
451
470
  }
452
471
  /**
453
472
  * タスク未エクスポートの取引をひとつ取得してエクスポートを開始する
454
473
  */
455
474
  startExportTasks(params) {
475
+ var _a;
456
476
  return __awaiter(this, void 0, void 0, function* () {
457
- return this.transactionModel.findOneAndUpdate(Object.assign(Object.assign(Object.assign({}, (params.project !== undefined)
458
- ? {
459
- 'project.id': {
460
- $eq: params.project.id
461
- }
462
- } : undefined), (params.typeOf !== undefined && params.typeOf !== null && Array.isArray(params.typeOf.$in))
463
- ? { typeOf: { $in: params.typeOf.$in } } : undefined), { status: params.status, tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported }), { tasksExportationStatus: factory.transactionTasksExportationStatus.Exporting }, { new: true })
477
+ switch (params.status) {
478
+ case factory.transactionStatusType.InProgress:
479
+ throw new factory.errors.NotImplemented(`status "${params.status}" not implemented on startExportTasks`);
480
+ default:
481
+ // no op
482
+ }
483
+ const typeOfIn = (_a = params.typeOf) === null || _a === void 0 ? void 0 : _a.$in;
484
+ return this.transactionModel.findOneAndUpdate(Object.assign(Object.assign(Object.assign(Object.assign({}, (params.project !== undefined) ? { 'project.id': { $eq: params.project.id } } : undefined), (Array.isArray(typeOfIn)) ? { typeOf: { $in: typeOfIn } } : undefined), { status: { $eq: params.status }, tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Unexported } }), (typeof params.id === 'string') ? { _id: { $eq: params.id } } : undefined), {
485
+ 'tasksExportAction.actionStatus': factory.actionStatusType.ActiveActionStatus,
486
+ 'tasksExportAction.agent': { name: params.tasksExportAction.agent.name },
487
+ 'tasksExportAction.startDate': new Date(),
488
+ tasksExportationStatus: factory.transactionTasksExportationStatus.Exporting
489
+ }, { new: true })
490
+ .select({
491
+ _id: 1,
492
+ typeOf: 1
493
+ })
464
494
  .exec()
465
495
  // tslint:disable-next-line:no-null-keyword
466
496
  .then((doc) => (doc === null) ? null : doc.toObject());
@@ -473,17 +503,74 @@ class MongoRepository {
473
503
  */
474
504
  reexportTasks(params) {
475
505
  return __awaiter(this, void 0, void 0, function* () {
476
- yield this.transactionModel.updateMany({
477
- tasksExportationStatus: factory.transactionTasksExportationStatus.Exporting,
506
+ const reexportingTransactions = yield this.transactionModel.find({
507
+ tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Exporting },
478
508
  updatedAt: {
479
509
  $lt: moment()
480
510
  .add(-params.intervalInMinutes, 'minutes')
481
511
  .toDate()
482
512
  }
483
- }, {
484
- tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported
485
513
  })
514
+ .select({
515
+ _id: 1,
516
+ typeOf: 1,
517
+ status: 1
518
+ })
519
+ .setOptions({ maxTimeMS: 10000 })
486
520
  .exec();
521
+ if (reexportingTransactions.length > 0) {
522
+ for (const reexportingTransaction of reexportingTransactions) {
523
+ yield this.transactionModel.updateOne({
524
+ _id: { $eq: reexportingTransaction.id },
525
+ tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Exporting }
526
+ }, {
527
+ tasksExportAction: {
528
+ actionStatus: factory.actionStatusType.PotentialActionStatus
529
+ },
530
+ tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported
531
+ })
532
+ .exec();
533
+ transaction_2.transactionEventEmitter.emitTransactionStatusChanged({
534
+ id: reexportingTransaction.id,
535
+ typeOf: reexportingTransaction.typeOf,
536
+ status: reexportingTransaction.status
537
+ });
538
+ }
539
+ }
540
+ });
541
+ }
542
+ /**
543
+ * タスクエクスポートの遅延している取引について明示的にemitTransactionStatusChangedを実行する
544
+ */
545
+ exportTasks(params) {
546
+ return __awaiter(this, void 0, void 0, function* () {
547
+ const delayedTransactions = yield this.transactionModel.find({
548
+ status: { $in: params.status.$in },
549
+ tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Unexported },
550
+ endDate: {
551
+ $exists: true,
552
+ $lt: moment(params.now)
553
+ .add(-params.delayInSeconds, 'seconds')
554
+ .toDate()
555
+ }
556
+ })
557
+ .select({
558
+ _id: 1,
559
+ typeOf: 1,
560
+ status: 1
561
+ })
562
+ .setOptions({ maxTimeMS: 10000 })
563
+ .exec();
564
+ if (delayedTransactions.length > 0) {
565
+ delayedTransactions.forEach((delayedTransaction) => {
566
+ transaction_2.transactionEventEmitter.emitTransactionStatusChanged({
567
+ id: delayedTransaction.id,
568
+ typeOf: delayedTransaction.typeOf,
569
+ status: delayedTransaction.status
570
+ });
571
+ });
572
+ }
573
+ return delayedTransactions;
487
574
  });
488
575
  }
489
576
  /**
@@ -492,9 +579,15 @@ class MongoRepository {
492
579
  */
493
580
  setTasksExportedById(params) {
494
581
  return __awaiter(this, void 0, void 0, function* () {
495
- yield this.transactionModel.findByIdAndUpdate(params.id, {
582
+ const endDate = new Date();
583
+ yield this.transactionModel.updateOne({
584
+ _id: { $eq: params.id },
585
+ tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Exporting }
586
+ }, {
496
587
  tasksExportationStatus: factory.transactionTasksExportationStatus.Exported,
497
- tasksExportedAt: new Date()
588
+ tasksExportedAt: endDate,
589
+ 'tasksExportAction.actionStatus': factory.actionStatusType.CompletedActionStatus,
590
+ 'tasksExportAction.endDate': endDate
498
591
  })
499
592
  .exec();
500
593
  });
@@ -504,15 +597,36 @@ class MongoRepository {
504
597
  */
505
598
  makeExpired(params) {
506
599
  return __awaiter(this, void 0, void 0, function* () {
507
- // ステータスと期限を見て更新
508
- yield this.transactionModel.updateMany({
509
- status: factory.transactionStatusType.InProgress,
510
- expires: { $lt: params.expires }
511
- }, {
512
- status: factory.transactionStatusType.Expired,
513
- endDate: new Date()
600
+ // IDをemitしたいのでまずリスト検索(2023-04-27~)
601
+ const expiringTransactions = yield this.transactionModel.find({
602
+ status: { $eq: factory.transactionStatusType.InProgress },
603
+ expires: { $lt: params.expires.$lt }
514
604
  })
605
+ .select({
606
+ _id: 1,
607
+ typeOf: 1
608
+ })
609
+ .setOptions({ maxTimeMS: 10000 })
515
610
  .exec();
611
+ if (expiringTransactions.length > 0) {
612
+ // ステータスと期限を見て更新
613
+ yield this.transactionModel.updateMany({
614
+ _id: { $in: expiringTransactions.map((t) => t.id) },
615
+ status: { $eq: factory.transactionStatusType.InProgress },
616
+ expires: { $lt: params.expires.$lt }
617
+ }, {
618
+ status: factory.transactionStatusType.Expired,
619
+ endDate: new Date()
620
+ })
621
+ .exec();
622
+ expiringTransactions.forEach((expiringTransaction) => {
623
+ transaction_2.transactionEventEmitter.emitTransactionStatusChanged({
624
+ id: expiringTransaction.id,
625
+ typeOf: expiringTransaction.typeOf,
626
+ status: factory.transactionStatusType.Expired
627
+ });
628
+ });
629
+ }
516
630
  });
517
631
  }
518
632
  /**
@@ -537,11 +651,8 @@ class MongoRepository {
537
651
  // NotFoundであれば取引状態確認
538
652
  if (doc === null) {
539
653
  const transaction = yield this.findById(params);
540
- // tslint:disable-next-line:no-single-line-block-comment
541
- /* istanbul ignore next */
542
654
  if (transaction.status === factory.transactionStatusType.Canceled) {
543
- // すでに中止済の場合
544
- return;
655
+ // すでに中止済の場合スルー
545
656
  }
546
657
  else if (transaction.status === factory.transactionStatusType.Expired) {
547
658
  throw new factory.errors.Argument('Transaction id', 'Transaction already expired');
@@ -553,7 +664,11 @@ class MongoRepository {
553
664
  throw new factory.errors.NotFound(this.transactionModel.modelName);
554
665
  }
555
666
  }
556
- // return doc.toObject();
667
+ transaction_2.transactionEventEmitter.emitTransactionStatusChanged({
668
+ id: params.id,
669
+ typeOf: params.typeOf,
670
+ status: factory.transactionStatusType.Canceled
671
+ });
557
672
  });
558
673
  }
559
674
  count(params) {
@@ -611,9 +726,12 @@ class MongoRepository {
611
726
  /**
612
727
  * 特定の取引を更新する(汎用)
613
728
  */
614
- findByIdAndUpdate(params) {
729
+ findByIdAndUpdateInProgress(params) {
615
730
  return __awaiter(this, void 0, void 0, function* () {
616
- yield this.transactionModel.findOneAndUpdate({ _id: params.id }, params.update, {
731
+ yield this.transactionModel.findOneAndUpdate({
732
+ _id: { $eq: params.id },
733
+ status: { $eq: factory.transactionStatusType.InProgress }
734
+ }, params.update, {
617
735
  // new: true,
618
736
  projection: { _id: 1 }
619
737
  })
@@ -628,7 +746,8 @@ class MongoRepository {
628
746
  saveOrderNumberIfNotExist(params) {
629
747
  return __awaiter(this, void 0, void 0, function* () {
630
748
  yield this.transactionModel.updateOne({
631
- _id: params.id,
749
+ _id: { $eq: params.id },
750
+ status: { $eq: factory.transactionStatusType.InProgress },
632
751
  'object.orderNumber': { $exists: false }
633
752
  }, { 'object.orderNumber': params.orderNumber })
634
753
  .exec();
@@ -637,7 +756,8 @@ class MongoRepository {
637
756
  saveConfirmationNumberIfNotExist(params) {
638
757
  return __awaiter(this, void 0, void 0, function* () {
639
758
  yield this.transactionModel.updateOne({
640
- _id: params.id,
759
+ _id: { $eq: params.id },
760
+ status: { $eq: factory.transactionStatusType.InProgress },
641
761
  'object.confirmationNumber': { $exists: false }
642
762
  }, { 'object.confirmationNumber': params.confirmationNumber })
643
763
  .exec();
@@ -20,6 +20,7 @@ import { MongoRepository as MemberRepo } from './repo/member';
20
20
  import { MongoRepository as MerchantReturnPolicyRepo } from './repo/merchantReturnPolicy';
21
21
  import { MongoRepository as OfferRepo } from './repo/offer';
22
22
  import { MongoRepository as OfferCatalogRepo } from './repo/offerCatalog';
23
+ import { MongoRepository as OfferItemConditionRepo } from './repo/offerItemCondition';
23
24
  import { MongoRepository as OrderRepo } from './repo/order';
24
25
  import { MongoRepository as OwnershipInfoRepo } from './repo/ownershipInfo';
25
26
  import { MongoRepository as PermitRepo } from './repo/permit';
@@ -123,10 +124,12 @@ export declare class Member extends MemberRepo {
123
124
  */
124
125
  export declare class MerchantReturnPolicy extends MerchantReturnPolicyRepo {
125
126
  }
126
- export declare class Offer extends OfferRepo {
127
- }
128
127
  export declare class OfferCatalog extends OfferCatalogRepo {
129
128
  }
129
+ export declare class OfferItemCondition extends OfferItemConditionRepo {
130
+ }
131
+ export declare class Offer extends OfferRepo {
132
+ }
130
133
  /**
131
134
  * 注文リポジトリ
132
135
  */
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.rateLimit = exports.Trip = exports.TransactionNumber = exports.Transaction = exports.Telemetry = exports.Task = exports.StockHolder = exports.ServiceOutputIdentifier = exports.ServiceOutput = exports.Seller = exports.Role = exports.Reservation = exports.Project = exports.Product = exports.PriceSpecification = exports.Place = exports.Permit = exports.Person = exports.paymentMethod = exports.OwnershipInfo = exports.OrderNumber = exports.Order = exports.OfferCatalog = exports.Offer = exports.MerchantReturnPolicy = exports.Member = exports.Event = exports.EmailMessage = exports.Customer = exports.CreativeWork = exports.ConfirmationNumber = exports.Comment = exports.Code = exports.CategoryCode = exports.AssetTransaction = exports.action = exports.Aggregation = exports.AdditionalProperty = exports.Action = exports.AccountTransaction = exports.AccountTitle = exports.AccountingReport = exports.Account = void 0;
3
+ exports.rateLimit = exports.Trip = exports.TransactionNumber = exports.Transaction = exports.Telemetry = exports.Task = exports.StockHolder = exports.ServiceOutputIdentifier = exports.ServiceOutput = exports.Seller = exports.Role = exports.Reservation = exports.Project = exports.Product = exports.PriceSpecification = exports.Place = exports.Permit = exports.Person = exports.paymentMethod = exports.OwnershipInfo = exports.OrderNumber = exports.Order = exports.Offer = exports.OfferItemCondition = exports.OfferCatalog = exports.MerchantReturnPolicy = exports.Member = exports.Event = exports.EmailMessage = exports.Customer = exports.CreativeWork = exports.ConfirmationNumber = exports.Comment = exports.Code = exports.CategoryCode = exports.AssetTransaction = exports.action = exports.Aggregation = exports.AdditionalProperty = exports.Action = exports.AccountTransaction = exports.AccountTitle = exports.AccountingReport = exports.Account = void 0;
4
4
  // tslint:disable:max-classes-per-file completed-docs
5
5
  /**
6
6
  * リポジトリ
@@ -24,6 +24,7 @@ const member_1 = require("./repo/member");
24
24
  const merchantReturnPolicy_1 = require("./repo/merchantReturnPolicy");
25
25
  const offer_1 = require("./repo/offer");
26
26
  const offerCatalog_1 = require("./repo/offerCatalog");
27
+ const offerItemCondition_1 = require("./repo/offerItemCondition");
27
28
  const order_1 = require("./repo/order");
28
29
  const ownershipInfo_1 = require("./repo/ownershipInfo");
29
30
  const permit_1 = require("./repo/permit");
@@ -147,12 +148,15 @@ exports.Member = Member;
147
148
  class MerchantReturnPolicy extends merchantReturnPolicy_1.MongoRepository {
148
149
  }
149
150
  exports.MerchantReturnPolicy = MerchantReturnPolicy;
150
- class Offer extends offer_1.MongoRepository {
151
- }
152
- exports.Offer = Offer;
153
151
  class OfferCatalog extends offerCatalog_1.MongoRepository {
154
152
  }
155
153
  exports.OfferCatalog = OfferCatalog;
154
+ class OfferItemCondition extends offerItemCondition_1.MongoRepository {
155
+ }
156
+ exports.OfferItemCondition = OfferItemCondition;
157
+ class Offer extends offer_1.MongoRepository {
158
+ }
159
+ exports.Offer = Offer;
156
160
  /**
157
161
  * 注文リポジトリ
158
162
  */
@@ -4,97 +4,142 @@ import { MongoRepository as AssetTransactionRepo } from '../../repo/assetTransac
4
4
  import { MongoRepository as EventRepo } from '../../repo/event';
5
5
  import { MongoRepository as TasKRepo } from '../../repo/task';
6
6
  import { MongoRepository as TransactionRepo } from '../../repo/transaction';
7
+ type AggregateDurationUnit = 'days' | 'hours';
7
8
  declare function aggregateEvent(params: {
8
- aggregationDays: number;
9
+ aggregateDurationUnit: AggregateDurationUnit;
10
+ aggregationCount: number;
9
11
  excludedProjectId?: string;
10
12
  }): (repos: {
11
13
  agregation: AggregationRepo;
12
14
  event: EventRepo;
13
- }) => Promise<void>;
15
+ }) => Promise<{
16
+ aggregationCount: number;
17
+ aggregateDuration: string;
18
+ }>;
14
19
  /**
15
20
  * 注文取引集計
16
21
  */
17
22
  declare function aggregatePlaceOrder(params: {
18
- aggregationDays: number;
23
+ aggregateDurationUnit: AggregateDurationUnit;
24
+ aggregationCount: number;
19
25
  excludedProjectId?: string;
20
26
  clientIds?: string[];
21
27
  }): (repos: {
22
28
  agregation: AggregationRepo;
23
29
  transaction: TransactionRepo;
24
- }) => Promise<void>;
30
+ }) => Promise<{
31
+ aggregationCount: number;
32
+ aggregateDuration: string;
33
+ }>;
25
34
  /**
26
35
  * 興行オファー承認アクション集計
27
36
  */
28
37
  declare function aggregateAuthorizeEventServiceOfferAction(params: {
29
- aggregationDays: number;
38
+ aggregateDurationUnit: AggregateDurationUnit;
39
+ aggregationCount: number;
30
40
  excludedProjectId?: string;
31
41
  }): (repos: {
32
42
  agregation: AggregationRepo;
33
43
  action: ActionRepo;
34
- }) => Promise<void>;
44
+ }) => Promise<{
45
+ aggregationCount: number;
46
+ aggregateDuration: string;
47
+ }>;
35
48
  /**
36
49
  * 決済承認アクション集計
37
50
  */
38
51
  declare function aggregateAuthorizePaymentAction(params: {
39
- aggregationDays: number;
52
+ aggregateDurationUnit: AggregateDurationUnit;
53
+ aggregationCount: number;
40
54
  excludedProjectId?: string;
41
55
  }): (repos: {
42
56
  agregation: AggregationRepo;
43
57
  action: ActionRepo;
44
- }) => Promise<void>;
58
+ }) => Promise<{
59
+ aggregationCount: number;
60
+ aggregateDuration: string;
61
+ }>;
45
62
  declare function aggregateAuthorizeOrderAction(params: {
46
- aggregationDays: number;
63
+ aggregateDurationUnit: AggregateDurationUnit;
64
+ aggregationCount: number;
47
65
  excludedProjectId?: string;
48
66
  }): (repos: {
49
67
  agregation: AggregationRepo;
50
68
  action: ActionRepo;
51
- }) => Promise<void>;
69
+ }) => Promise<{
70
+ aggregationCount: number;
71
+ aggregateDuration: string;
72
+ }>;
52
73
  /**
53
74
  * 使用アクション集計
54
75
  */
55
76
  declare function aggregateUseAction(params: {
56
- aggregationDays: number;
77
+ aggregateDurationUnit: AggregateDurationUnit;
78
+ aggregationCount: number;
57
79
  excludedProjectId?: string;
58
80
  }): (repos: {
59
81
  agregation: AggregationRepo;
60
82
  action: ActionRepo;
61
- }) => Promise<void>;
83
+ }) => Promise<{
84
+ aggregationCount: number;
85
+ aggregateDuration: string;
86
+ }>;
62
87
  declare function aggregateCheckMovieTicketAction(params: {
63
- aggregationDays: number;
88
+ aggregateDurationUnit: AggregateDurationUnit;
89
+ aggregationCount: number;
64
90
  excludedProjectId?: string;
65
91
  }): (repos: {
66
92
  agregation: AggregationRepo;
67
93
  action: ActionRepo;
68
- }) => Promise<void>;
94
+ }) => Promise<{
95
+ aggregationCount: number;
96
+ aggregateDuration: string;
97
+ }>;
69
98
  declare function aggregatePayMovieTicketAction(params: {
70
- aggregationDays: number;
99
+ aggregateDurationUnit: AggregateDurationUnit;
100
+ aggregationCount: number;
71
101
  excludedProjectId?: string;
72
102
  }): (repos: {
73
103
  agregation: AggregationRepo;
74
104
  action: ActionRepo;
75
- }) => Promise<void>;
105
+ }) => Promise<{
106
+ aggregationCount: number;
107
+ aggregateDuration: string;
108
+ }>;
76
109
  declare function aggregatePayTransaction(params: {
77
- aggregationDays: number;
110
+ aggregateDurationUnit: AggregateDurationUnit;
111
+ aggregationCount: number;
78
112
  excludedProjectId?: string;
79
113
  }): (repos: {
80
114
  agregation: AggregationRepo;
81
115
  assetTransaction: AssetTransactionRepo;
82
- }) => Promise<void>;
116
+ }) => Promise<{
117
+ aggregationCount: number;
118
+ aggregateDuration: string;
119
+ }>;
83
120
  /**
84
121
  * 予約集計
85
122
  */
86
123
  declare function aggregateReserveTransaction(params: {
87
- aggregationDays: number;
124
+ aggregateDurationUnit: AggregateDurationUnit;
125
+ aggregationCount: number;
88
126
  excludedProjectId?: string;
89
127
  }): (repos: {
90
128
  agregation: AggregationRepo;
91
129
  assetTransaction: AssetTransactionRepo;
92
- }) => Promise<void>;
130
+ }) => Promise<{
131
+ aggregationCount: number;
132
+ aggregateDuration: string;
133
+ }>;
93
134
  declare function aggregateTask(params: {
94
- aggregationDays: number;
135
+ aggregateDurationUnit: AggregateDurationUnit;
136
+ aggregationCount: number;
95
137
  excludedProjectId?: string;
96
138
  }): (repos: {
97
139
  agregation: AggregationRepo;
98
140
  task: TasKRepo;
99
- }) => Promise<void>;
141
+ }) => Promise<{
142
+ aggregationCount: number;
143
+ aggregateDuration: string;
144
+ }>;
100
145
  export { aggregateAuthorizeEventServiceOfferAction, aggregateAuthorizeOrderAction, aggregateAuthorizePaymentAction, aggregateCheckMovieTicketAction, aggregateEvent, aggregatePayMovieTicketAction, aggregatePayTransaction, aggregatePlaceOrder, aggregateReserveTransaction, aggregateTask, aggregateUseAction };