@chevre/domain 23.2.0-alpha.60 → 23.2.0-alpha.62

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 (513) hide show
  1. package/lib/chevre/credentials/customSearch.js +2 -0
  2. package/lib/chevre/credentials/lineNotify.js +4 -0
  3. package/lib/chevre/credentials/sendGrid.js +2 -0
  4. package/lib/chevre/credentials.js +15 -30
  5. package/lib/chevre/emailMessageBuilder.js +225 -250
  6. package/lib/chevre/errorHandler.js +38 -54
  7. package/lib/chevre/factory/event.js +69 -42
  8. package/lib/chevre/factory/transactionNumber.js +3 -1
  9. package/lib/chevre/index.js +15 -30
  10. package/lib/chevre/repo/acceptedOffer.js +178 -197
  11. package/lib/chevre/repo/acceptedPaymentMethod.js +131 -143
  12. package/lib/chevre/repo/account.js +196 -223
  13. package/lib/chevre/repo/accountTitle.js +9 -21
  14. package/lib/chevre/repo/accountTransaction.js +189 -189
  15. package/lib/chevre/repo/accountingReport.js +88 -107
  16. package/lib/chevre/repo/action.js +853 -880
  17. package/lib/chevre/repo/additionalProperty.js +65 -91
  18. package/lib/chevre/repo/advanceBookingRequirement.js +69 -90
  19. package/lib/chevre/repo/aggregateOffer.js +394 -427
  20. package/lib/chevre/repo/aggregateOrder.js +50 -62
  21. package/lib/chevre/repo/aggregateReservation.js +76 -89
  22. package/lib/chevre/repo/aggregation.js +42 -63
  23. package/lib/chevre/repo/assetTransaction.js +696 -716
  24. package/lib/chevre/repo/authorization.js +115 -127
  25. package/lib/chevre/repo/categoryCode.js +115 -143
  26. package/lib/chevre/repo/comment.js +74 -82
  27. package/lib/chevre/repo/concurrentLock.js +17 -29
  28. package/lib/chevre/repo/confirmationNumber.js +21 -33
  29. package/lib/chevre/repo/creativeWork.js +154 -176
  30. package/lib/chevre/repo/credentials.js +40 -51
  31. package/lib/chevre/repo/customer.js +65 -88
  32. package/lib/chevre/repo/customerType.js +52 -61
  33. package/lib/chevre/repo/emailMessage.js +52 -80
  34. package/lib/chevre/repo/event.d.ts +0 -15
  35. package/lib/chevre/repo/event.js +720 -744
  36. package/lib/chevre/repo/eventOffer.js +122 -125
  37. package/lib/chevre/repo/eventSellerMakesOffer.js +64 -76
  38. package/lib/chevre/repo/eventSeries.d.ts +1 -7
  39. package/lib/chevre/repo/eventSeries.js +258 -277
  40. package/lib/chevre/repo/identity.js +94 -106
  41. package/lib/chevre/repo/identityProvider.js +72 -95
  42. package/lib/chevre/repo/issuer.js +102 -135
  43. package/lib/chevre/repo/member.js +238 -258
  44. package/lib/chevre/repo/memberProgram.js +157 -177
  45. package/lib/chevre/repo/merchantReturnPolicy.js +62 -93
  46. package/lib/chevre/repo/message.js +122 -135
  47. package/lib/chevre/repo/mongoose/schemas/acceptedPaymentMethod.js +1 -1
  48. package/lib/chevre/repo/mongoose/schemas/account.js +1 -1
  49. package/lib/chevre/repo/mongoose/schemas/accountTitle.js +1 -1
  50. package/lib/chevre/repo/mongoose/schemas/accountTransaction.js +1 -1
  51. package/lib/chevre/repo/mongoose/schemas/accountingReport.js +1 -1
  52. package/lib/chevre/repo/mongoose/schemas/action.js +1 -1
  53. package/lib/chevre/repo/mongoose/schemas/actionRecipe.js +1 -1
  54. package/lib/chevre/repo/mongoose/schemas/additionalProperty.js +1 -1
  55. package/lib/chevre/repo/mongoose/schemas/advanceBookingRequirement.js +1 -1
  56. package/lib/chevre/repo/mongoose/schemas/aggregateOffer.js +1 -1
  57. package/lib/chevre/repo/mongoose/schemas/aggregateOrder.js +1 -1
  58. package/lib/chevre/repo/mongoose/schemas/aggregateReservation.js +1 -1
  59. package/lib/chevre/repo/mongoose/schemas/aggregation.js +1 -1
  60. package/lib/chevre/repo/mongoose/schemas/assetTransaction.js +1 -1
  61. package/lib/chevre/repo/mongoose/schemas/authorization.js +1 -1
  62. package/lib/chevre/repo/mongoose/schemas/categoryCode.js +1 -1
  63. package/lib/chevre/repo/mongoose/schemas/civicStructure.js +1 -1
  64. package/lib/chevre/repo/mongoose/schemas/creativeWork.js +1 -1
  65. package/lib/chevre/repo/mongoose/schemas/customer.js +1 -1
  66. package/lib/chevre/repo/mongoose/schemas/customerType.js +1 -1
  67. package/lib/chevre/repo/mongoose/schemas/event.js +1 -1
  68. package/lib/chevre/repo/mongoose/schemas/eventOffer.js +1 -1
  69. package/lib/chevre/repo/mongoose/schemas/eventSeries.js +41 -14
  70. package/lib/chevre/repo/mongoose/schemas/identity.js +1 -1
  71. package/lib/chevre/repo/mongoose/schemas/identityProvider.js +1 -1
  72. package/lib/chevre/repo/mongoose/schemas/issuer.js +1 -1
  73. package/lib/chevre/repo/mongoose/schemas/member/global.js +1 -1
  74. package/lib/chevre/repo/mongoose/schemas/member.js +1 -1
  75. package/lib/chevre/repo/mongoose/schemas/merchantReturnPolicy.js +1 -1
  76. package/lib/chevre/repo/mongoose/schemas/message.js +1 -1
  77. package/lib/chevre/repo/mongoose/schemas/movieTicketTypes.js +1 -1
  78. package/lib/chevre/repo/mongoose/schemas/note.js +1 -1
  79. package/lib/chevre/repo/mongoose/schemas/offerCatalog.js +1 -1
  80. package/lib/chevre/repo/mongoose/schemas/offerCatalogItem.js +1 -1
  81. package/lib/chevre/repo/mongoose/schemas/offerItemCondition.js +1 -1
  82. package/lib/chevre/repo/mongoose/schemas/order.js +1 -1
  83. package/lib/chevre/repo/mongoose/schemas/paymentService.js +1 -1
  84. package/lib/chevre/repo/mongoose/schemas/paymentServiceChannel.js +1 -1
  85. package/lib/chevre/repo/mongoose/schemas/pendingReservation.js +1 -1
  86. package/lib/chevre/repo/mongoose/schemas/pendingReservationAggregate.js +1 -1
  87. package/lib/chevre/repo/mongoose/schemas/place.js +1 -1
  88. package/lib/chevre/repo/mongoose/schemas/potentialAction.js +1 -1
  89. package/lib/chevre/repo/mongoose/schemas/product.js +1 -1
  90. package/lib/chevre/repo/mongoose/schemas/productModel.js +1 -1
  91. package/lib/chevre/repo/mongoose/schemas/productOffer.js +1 -1
  92. package/lib/chevre/repo/mongoose/schemas/reservation.js +1 -1
  93. package/lib/chevre/repo/mongoose/schemas/reserveInterface.js +1 -1
  94. package/lib/chevre/repo/mongoose/schemas/role.js +1 -1
  95. package/lib/chevre/repo/mongoose/schemas/schedule.js +1 -1
  96. package/lib/chevre/repo/mongoose/schemas/seller.js +1 -1
  97. package/lib/chevre/repo/mongoose/schemas/sellerReturnPolicy.js +1 -1
  98. package/lib/chevre/repo/mongoose/schemas/service/availableHour.js +1 -1
  99. package/lib/chevre/repo/mongoose/schemas/setting.js +1 -1
  100. package/lib/chevre/repo/mongoose/schemas/task.js +1 -1
  101. package/lib/chevre/repo/mongoose/schemas/ticket.js +1 -1
  102. package/lib/chevre/repo/mongoose/schemas/transaction.js +1 -1
  103. package/lib/chevre/repo/mongoose/schemas/transactionNumber.js +1 -1
  104. package/lib/chevre/repo/mongoose/schemas/trip.js +1 -1
  105. package/lib/chevre/repo/mongoose/schemas/webSite.js +1 -1
  106. package/lib/chevre/repo/movieTicketType.js +68 -89
  107. package/lib/chevre/repo/note.js +143 -146
  108. package/lib/chevre/repo/noteAboutOrder.js +112 -113
  109. package/lib/chevre/repo/offer/unitPriceInCatalog.js +331 -313
  110. package/lib/chevre/repo/offerCatalog.js +302 -333
  111. package/lib/chevre/repo/offerCatalogItem.js +289 -316
  112. package/lib/chevre/repo/offerItemCondition.js +60 -85
  113. package/lib/chevre/repo/order.js +563 -572
  114. package/lib/chevre/repo/orderInTransaction.js +113 -136
  115. package/lib/chevre/repo/orderNumber.d.ts +0 -1
  116. package/lib/chevre/repo/orderNumber.js +108 -122
  117. package/lib/chevre/repo/ownershipInfo.js +213 -233
  118. package/lib/chevre/repo/passport.js +94 -102
  119. package/lib/chevre/repo/paymentMethod/creditCard.js +153 -169
  120. package/lib/chevre/repo/paymentService.js +180 -199
  121. package/lib/chevre/repo/paymentServiceChannel.js +76 -99
  122. package/lib/chevre/repo/paymentServiceProvider.js +186 -201
  123. package/lib/chevre/repo/pendingReservation.js +275 -305
  124. package/lib/chevre/repo/permit.js +47 -42
  125. package/lib/chevre/repo/person.js +227 -247
  126. package/lib/chevre/repo/place/busStop.js +77 -103
  127. package/lib/chevre/repo/place/entranceGate.js +123 -128
  128. package/lib/chevre/repo/place/hasPOS.js +108 -120
  129. package/lib/chevre/repo/place/movieTheater.js +187 -219
  130. package/lib/chevre/repo/place/screeningRoom.js +340 -324
  131. package/lib/chevre/repo/place/seat.js +539 -475
  132. package/lib/chevre/repo/place/section.js +329 -292
  133. package/lib/chevre/repo/potentialAction.js +67 -86
  134. package/lib/chevre/repo/priceSpecification.js +103 -141
  135. package/lib/chevre/repo/product.js +204 -238
  136. package/lib/chevre/repo/productHasOfferCatalog.js +39 -50
  137. package/lib/chevre/repo/productModel.js +94 -126
  138. package/lib/chevre/repo/productOffer.js +119 -118
  139. package/lib/chevre/repo/project.js +123 -141
  140. package/lib/chevre/repo/projectMakesOffer.js +96 -108
  141. package/lib/chevre/repo/rateLimit/offer.js +43 -56
  142. package/lib/chevre/repo/reservation.js +370 -345
  143. package/lib/chevre/repo/reserveInterface.js +31 -42
  144. package/lib/chevre/repo/role.js +94 -112
  145. package/lib/chevre/repo/schedule.js +25 -36
  146. package/lib/chevre/repo/seller.js +115 -145
  147. package/lib/chevre/repo/sellerMakesOffer.js +95 -110
  148. package/lib/chevre/repo/sellerPaymentAccepted.js +92 -109
  149. package/lib/chevre/repo/sellerReturnPolicy.js +74 -96
  150. package/lib/chevre/repo/service/availableHour.js +27 -38
  151. package/lib/chevre/repo/serviceOutput.js +55 -66
  152. package/lib/chevre/repo/serviceOutputIdentifier.js +46 -57
  153. package/lib/chevre/repo/setting/jwt.js +40 -50
  154. package/lib/chevre/repo/setting.js +48 -48
  155. package/lib/chevre/repo/stockHolder.js +179 -197
  156. package/lib/chevre/repo/task.d.ts +1 -1
  157. package/lib/chevre/repo/task.js +615 -617
  158. package/lib/chevre/repo/telemetry.js +1 -0
  159. package/lib/chevre/repo/ticket.js +52 -65
  160. package/lib/chevre/repo/transaction.js +758 -795
  161. package/lib/chevre/repo/transactionNumber.js +67 -80
  162. package/lib/chevre/repo/transactionNumberCounter.js +69 -79
  163. package/lib/chevre/repo/transactionProcess.js +36 -47
  164. package/lib/chevre/repo/trip.js +145 -163
  165. package/lib/chevre/repo/webSite.js +90 -105
  166. package/lib/chevre/repository.js +455 -646
  167. package/lib/chevre/service/account.js +9 -18
  168. package/lib/chevre/service/accountTransaction/deposit.js +16 -17
  169. package/lib/chevre/service/accountTransaction/transfer.js +18 -19
  170. package/lib/chevre/service/accountTransaction/withdraw.js +16 -17
  171. package/lib/chevre/service/accountTransaction.js +4 -13
  172. package/lib/chevre/service/aggregation/event/aggregateOffers.js +63 -60
  173. package/lib/chevre/service/aggregation/event/aggregateScreeningEvent.js +52 -55
  174. package/lib/chevre/service/aggregation/event/findEventOffers.js +7 -17
  175. package/lib/chevre/service/aggregation/event/importFromCOA.js +4 -13
  176. package/lib/chevre/service/aggregation/project.js +10 -19
  177. package/lib/chevre/service/aggregation/system.js +182 -99
  178. package/lib/chevre/service/assetTransaction/cancelReservation/factory.js +31 -17
  179. package/lib/chevre/service/assetTransaction/cancelReservation/start.js +17 -23
  180. package/lib/chevre/service/assetTransaction/cancelReservation/startAndConfirm.js +17 -15
  181. package/lib/chevre/service/assetTransaction/cancelReservation.js +7 -16
  182. package/lib/chevre/service/assetTransaction/cancelReservationCOA/factory.js +11 -4
  183. package/lib/chevre/service/assetTransaction/cancelReservationCOA.js +4 -13
  184. package/lib/chevre/service/assetTransaction/fixInformAction.d.ts +3 -0
  185. package/lib/chevre/service/assetTransaction/fixInformAction.js +9 -16
  186. package/lib/chevre/service/assetTransaction/moneyTransfer/potentialActions.js +13 -25
  187. package/lib/chevre/service/assetTransaction/moneyTransfer.js +101 -88
  188. package/lib/chevre/service/assetTransaction/pay/cancel.d.ts +12 -0
  189. package/lib/chevre/service/assetTransaction/pay/cancel.js +16 -0
  190. package/lib/chevre/service/assetTransaction/pay/check.d.ts +23 -0
  191. package/lib/chevre/service/assetTransaction/pay/check.js +27 -0
  192. package/lib/chevre/service/assetTransaction/pay/confirm.d.ts +24 -0
  193. package/lib/chevre/service/assetTransaction/pay/confirm.js +69 -0
  194. package/lib/chevre/service/assetTransaction/pay/exportTasksById.d.ts +18 -0
  195. package/lib/chevre/service/assetTransaction/pay/exportTasksById.js +102 -0
  196. package/lib/chevre/service/assetTransaction/pay/publishPaymentUrl.d.ts +48 -0
  197. package/lib/chevre/service/assetTransaction/pay/publishPaymentUrl.js +165 -0
  198. package/lib/chevre/service/assetTransaction/pay/searchGMOTrade.d.ts +20 -0
  199. package/lib/chevre/service/assetTransaction/pay/searchGMOTrade.js +49 -0
  200. package/lib/chevre/service/assetTransaction/pay/{account → start/account}/validation.d.ts +2 -2
  201. package/lib/chevre/service/assetTransaction/pay/{account → start/account}/validation.js +7 -17
  202. package/lib/chevre/service/assetTransaction/pay/{factory.d.ts → start/factory.d.ts} +1 -1
  203. package/lib/chevre/service/assetTransaction/pay/{factory.js → start/factory.js} +65 -37
  204. package/lib/chevre/service/assetTransaction/pay/{validateAcceptedPaymentMethodIfNeeded.d.ts → start/preStart/validateAcceptedPaymentMethodIfNeeded.d.ts} +4 -4
  205. package/lib/chevre/service/assetTransaction/pay/{validateAcceptedPaymentMethodIfNeeded.js → start/preStart/validateAcceptedPaymentMethodIfNeeded.js} +8 -21
  206. package/lib/chevre/service/assetTransaction/pay/start/preStart/validateSeller.d.ts +8 -0
  207. package/lib/chevre/service/assetTransaction/pay/start/preStart/validateSeller.js +44 -0
  208. package/lib/chevre/service/assetTransaction/pay/start/processAuthorizeAccount.d.ts +13 -0
  209. package/lib/chevre/service/assetTransaction/pay/start/processAuthorizeAccount.js +39 -0
  210. package/lib/chevre/service/assetTransaction/pay/start/processAuthorizeCreditCard.d.ts +29 -0
  211. package/lib/chevre/service/assetTransaction/pay/start/processAuthorizeCreditCard.js +31 -0
  212. package/lib/chevre/service/assetTransaction/pay/start/processAuthorizeMovieTicket.d.ts +42 -0
  213. package/lib/chevre/service/assetTransaction/pay/start/processAuthorizeMovieTicket.js +22 -0
  214. package/lib/chevre/service/assetTransaction/pay/start.d.ts +60 -0
  215. package/lib/chevre/service/assetTransaction/pay/start.js +139 -0
  216. package/lib/chevre/service/assetTransaction/pay.d.ts +8 -170
  217. package/lib/chevre/service/assetTransaction/pay.js +16 -623
  218. package/lib/chevre/service/assetTransaction/refund/factory.js +36 -16
  219. package/lib/chevre/service/assetTransaction/refund/potentialActions.js +12 -21
  220. package/lib/chevre/service/assetTransaction/refund.js +35 -39
  221. package/lib/chevre/service/assetTransaction/registerService/factory.js +65 -28
  222. package/lib/chevre/service/assetTransaction/registerService/potentialActions.js +50 -41
  223. package/lib/chevre/service/assetTransaction/registerService.js +45 -52
  224. package/lib/chevre/service/assetTransaction/reserve/cancel.js +5 -14
  225. package/lib/chevre/service/assetTransaction/reserve/confirm/factory.js +15 -3
  226. package/lib/chevre/service/assetTransaction/reserve/confirm.js +21 -26
  227. package/lib/chevre/service/assetTransaction/reserve/exportTasksById.js +3 -12
  228. package/lib/chevre/service/assetTransaction/reserve/start/createSubReservations.js +99 -79
  229. package/lib/chevre/service/assetTransaction/reserve/start/factory/createPointAward.js +17 -12
  230. package/lib/chevre/service/assetTransaction/reserve/start/factory/createReservation.js +108 -70
  231. package/lib/chevre/service/assetTransaction/reserve/start/factory/createStartParams.js +69 -30
  232. package/lib/chevre/service/assetTransaction/reserve/start/factory/price.js +29 -20
  233. package/lib/chevre/service/assetTransaction/reserve/start.js +91 -106
  234. package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/fixExtendedEventOffer.js +5 -15
  235. package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/validateIssuedOfferIfExists.js +41 -54
  236. package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/validateMemberTierIfExists.js +42 -55
  237. package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/verifyTicketTokenAsNeeded.js +7 -17
  238. package/lib/chevre/service/assetTransaction/reserve/validateStartRequest.js +15 -27
  239. package/lib/chevre/service/assetTransaction/reserveCOA/cancel.js +24 -24
  240. package/lib/chevre/service/assetTransaction/reserveCOA/factory.js +12 -4
  241. package/lib/chevre/service/assetTransaction/reserveCOA.js +4 -13
  242. package/lib/chevre/service/assetTransaction.js +17 -21
  243. package/lib/chevre/service/delivery/factory.js +3 -4
  244. package/lib/chevre/service/delivery/product/factory.js +16 -7
  245. package/lib/chevre/service/delivery/reservation/factory.js +14 -3
  246. package/lib/chevre/service/delivery.js +47 -49
  247. package/lib/chevre/service/event/processUpdateMovieTheater.js +21 -23
  248. package/lib/chevre/service/event/saveScreeningEventSeries.js +56 -37
  249. package/lib/chevre/service/event/saveScreeningEvents.js +14 -23
  250. package/lib/chevre/service/event.js +34 -27
  251. package/lib/chevre/service/iam.js +8 -17
  252. package/lib/chevre/service/moneyTransfer.js +128 -112
  253. package/lib/chevre/service/notification/factory.js +11 -8
  254. package/lib/chevre/service/notification/notifyAbortedTasksByEmail.js +11 -15
  255. package/lib/chevre/service/notification/notifyByEmail.js +7 -17
  256. package/lib/chevre/service/notification/sendEmailMessage.js +23 -26
  257. package/lib/chevre/service/notification/triggerWebhook.js +58 -54
  258. package/lib/chevre/service/offer/any.js +6 -15
  259. package/lib/chevre/service/offer/event/authorize/factory.js +139 -61
  260. package/lib/chevre/service/offer/event/authorize/processStartReserve4chevre/requestedProgramMembershipUsed2permit.js +8 -18
  261. package/lib/chevre/service/offer/event/authorize/processStartReserve4chevre.js +43 -27
  262. package/lib/chevre/service/offer/event/authorize.js +114 -68
  263. package/lib/chevre/service/offer/event/checkAvailability.js +5 -15
  264. package/lib/chevre/service/offer/event/importFromCOA/factory.js +9 -2
  265. package/lib/chevre/service/offer/event/importFromCOA.js +13 -19
  266. package/lib/chevre/service/offer/event/issueEventOfferTicket.js +38 -39
  267. package/lib/chevre/service/offer/event/searchEventTicketOffers.js +26 -38
  268. package/lib/chevre/service/offer/event/searchOfferAppliesToMovieTicket.js +11 -22
  269. package/lib/chevre/service/offer/event/searchOfferCatalogItemAvailability.js +13 -24
  270. package/lib/chevre/service/offer/event/searchOfferCatalogItems.js +15 -22
  271. package/lib/chevre/service/offer/event/searchOffersByIds.js +24 -36
  272. package/lib/chevre/service/offer/event/searchPriceSpecs4event.js +5 -14
  273. package/lib/chevre/service/offer/event/voidTransaction/processVoidTransaction4chevre.js +4 -13
  274. package/lib/chevre/service/offer/event/voidTransaction/processVoidTransaction4coa.js +6 -15
  275. package/lib/chevre/service/offer/event/voidTransaction.js +35 -39
  276. package/lib/chevre/service/offer/event/voidTransactionByActionId.js +14 -20
  277. package/lib/chevre/service/offer/eventServiceByCOA/acceptOffer/authorize.js +52 -40
  278. package/lib/chevre/service/offer/eventServiceByCOA/acceptOffer/factory.js +5 -1
  279. package/lib/chevre/service/offer/eventServiceByCOA/acceptOffer.js +34 -37
  280. package/lib/chevre/service/offer/eventServiceByCOA/authorize/factory.js +45 -22
  281. package/lib/chevre/service/offer/eventServiceByCOA/authorize/validateAcceptedOffers.js +67 -59
  282. package/lib/chevre/service/offer/eventServiceByCOA/authorize.js +16 -26
  283. package/lib/chevre/service/offer/eventServiceByCOA/authorizeByAcceptAction.js +8 -18
  284. package/lib/chevre/service/offer/eventServiceByCOA/changeOffers.js +42 -41
  285. package/lib/chevre/service/offer/eventServiceByCOA/findAcceptAction.js +22 -25
  286. package/lib/chevre/service/offer/factory.js +18 -7
  287. package/lib/chevre/service/offer/moneyTransfer/authorize.js +31 -36
  288. package/lib/chevre/service/offer/moneyTransfer/returnMoneyTransfer.js +9 -18
  289. package/lib/chevre/service/offer/moneyTransfer/settleTransaction.js +10 -19
  290. package/lib/chevre/service/offer/moneyTransfer/voidTransaction.js +14 -24
  291. package/lib/chevre/service/offer/onEventChanged.js +69 -64
  292. package/lib/chevre/service/offer/product/factory.js +54 -29
  293. package/lib/chevre/service/offer/product/searchProductOffers.js +30 -23
  294. package/lib/chevre/service/offer/product.js +106 -80
  295. package/lib/chevre/service/offer.js +48 -44
  296. package/lib/chevre/service/order/confirmPayTransaction.js +28 -27
  297. package/lib/chevre/service/order/createAccountingReportIfNotExist.js +54 -41
  298. package/lib/chevre/service/order/deleteOrder.js +28 -35
  299. package/lib/chevre/service/order/findPlaceOrderTransaction.js +3 -12
  300. package/lib/chevre/service/order/onAssetTransactionStatusChanged.js +64 -68
  301. package/lib/chevre/service/order/onOrderStatusChanged/onOrderCancelled/factory.d.ts +1 -1
  302. package/lib/chevre/service/order/onOrderStatusChanged/onOrderCancelled/factory.js +1 -2
  303. package/lib/chevre/service/order/onOrderStatusChanged/onOrderCancelled.js +3 -12
  304. package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered/factory.js +11 -6
  305. package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered.js +5 -14
  306. package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially/factory.d.ts +1 -1
  307. package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially/factory.js +22 -9
  308. package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially.js +5 -14
  309. package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.js +23 -26
  310. package/lib/chevre/service/order/onOrderStatusChanged/onOrderPaymentDue.js +13 -19
  311. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/createSendEmailMessageTaskIfNotExist.js +5 -14
  312. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/factory.js +24 -13
  313. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/processOrder.js +23 -32
  314. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing.js +8 -18
  315. package/lib/chevre/service/order/onOrderStatusChanged/onOrderReturned/factory.d.ts +1 -1
  316. package/lib/chevre/service/order/onOrderStatusChanged/onOrderReturned/factory.js +10 -9
  317. package/lib/chevre/service/order/onOrderStatusChanged/onOrderReturned.js +23 -28
  318. package/lib/chevre/service/order/onOrderUpdated/factory.js +3 -5
  319. package/lib/chevre/service/order/onOrderUpdated.js +13 -15
  320. package/lib/chevre/service/order/payOrder.js +3 -12
  321. package/lib/chevre/service/order/placeOrder/createPlacingOrderFromExistingTransaction.js +9 -19
  322. package/lib/chevre/service/order/placeOrder/factory/orderedItem.js +31 -15
  323. package/lib/chevre/service/order/placeOrder/factory.js +35 -22
  324. package/lib/chevre/service/order/placeOrder/voidAcceptedOfferIfNecessary.js +3 -12
  325. package/lib/chevre/service/order/placeOrder.js +12 -22
  326. package/lib/chevre/service/order/placeOrderWithoutTransaction.js +10 -18
  327. package/lib/chevre/service/order/returnOrder.js +27 -29
  328. package/lib/chevre/service/order/sendOrder.js +37 -36
  329. package/lib/chevre/service/payment/any/authorize/fixTransactionNumber.js +19 -25
  330. package/lib/chevre/service/payment/any/authorize/handlePrePublishedPaymentMethodIdOnAuthorizing.js +24 -37
  331. package/lib/chevre/service/payment/any/factory.js +106 -49
  332. package/lib/chevre/service/payment/any/fixOrderAsNeeded.js +4 -13
  333. package/lib/chevre/service/payment/any/onPayActionCompleted.js +13 -18
  334. package/lib/chevre/service/payment/any/onPaymentStatusChanged/onPaid.js +34 -37
  335. package/lib/chevre/service/payment/any/onPaymentStatusChanged/onRefunded.js +18 -24
  336. package/lib/chevre/service/payment/any/onPaymentStatusChanged.js +16 -16
  337. package/lib/chevre/service/payment/any/onRefundActionCompletedOrFailed.js +15 -20
  338. package/lib/chevre/service/payment/any/person2username.js +33 -45
  339. package/lib/chevre/service/payment/any/publishPaymentUrl/fixTransactionNumberOnPublishPaymentUrl.js +8 -18
  340. package/lib/chevre/service/payment/any/verifyTicketTokenAsNeeded.js +5 -15
  341. package/lib/chevre/service/payment/any.js +181 -137
  342. package/lib/chevre/service/payment/creditCard/authorize/handleAuthorizeError.js +2 -2
  343. package/lib/chevre/service/payment/creditCard/authorize/processAuthorizeCreditCard.js +44 -24
  344. package/lib/chevre/service/payment/creditCard/authorize/processAuthorizeCreditCard3ds.js +6 -15
  345. package/lib/chevre/service/payment/creditCard/authorize/processAuthorizeCreditCard3dsResult2recipe.js +5 -1
  346. package/lib/chevre/service/payment/creditCard/authorize/processAuthorizeCreditCardResult2recipe.js +10 -2
  347. package/lib/chevre/service/payment/creditCard/authorize.js +20 -22
  348. package/lib/chevre/service/payment/creditCard/factory.js +22 -4
  349. package/lib/chevre/service/payment/creditCard/getGMOInfoFromSeller.js +8 -18
  350. package/lib/chevre/service/payment/creditCard/payCreditCard.js +31 -36
  351. package/lib/chevre/service/payment/creditCard/refundCreditCard.js +40 -49
  352. package/lib/chevre/service/payment/creditCard/searchGMOTrade.js +33 -45
  353. package/lib/chevre/service/payment/creditCard/voidTransaction.js +15 -25
  354. package/lib/chevre/service/payment/faceToFace.js +14 -23
  355. package/lib/chevre/service/payment/factory/createPayObjectServiceOutput.js +44 -25
  356. package/lib/chevre/service/payment/factory.js +50 -23
  357. package/lib/chevre/service/payment/movieTicket/authorize.js +35 -28
  358. package/lib/chevre/service/payment/movieTicket/checkMovieTicket.js +22 -25
  359. package/lib/chevre/service/payment/movieTicket/factory.js +33 -10
  360. package/lib/chevre/service/payment/movieTicket/getCredentials.js +5 -15
  361. package/lib/chevre/service/payment/movieTicket/payMovieTicket.js +29 -40
  362. package/lib/chevre/service/payment/movieTicket/processPurchaseNumberAuth.js +8 -18
  363. package/lib/chevre/service/payment/movieTicket/refundMovieTicket.js +60 -59
  364. package/lib/chevre/service/payment/movieTicket/validation.js +41 -36
  365. package/lib/chevre/service/payment/movieTicket/voidTransaction.js +8 -18
  366. package/lib/chevre/service/payment/paymentCard.js +87 -103
  367. package/lib/chevre/service/permit.js +36 -35
  368. package/lib/chevre/service/product.js +23 -27
  369. package/lib/chevre/service/project.js +22 -31
  370. package/lib/chevre/service/report/ownershipInfo.js +3 -4
  371. package/lib/chevre/service/report/telemetry.js +51 -55
  372. package/lib/chevre/service/reserve/cancelReservation.js +92 -90
  373. package/lib/chevre/service/reserve/checkInReservation.js +24 -29
  374. package/lib/chevre/service/reserve/confirmReservation.js +33 -38
  375. package/lib/chevre/service/reserve/factory.js +42 -20
  376. package/lib/chevre/service/reserve/findByCode.js +13 -18
  377. package/lib/chevre/service/reserve/potentialActions/onPendingReservationCanceled.js +18 -24
  378. package/lib/chevre/service/reserve/potentialActions/onReservationCanceled.js +17 -24
  379. package/lib/chevre/service/reserve/potentialActions/onReservationCheckedIn.js +38 -29
  380. package/lib/chevre/service/reserve/potentialActions/onReservationConfirmed.js +45 -35
  381. package/lib/chevre/service/reserve/potentialActions/onReservationUsed.js +37 -32
  382. package/lib/chevre/service/reserve/potentialActions/onReservationsCreated.js +17 -23
  383. package/lib/chevre/service/reserve/searchByOrder.js +10 -19
  384. package/lib/chevre/service/reserve/useReservation.js +47 -32
  385. package/lib/chevre/service/reserve/verifyToken4reservation.js +7 -14
  386. package/lib/chevre/service/reserveCOA/cancelReservation.js +7 -16
  387. package/lib/chevre/service/reserveCOA/factory.js +5 -1
  388. package/lib/chevre/service/task/acceptCOAOffer.js +20 -24
  389. package/lib/chevre/service/task/aggregateOffers.js +3 -12
  390. package/lib/chevre/service/task/aggregateOnSystem.js +4 -14
  391. package/lib/chevre/service/task/aggregateScreeningEvent.js +3 -12
  392. package/lib/chevre/service/task/authorizePayment.js +9 -15
  393. package/lib/chevre/service/task/cancelMoneyTransfer.js +3 -12
  394. package/lib/chevre/service/task/cancelPendingReservation.js +10 -20
  395. package/lib/chevre/service/task/cancelReservation.js +3 -12
  396. package/lib/chevre/service/task/checkMovieTicket.js +16 -19
  397. package/lib/chevre/service/task/checkResource.js +7 -16
  398. package/lib/chevre/service/task/confirmMoneyTransfer.js +3 -12
  399. package/lib/chevre/service/task/confirmPayTransaction.js +6 -12
  400. package/lib/chevre/service/task/confirmRegisterService.js +3 -12
  401. package/lib/chevre/service/task/confirmRegisterServiceTransaction.js +24 -31
  402. package/lib/chevre/service/task/confirmReserveTransaction.js +48 -42
  403. package/lib/chevre/service/task/createAccountingReport.js +14 -20
  404. package/lib/chevre/service/task/deletePerson.js +48 -58
  405. package/lib/chevre/service/task/deleteTransaction.js +3 -12
  406. package/lib/chevre/service/task/givePointAward.js +3 -12
  407. package/lib/chevre/service/task/handleNotification.js +4 -14
  408. package/lib/chevre/service/task/importEventCapacitiesFromCOA.js +6 -16
  409. package/lib/chevre/service/task/importEventsFromCOA.js +6 -16
  410. package/lib/chevre/service/task/importOffersFromCOA.js +8 -18
  411. package/lib/chevre/service/task/invalidatePaymentUrl.js +6 -12
  412. package/lib/chevre/service/task/moneyTransfer.js +3 -12
  413. package/lib/chevre/service/task/onAssetTransactionStatusChanged.js +3 -12
  414. package/lib/chevre/service/task/onAuthorizationCreated.js +11 -18
  415. package/lib/chevre/service/task/onEventChanged.js +3 -12
  416. package/lib/chevre/service/task/onOrderPaymentCompleted.js +3 -12
  417. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByAggregateOffer.js +7 -16
  418. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByEventSeries.js +7 -16
  419. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByMovieTheater.js +8 -17
  420. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByOfferCatalog.js +10 -19
  421. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByProduct.js +8 -17
  422. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByRoom.js +6 -15
  423. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesBySeller.js +14 -23
  424. package/lib/chevre/service/task/onResourceDeleted.js +17 -26
  425. package/lib/chevre/service/task/onResourceUpdated/onAggregateOfferUpdated.js +9 -21
  426. package/lib/chevre/service/task/onResourceUpdated/onCategoryCodeUpdated.js +3 -12
  427. package/lib/chevre/service/task/onResourceUpdated/onHasPOSUpdated.js +11 -23
  428. package/lib/chevre/service/task/onResourceUpdated/onOfferCatalogUpdated.js +13 -25
  429. package/lib/chevre/service/task/onResourceUpdated/syncCategoryCode.js +9 -15
  430. package/lib/chevre/service/task/onResourceUpdated/syncOfferCatalog.js +21 -27
  431. package/lib/chevre/service/task/onResourceUpdated.js +113 -153
  432. package/lib/chevre/service/task/pay.js +8 -16
  433. package/lib/chevre/service/task/payment/invalidatePaymentUrlByTask.js +4 -14
  434. package/lib/chevre/service/task/payment/payByTask.js +49 -38
  435. package/lib/chevre/service/task/payment/refundByTask.js +7 -17
  436. package/lib/chevre/service/task/payment/voidPaymentByTask.js +6 -15
  437. package/lib/chevre/service/task/placeOrder.js +6 -12
  438. package/lib/chevre/service/task/publishPaymentUrl.js +9 -14
  439. package/lib/chevre/service/task/refund.js +8 -16
  440. package/lib/chevre/service/task/registerService.js +3 -12
  441. package/lib/chevre/service/task/reserve.js +3 -12
  442. package/lib/chevre/service/task/returnMoneyTransfer.js +3 -12
  443. package/lib/chevre/service/task/returnOrder.js +6 -12
  444. package/lib/chevre/service/task/returnPayTransaction.js +54 -48
  445. package/lib/chevre/service/task/returnPointAward.js +3 -12
  446. package/lib/chevre/service/task/returnReserveTransaction.js +29 -30
  447. package/lib/chevre/service/task/sendEmailMessage.js +6 -13
  448. package/lib/chevre/service/task/sendOrder.js +12 -15
  449. package/lib/chevre/service/task/syncResourcesFromCOA.js +39 -40
  450. package/lib/chevre/service/task/triggerWebhook.js +6 -12
  451. package/lib/chevre/service/task/useReservation.js +11 -14
  452. package/lib/chevre/service/task/voidMoneyTransferTransaction.js +3 -12
  453. package/lib/chevre/service/task/voidPayTransaction.js +7 -12
  454. package/lib/chevre/service/task/voidPayment.js +3 -12
  455. package/lib/chevre/service/task/voidRegisterServiceTransaction.js +3 -12
  456. package/lib/chevre/service/task/voidReserveTransaction.js +10 -16
  457. package/lib/chevre/service/task.js +16 -22
  458. package/lib/chevre/service/taskHandler/onOperationFailed/informTaskIfNeeded.js +9 -20
  459. package/lib/chevre/service/taskHandler/onOperationFailed.js +20 -17
  460. package/lib/chevre/service/taskHandler.js +19 -21
  461. package/lib/chevre/service/transaction/deleteTransaction.js +104 -84
  462. package/lib/chevre/service/transaction/moneyTransfer/exportTasks/factory.js +15 -6
  463. package/lib/chevre/service/transaction/moneyTransfer/factory.js +13 -4
  464. package/lib/chevre/service/transaction/moneyTransfer/potentialActions.js +12 -24
  465. package/lib/chevre/service/transaction/moneyTransfer.js +119 -96
  466. package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions/sendEmailMessage.js +49 -51
  467. package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions.js +14 -25
  468. package/lib/chevre/service/transaction/placeOrder/confirm/publishCode.js +4 -14
  469. package/lib/chevre/service/transaction/placeOrder/confirm/validation/validateInvoiceReferencesOrder.js +3 -4
  470. package/lib/chevre/service/transaction/placeOrder/confirm/validation/validateMovieTicket.js +3 -4
  471. package/lib/chevre/service/transaction/placeOrder/confirm/validation/validatePrice.js +2 -3
  472. package/lib/chevre/service/transaction/placeOrder/confirm/validation.js +30 -45
  473. package/lib/chevre/service/transaction/placeOrder/confirm.js +75 -55
  474. package/lib/chevre/service/transaction/placeOrder/exportTasks/factory.js +31 -13
  475. package/lib/chevre/service/transaction/placeOrder/exportTasksById.js +6 -15
  476. package/lib/chevre/service/transaction/placeOrder/publishConfirmationNumberIfNotExist.js +6 -15
  477. package/lib/chevre/service/transaction/placeOrder/publishOrderNumberIfNotExist.js +7 -16
  478. package/lib/chevre/service/transaction/placeOrder/start/factory.js +27 -7
  479. package/lib/chevre/service/transaction/placeOrder/start/validateStartRequest.js +53 -59
  480. package/lib/chevre/service/transaction/placeOrder/start.js +14 -18
  481. package/lib/chevre/service/transaction/returnOrder/exportTasks/factory.js +13 -6
  482. package/lib/chevre/service/transaction/returnOrder/potentialActions/returnPaymentMethod.js +176 -190
  483. package/lib/chevre/service/transaction/returnOrder/potentialActions/returnPointAward.js +77 -89
  484. package/lib/chevre/service/transaction/returnOrder/potentialActions/sendEmailMessage.js +40 -48
  485. package/lib/chevre/service/transaction/returnOrder/potentialActions.js +52 -56
  486. package/lib/chevre/service/transaction/returnOrder/preStart/findApplicableReturnPolicy.js +100 -102
  487. package/lib/chevre/service/transaction/returnOrder/preStart/getReturnPolicyByProject.js +60 -80
  488. package/lib/chevre/service/transaction/returnOrder/preStart.js +42 -46
  489. package/lib/chevre/service/transaction/returnOrder.js +32 -36
  490. package/lib/chevre/service/transaction.js +75 -46
  491. package/lib/chevre/service/validation/validateEvent.js +2 -11
  492. package/lib/chevre/service/validation/validateOrder.js +7 -16
  493. package/lib/chevre/service.js +85 -128
  494. package/lib/chevre/settings/aggregation.js +4 -0
  495. package/lib/chevre/settings.js +7 -0
  496. package/package.json +8 -11
  497. package/example/src/chevre/addEventBySchedule.ts +0 -46
  498. package/example/src/chevre/orderNumber/decryptOrderNumber.ts +0 -14
  499. package/example/src/idaas/auth0/adminApplications.ts +0 -183
  500. package/example/src/idaas/auth0/getToken.ts +0 -55
  501. package/example/src/idaas/auth0/getTokenByPrivateKeyJWT.ts +0 -84
  502. package/lib/chevre/service/task/createEvent/createEvent.d.ts +0 -25
  503. package/lib/chevre/service/task/createEvent/createEvent.js +0 -45
  504. package/lib/chevre/service/task/createEvent/createEventBySchedule/factory.d.ts +0 -22
  505. package/lib/chevre/service/task/createEvent/createEventBySchedule/factory.js +0 -190
  506. package/lib/chevre/service/task/createEvent/createEventBySchedule/schedule2events.d.ts +0 -15
  507. package/lib/chevre/service/task/createEvent/createEventBySchedule/schedule2events.js +0 -118
  508. package/lib/chevre/service/task/createEvent/createEventBySchedule.d.ts +0 -25
  509. package/lib/chevre/service/task/createEvent/createEventBySchedule.js +0 -107
  510. package/lib/chevre/service/task/createEvent/createEventSeries.d.ts +0 -13
  511. package/lib/chevre/service/task/createEvent/createEventSeries.js +0 -118
  512. package/lib/chevre/service/task/createEvent.d.ts +0 -6
  513. package/lib/chevre/service/task/createEvent.js +0 -46
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.TransactionRepo = void 0;
13
4
  const moment = require("moment");
@@ -36,14 +27,14 @@ const AVAILABLE_PROJECT_FIELDS = [
36
27
  * 取引リポジトリ
37
28
  */
38
29
  class TransactionRepo {
30
+ transactionModel;
39
31
  constructor(connection) {
40
32
  this.transactionModel = connection.model(transaction_2.modelName, (0, transaction_2.createSchema)());
41
33
  }
42
34
  // tslint:disable-next-line:cyclomatic-complexity max-func-body-length
43
35
  static CREATE_MONGO_CONDITIONS(params) {
44
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
45
36
  const andConditions = [];
46
- const projectIdEq = (_b = (_a = params.project) === null || _a === void 0 ? void 0 : _a.id) === null || _b === void 0 ? void 0 : _b.$eq;
37
+ const projectIdEq = params.project?.id?.$eq;
47
38
  // tslint:disable-next-line:no-single-line-block-comment
48
39
  /* istanbul ignore else */
49
40
  if (typeof projectIdEq === 'string') {
@@ -102,7 +93,7 @@ class TransactionRepo {
102
93
  }
103
94
  // tslint:disable-next-line:no-single-line-block-comment
104
95
  /* istanbul ignore else */
105
- const statusIn = (_c = params.status) === null || _c === void 0 ? void 0 : _c.$in;
96
+ const statusIn = params.status?.$in;
106
97
  if (Array.isArray(statusIn)) {
107
98
  andConditions.push({ status: { $in: statusIn } });
108
99
  }
@@ -172,13 +163,13 @@ class TransactionRepo {
172
163
  // });
173
164
  // }
174
165
  }
175
- const tasksExportActionStatusIn = (_e = (_d = params.tasksExportAction) === null || _d === void 0 ? void 0 : _d.actionStatus) === null || _e === void 0 ? void 0 : _e.$in;
166
+ const tasksExportActionStatusIn = params.tasksExportAction?.actionStatus?.$in;
176
167
  // tslint:disable-next-line:no-single-line-block-comment
177
168
  /* istanbul ignore else */
178
169
  if (Array.isArray(tasksExportActionStatusIn)) {
179
170
  andConditions.push({ 'tasksExportAction.actionStatus': { $exists: true, $in: tasksExportActionStatusIn } });
180
171
  }
181
- const tasksExportActionStatusEq = (_g = (_f = params.tasksExportAction) === null || _f === void 0 ? void 0 : _f.actionStatus) === null || _g === void 0 ? void 0 : _g.$eq;
172
+ const tasksExportActionStatusEq = params.tasksExportAction?.actionStatus?.$eq;
182
173
  // tslint:disable-next-line:no-single-line-block-comment
183
174
  /* istanbul ignore else */
184
175
  if (typeof tasksExportActionStatusEq === 'string') {
@@ -186,21 +177,21 @@ class TransactionRepo {
186
177
  }
187
178
  switch (params.typeOf) {
188
179
  case factory.transactionType.PlaceOrder:
189
- const sellerIdIn = (_h = params.seller) === null || _h === void 0 ? void 0 : _h.ids;
180
+ const sellerIdIn = params.seller?.ids;
190
181
  if (Array.isArray(sellerIdIn)) {
191
182
  andConditions.push({ 'seller.id': { $exists: true, $in: sellerIdIn } });
192
183
  }
193
- const resultOrderNumberIn = (_k = (_j = params.result) === null || _j === void 0 ? void 0 : _j.order) === null || _k === void 0 ? void 0 : _k.orderNumbers;
184
+ const resultOrderNumberIn = params.result?.order?.orderNumbers;
194
185
  if (Array.isArray(resultOrderNumberIn)) {
195
186
  andConditions.push({ 'result.order.orderNumber': { $exists: true, $in: resultOrderNumberIn } });
196
187
  }
197
- const resultOrderConfirmationNumberEq = (_o = (_m = (_l = params.result) === null || _l === void 0 ? void 0 : _l.order) === null || _m === void 0 ? void 0 : _m.confirmationNumber) === null || _o === void 0 ? void 0 : _o.$eq;
188
+ const resultOrderConfirmationNumberEq = params.result?.order?.confirmationNumber?.$eq;
198
189
  if (typeof resultOrderConfirmationNumberEq === 'string') {
199
190
  andConditions.push({
200
191
  'result.order.confirmationNumber': { $exists: true, $eq: resultOrderConfirmationNumberEq }
201
192
  });
202
193
  }
203
- const objectOrderNumberEq = (_q = (_p = params.object) === null || _p === void 0 ? void 0 : _p.orderNumber) === null || _q === void 0 ? void 0 : _q.$eq;
194
+ const objectOrderNumberEq = params.object?.orderNumber?.$eq;
204
195
  if (typeof objectOrderNumberEq === 'string') {
205
196
  andConditions.push({ 'object.orderNumber': { $exists: true, $eq: objectOrderNumberEq } });
206
197
  }
@@ -232,373 +223,364 @@ class TransactionRepo {
232
223
  /**
233
224
  * 取引を開始する
234
225
  */
235
- start(params) {
236
- return __awaiter(this, void 0, void 0, function* () {
237
- var _a, _b;
238
- const status = factory.transactionStatusType.InProgress;
239
- const tasksExportAction = { actionStatus: factory.actionStatusType.PotentialActionStatus };
240
- // const tasksExportationStatus = factory.transactionTasksExportationStatus.Unexported; // discontinue(2024-06-20~)
241
- const startDate = new Date();
242
- let expires;
243
- const { typeOf } = params;
244
- if (typeOf === factory.transactionType.PlaceOrder
245
- || typeOf === factory.transactionType.ReturnOrder) {
246
- // expiresInSecondsの指定があれば優先して適用する(2022-11-25~)
247
- if (typeof params.expiresInSeconds === 'number' && params.expiresInSeconds > 0) {
248
- expires = moment(startDate)
249
- .add(params.expiresInSeconds, 'seconds')
250
- .toDate();
251
- }
252
- else {
253
- throw new factory.errors.ArgumentNull('expiresInSeconds');
254
- }
255
- }
256
- else {
257
- expires = params.expires;
258
- }
259
- let creatingTransaction;
260
- if (typeOf === factory.transactionType.MoneyTransfer) {
261
- const { agent, project, object, seller, recipient } = params;
262
- creatingTransaction = {
263
- status, startDate, expires, typeOf, tasksExportAction,
264
- agent, project, seller, object, recipient
265
- };
266
- }
267
- else if (typeOf === factory.transactionType.PlaceOrder) {
268
- const { agent, project, object, seller, instrument } = params;
269
- creatingTransaction = Object.assign({ status, startDate, expires, typeOf, tasksExportAction,
270
- agent, project, seller, object }, (typeof (instrument === null || instrument === void 0 ? void 0 : instrument.id) === 'string') ? { instrument } : undefined);
271
- }
272
- else if (typeOf === factory.transactionType.ReturnOrder) {
273
- const { agent, project, object, seller } = params;
274
- creatingTransaction = {
275
- status, startDate, expires, typeOf, tasksExportAction,
276
- agent, project, seller, object
277
- };
226
+ async start(params) {
227
+ const status = factory.transactionStatusType.InProgress;
228
+ const tasksExportAction = { actionStatus: factory.actionStatusType.PotentialActionStatus };
229
+ // const tasksExportationStatus = factory.transactionTasksExportationStatus.Unexported; // discontinue(2024-06-20~)
230
+ const startDate = new Date();
231
+ let expires;
232
+ const { typeOf } = params;
233
+ if (typeOf === factory.transactionType.PlaceOrder
234
+ || typeOf === factory.transactionType.ReturnOrder) {
235
+ // expiresInSecondsの指定があれば優先して適用する(2022-11-25~)
236
+ if (typeof params.expiresInSeconds === 'number' && params.expiresInSeconds > 0) {
237
+ expires = moment(startDate)
238
+ .add(params.expiresInSeconds, 'seconds')
239
+ .toDate();
278
240
  }
279
241
  else {
280
- throw new factory.errors.NotImplemented(`${typeOf} not implemented`);
281
- }
282
- // reimplemnt with insertMany(2024-05-30~)
283
- const result = yield this.transactionModel.insertMany(creatingTransaction, { rawResult: true });
284
- const id = (_b = (_a = result.insertedIds) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.toHexString();
285
- if (typeof id !== 'string') {
286
- throw new factory.errors.Internal('transaction not saved');
242
+ throw new factory.errors.ArgumentNull('expiresInSeconds');
287
243
  }
288
- // 取引開始時にも取引イベントエミッター連携(2024-03-21~)
289
- transaction_1.transactionEventEmitter.emitTransactionStatusChanged({ id, typeOf, status });
290
- return { expires, id, startDate, status }; // minimize response(2024-05-30~)
291
- });
244
+ }
245
+ else {
246
+ expires = params.expires;
247
+ }
248
+ let creatingTransaction;
249
+ if (typeOf === factory.transactionType.MoneyTransfer) {
250
+ const { agent, project, object, seller, recipient } = params;
251
+ creatingTransaction = {
252
+ status, startDate, expires, typeOf, tasksExportAction,
253
+ agent, project, seller, object, recipient
254
+ };
255
+ }
256
+ else if (typeOf === factory.transactionType.PlaceOrder) {
257
+ const { agent, project, object, seller, instrument } = params;
258
+ creatingTransaction = {
259
+ status, startDate, expires, typeOf, tasksExportAction,
260
+ agent, project, seller, object,
261
+ ...(typeof instrument?.id === 'string') ? { instrument } : undefined
262
+ };
263
+ }
264
+ else if (typeOf === factory.transactionType.ReturnOrder) {
265
+ const { agent, project, object, seller } = params;
266
+ creatingTransaction = {
267
+ status, startDate, expires, typeOf, tasksExportAction,
268
+ agent, project, seller, object
269
+ };
270
+ }
271
+ else {
272
+ throw new factory.errors.NotImplemented(`${typeOf} not implemented`);
273
+ }
274
+ // reimplemnt with insertMany(2024-05-30~)
275
+ const result = await this.transactionModel.insertMany(creatingTransaction, { rawResult: true });
276
+ const id = result.insertedIds?.[0]?.toHexString();
277
+ if (typeof id !== 'string') {
278
+ throw new factory.errors.Internal('transaction not saved');
279
+ }
280
+ // 取引開始時にも取引イベントエミッター連携(2024-03-21~)
281
+ transaction_1.transactionEventEmitter.emitTransactionStatusChanged({ id, typeOf, status });
282
+ return { expires, id, startDate, status }; // minimize response(2024-05-30~)
292
283
  }
293
284
  /**
294
285
  * 特定取引検索
295
286
  */
296
- projectFieldsById(params, inclusion // make required(2024-05-31~)
287
+ async projectFieldsById(params, inclusion // make required(2024-05-31~)
297
288
  ) {
298
- return __awaiter(this, void 0, void 0, function* () {
299
- let positiveProjectionFields = AVAILABLE_PROJECT_FIELDS;
300
- if (Array.isArray(inclusion) && inclusion.length > 0) {
301
- positiveProjectionFields = positiveProjectionFields.filter((key) => inclusion.includes(key));
302
- }
303
- else {
304
- throw new factory.errors.NotImplemented('inclusion must be specified'); // 2024-08-26~
305
- }
306
- const projection = Object.assign({ _id: 0, id: { $toString: '$_id' } }, Object.fromEntries(positiveProjectionFields.map((key) => ([key, 1]))));
307
- // let projection: { [key in (IKeyOfProjection<T> | '__v' | 'createdAt' | 'updatedAt')]?: AnyExpression } = {};
308
- // if (Array.isArray(inclusion) && inclusion.length > 0) {
309
- // inclusion.forEach((field) => {
310
- // projection[field] = 1;
311
- // });
312
- // } else {
313
- // projection = {
314
- // __v: 0,
315
- // createdAt: 0,
316
- // updatedAt: 0
317
- // };
318
- // }
319
- const doc = yield this.transactionModel.findOne({
320
- _id: { $eq: params.id },
321
- typeOf: { $eq: params.typeOf }
322
- }, projection)
323
- .lean() // 2024-08-26~
324
- .exec();
325
- if (doc === null) {
326
- throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} not found`);
327
- }
328
- return doc;
329
- });
289
+ let positiveProjectionFields = AVAILABLE_PROJECT_FIELDS;
290
+ if (Array.isArray(inclusion) && inclusion.length > 0) {
291
+ positiveProjectionFields = positiveProjectionFields.filter((key) => inclusion.includes(key));
292
+ }
293
+ else {
294
+ throw new factory.errors.NotImplemented('inclusion must be specified'); // 2024-08-26~
295
+ }
296
+ const projection = {
297
+ _id: 0,
298
+ id: { $toString: '$_id' },
299
+ ...Object.fromEntries(positiveProjectionFields.map((key) => ([key, 1])))
300
+ };
301
+ // let projection: { [key in (IKeyOfProjection<T> | '__v' | 'createdAt' | 'updatedAt')]?: AnyExpression } = {};
302
+ // if (Array.isArray(inclusion) && inclusion.length > 0) {
303
+ // inclusion.forEach((field) => {
304
+ // projection[field] = 1;
305
+ // });
306
+ // } else {
307
+ // projection = {
308
+ // __v: 0,
309
+ // createdAt: 0,
310
+ // updatedAt: 0
311
+ // };
312
+ // }
313
+ const doc = await this.transactionModel.findOne({
314
+ _id: { $eq: params.id },
315
+ typeOf: { $eq: params.typeOf }
316
+ }, projection)
317
+ .lean() // 2024-08-26~
318
+ .exec();
319
+ if (doc === null) {
320
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} not found`);
321
+ }
322
+ return doc;
330
323
  }
331
324
  /**
332
325
  * 進行中の取引を取得する
333
326
  */
334
- projectFieldsInProgressById(params, inclusion // make required(2024-05-29~)
327
+ async projectFieldsInProgressById(params, inclusion // make required(2024-05-29~)
335
328
  ) {
336
- return __awaiter(this, void 0, void 0, function* () {
337
- let positiveProjectionFields = AVAILABLE_PROJECT_FIELDS;
338
- if (Array.isArray(inclusion) && inclusion.length > 0) {
339
- positiveProjectionFields = positiveProjectionFields.filter((key) => inclusion.includes(key));
340
- }
341
- else {
342
- throw new factory.errors.NotImplemented('inclusion must be specified'); // 2024-08-26~
343
- }
344
- const projection = Object.assign({ _id: 0, id: { $toString: '$_id' } }, Object.fromEntries(positiveProjectionFields.map((key) => ([key, 1]))));
345
- // let projection: { [key in (IKeyOfProjection<T> | '__v' | 'createdAt' | 'updatedAt')]?: ProjectionElementType } = {};
346
- // if (Array.isArray(inclusion) && inclusion.length > 0) {
347
- // inclusion.forEach((field) => {
348
- // projection[field] = 1;
349
- // });
350
- // } else {
351
- // // minimize(2024-05-29~)
352
- // projection = {
353
- // __v: 0,
354
- // createdAt: 0,
355
- // updatedAt: 0,
356
- // tasksExportAction: 0,
357
- // ...{
358
- // tasksExportedAt: 0,
359
- // tasksExportationStatus: 0
360
- // }
361
- // };
362
- // }
363
- const filter = {
364
- _id: { $eq: params.id },
365
- typeOf: { $eq: params.typeOf },
366
- status: { $eq: factory.transactionStatusType.InProgress },
367
- // expiresを条件に追加(2023-05-12~),
368
- expires: { $gt: new Date() }
369
- };
370
- const doc = yield this.transactionModel.findOne(filter, projection)
371
- .lean() // 2024-08-26~
372
- .exec();
373
- if (doc === null) {
374
- throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
375
- }
376
- return doc;
377
- });
329
+ let positiveProjectionFields = AVAILABLE_PROJECT_FIELDS;
330
+ if (Array.isArray(inclusion) && inclusion.length > 0) {
331
+ positiveProjectionFields = positiveProjectionFields.filter((key) => inclusion.includes(key));
332
+ }
333
+ else {
334
+ throw new factory.errors.NotImplemented('inclusion must be specified'); // 2024-08-26~
335
+ }
336
+ const projection = {
337
+ _id: 0,
338
+ id: { $toString: '$_id' },
339
+ ...Object.fromEntries(positiveProjectionFields.map((key) => ([key, 1])))
340
+ };
341
+ // let projection: { [key in (IKeyOfProjection<T> | '__v' | 'createdAt' | 'updatedAt')]?: ProjectionElementType } = {};
342
+ // if (Array.isArray(inclusion) && inclusion.length > 0) {
343
+ // inclusion.forEach((field) => {
344
+ // projection[field] = 1;
345
+ // });
346
+ // } else {
347
+ // // minimize(2024-05-29~)
348
+ // projection = {
349
+ // __v: 0,
350
+ // createdAt: 0,
351
+ // updatedAt: 0,
352
+ // tasksExportAction: 0,
353
+ // ...{
354
+ // tasksExportedAt: 0,
355
+ // tasksExportationStatus: 0
356
+ // }
357
+ // };
358
+ // }
359
+ const filter = {
360
+ _id: { $eq: params.id },
361
+ typeOf: { $eq: params.typeOf },
362
+ status: { $eq: factory.transactionStatusType.InProgress },
363
+ // expiresを条件に追加(2023-05-12~),
364
+ expires: { $gt: new Date() }
365
+ };
366
+ const doc = await this.transactionModel.findOne(filter, projection)
367
+ .lean() // 2024-08-26~
368
+ .exec();
369
+ if (doc === null) {
370
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
371
+ }
372
+ return doc;
378
373
  }
379
374
  /**
380
375
  * 進行中取引に保管された採用済決済方法を検索する
381
376
  */
382
- findInProgressPaymentMethodId(params) {
383
- return __awaiter(this, void 0, void 0, function* () {
384
- const doc = yield this.transactionModel.findOne({
385
- _id: { $eq: params.id },
386
- typeOf: { $eq: factory.transactionType.PlaceOrder },
387
- status: { $eq: factory.transactionStatusType.InProgress }
388
- }, { 'object.paymentMethods': 1 })
389
- .lean() // 2024-08-26~
390
- .exec();
391
- if (doc === null) {
392
- throw new factory.errors.NotFound(this.transactionModel.modelName, `${factory.transactionType.PlaceOrder} ${factory.transactionStatusType.InProgress} not found`);
393
- }
394
- return doc.object.paymentMethods;
395
- });
377
+ async findInProgressPaymentMethodId(params) {
378
+ const doc = await this.transactionModel.findOne({
379
+ _id: { $eq: params.id },
380
+ typeOf: { $eq: factory.transactionType.PlaceOrder },
381
+ status: { $eq: factory.transactionStatusType.InProgress }
382
+ }, { 'object.paymentMethods': 1 })
383
+ .lean() // 2024-08-26~
384
+ .exec();
385
+ if (doc === null) {
386
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${factory.transactionType.PlaceOrder} ${factory.transactionStatusType.InProgress} not found`);
387
+ }
388
+ return doc.object.paymentMethods;
396
389
  }
397
390
  /**
398
391
  * 取引の注文番号を検索する
399
392
  */
400
- findInProgressOrderNumberById(params) {
401
- return __awaiter(this, void 0, void 0, function* () {
402
- const doc = yield this.transactionModel.findOne({
403
- _id: { $eq: params.id },
404
- typeOf: { $eq: factory.transactionType.PlaceOrder },
405
- status: { $eq: factory.transactionStatusType.InProgress }
406
- }, { 'object.orderNumber': 1 })
407
- .lean() // 2024-08-26~
408
- .exec();
409
- if (doc === null) {
410
- throw new factory.errors.NotFound(this.transactionModel.modelName, `${factory.transactionType.PlaceOrder} ${factory.transactionStatusType.InProgress} not found`);
411
- }
412
- return doc.object.orderNumber;
413
- });
393
+ async findInProgressOrderNumberById(params) {
394
+ const doc = await this.transactionModel.findOne({
395
+ _id: { $eq: params.id },
396
+ typeOf: { $eq: factory.transactionType.PlaceOrder },
397
+ status: { $eq: factory.transactionStatusType.InProgress }
398
+ }, { 'object.orderNumber': 1 })
399
+ .lean() // 2024-08-26~
400
+ .exec();
401
+ if (doc === null) {
402
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${factory.transactionType.PlaceOrder} ${factory.transactionStatusType.InProgress} not found`);
403
+ }
404
+ return doc.object.orderNumber;
414
405
  }
415
406
  /**
416
407
  * 取引の確認番号を検索する
417
408
  */
418
- findInProgressConfirmationNumberById(params) {
419
- return __awaiter(this, void 0, void 0, function* () {
420
- const doc = yield this.transactionModel.findOne({
421
- _id: { $eq: params.id },
422
- typeOf: { $eq: factory.transactionType.PlaceOrder },
423
- status: { $in: params.status.$in }
424
- }, { 'object.confirmationNumber': 1 })
425
- .lean() // 2024-08-26~
426
- .exec();
427
- if (doc === null) {
428
- throw new factory.errors.NotFound(this.transactionModel.modelName, `${factory.transactionType.PlaceOrder} ${params.status.$in.join(' or ')} not found`);
429
- }
430
- return doc.object.confirmationNumber;
431
- });
409
+ async findInProgressConfirmationNumberById(params) {
410
+ const doc = await this.transactionModel.findOne({
411
+ _id: { $eq: params.id },
412
+ typeOf: { $eq: factory.transactionType.PlaceOrder },
413
+ status: { $in: params.status.$in }
414
+ }, { 'object.confirmationNumber': 1 })
415
+ .lean() // 2024-08-26~
416
+ .exec();
417
+ if (doc === null) {
418
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${factory.transactionType.PlaceOrder} ${params.status.$in.join(' or ')} not found`);
419
+ }
420
+ return doc.object.confirmationNumber;
432
421
  }
433
422
  /**
434
423
  * 取引進行者プロフィールを更新
435
424
  */
436
- updateAgent(params) {
437
- return __awaiter(this, void 0, void 0, function* () {
438
- var _a, _b;
439
- const doc = yield this.transactionModel.findOneAndUpdate({
440
- _id: { $eq: params.id },
441
- typeOf: { $eq: params.typeOf },
442
- status: { $eq: factory.transactionStatusType.InProgress }
443
- }, {
444
- $set: Object.assign({ 'agent.id': params.agent.id }, (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)
445
- }, {
446
- projection: { _id: 1 }
447
- })
448
- .lean()
449
- .exec();
450
- if (doc === null) {
451
- throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
425
+ async updateAgent(params) {
426
+ const doc = await this.transactionModel.findOneAndUpdate({
427
+ _id: { $eq: params.id },
428
+ typeOf: { $eq: params.typeOf },
429
+ status: { $eq: factory.transactionStatusType.InProgress }
430
+ }, {
431
+ $set: {
432
+ 'agent.id': params.agent.id,
433
+ // ...(typeof params.agent.name === 'string') ? { 'agent.name': params.agent.name } : undefined,
434
+ ...(typeof params.object?.customer?.typeOf === 'string') ? { 'object.customer': params.object.customer } : undefined
452
435
  }
453
- });
436
+ }, {
437
+ projection: { _id: 1 }
438
+ })
439
+ .lean()
440
+ .exec();
441
+ if (doc === null) {
442
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
443
+ }
454
444
  }
455
445
  /**
456
446
  * 取引期限変更
457
447
  */
458
- updateExpires(params) {
459
- return __awaiter(this, void 0, void 0, function* () {
460
- const doc = yield this.transactionModel.findOneAndUpdate({
461
- _id: { $eq: params.id },
462
- typeOf: { $eq: params.typeOf },
463
- status: { $eq: factory.transactionStatusType.InProgress }
464
- }, {
465
- $set: {
466
- expires: params.expires
467
- }
468
- }, {
469
- projection: { _id: 1 }
470
- })
471
- .lean()
472
- .exec();
473
- if (doc === null) {
474
- throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
448
+ async updateExpires(params) {
449
+ const doc = await this.transactionModel.findOneAndUpdate({
450
+ _id: { $eq: params.id },
451
+ typeOf: { $eq: params.typeOf },
452
+ status: { $eq: factory.transactionStatusType.InProgress }
453
+ }, {
454
+ $set: {
455
+ expires: params.expires
475
456
  }
476
- });
457
+ }, {
458
+ projection: { _id: 1 }
459
+ })
460
+ .lean()
461
+ .exec();
462
+ if (doc === null) {
463
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
464
+ }
477
465
  }
478
466
  /**
479
467
  * 取引オブジェクトを更新
480
468
  * 注文名称など
481
469
  */
482
- updateObject(params) {
483
- return __awaiter(this, void 0, void 0, function* () {
484
- var _a;
485
- const doc = yield this.transactionModel.findOneAndUpdate({
486
- _id: { $eq: params.id },
487
- typeOf: { $eq: params.typeOf },
488
- status: { $eq: factory.transactionStatusType.InProgress }
489
- }, {
490
- $set: Object.assign({}, (typeof ((_a = params.object) === null || _a === void 0 ? void 0 : _a.name) === 'string') ? { 'object.name': params.object.name } : undefined)
491
- }, {
492
- projection: { _id: 1 }
493
- })
494
- .lean()
495
- .exec();
496
- if (doc === null) {
497
- throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
470
+ async updateObject(params) {
471
+ const doc = await this.transactionModel.findOneAndUpdate({
472
+ _id: { $eq: params.id },
473
+ typeOf: { $eq: params.typeOf },
474
+ status: { $eq: factory.transactionStatusType.InProgress }
475
+ }, {
476
+ $set: {
477
+ ...(typeof params.object?.name === 'string') ? { 'object.name': params.object.name } : undefined
498
478
  }
499
- });
479
+ }, {
480
+ projection: { _id: 1 }
481
+ })
482
+ .lean()
483
+ .exec();
484
+ if (doc === null) {
485
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
486
+ }
500
487
  }
501
488
  /**
502
489
  * 取引を確定する
503
490
  */
504
- confirm(params) {
505
- return __awaiter(this, void 0, void 0, function* () {
506
- const endDate = new Date();
507
- const doc = yield this.transactionModel.findOneAndUpdate({
508
- _id: { $eq: params.id },
509
- typeOf: { $eq: params.typeOf },
510
- status: { $eq: factory.transactionStatusType.InProgress },
511
- expires: { $gt: endDate } // add expires(2025-02-27~)
512
- }, {
513
- status: factory.transactionStatusType.Confirmed, // ステータス変更
514
- endDate,
515
- // 'object.authorizeActions': params.authorizeActions,
516
- result: params.result, // resultを更新
517
- potentialActions: params.potentialActions // resultを更新
518
- }, {
519
- new: true,
520
- projection: { _id: 1 }
521
- })
522
- .lean()
523
- .exec();
524
- // NotFoundであれば取引状態確認
525
- if (doc === null) {
526
- const { expires, status } = yield this.projectFieldsById({ typeOf: params.typeOf, id: params.id }, ['expires', 'status']);
527
- if (status === factory.transactionStatusType.Confirmed) {
528
- // すでに確定済の場合スルー
529
- }
530
- else if (status === factory.transactionStatusType.Expired) {
531
- throw new factory.errors.Argument('Transaction id', 'Already expired');
532
- }
533
- else if (status === factory.transactionStatusType.Canceled) {
534
- throw new factory.errors.Argument('Transaction id', 'Already canceled');
535
- }
536
- else {
537
- if (moment(expires)
538
- .isSameOrBefore(moment(endDate))) {
539
- throw new factory.errors.Argument('Transaction id', 'potentially expired');
540
- }
541
- throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
491
+ async confirm(params) {
492
+ const endDate = new Date();
493
+ const doc = await this.transactionModel.findOneAndUpdate({
494
+ _id: { $eq: params.id },
495
+ typeOf: { $eq: params.typeOf },
496
+ status: { $eq: factory.transactionStatusType.InProgress },
497
+ expires: { $gt: endDate } // add expires(2025-02-27~)
498
+ }, {
499
+ status: factory.transactionStatusType.Confirmed, // ステータス変更
500
+ endDate,
501
+ // 'object.authorizeActions': params.authorizeActions,
502
+ result: params.result, // resultを更新
503
+ potentialActions: params.potentialActions // resultを更新
504
+ }, {
505
+ new: true,
506
+ projection: { _id: 1 }
507
+ })
508
+ .lean()
509
+ .exec();
510
+ // NotFoundであれば取引状態確認
511
+ if (doc === null) {
512
+ const { expires, status } = await this.projectFieldsById({ typeOf: params.typeOf, id: params.id }, ['expires', 'status']);
513
+ if (status === factory.transactionStatusType.Confirmed) {
514
+ // すでに確定済の場合スルー
515
+ }
516
+ else if (status === factory.transactionStatusType.Expired) {
517
+ throw new factory.errors.Argument('Transaction id', 'Already expired');
518
+ }
519
+ else if (status === factory.transactionStatusType.Canceled) {
520
+ throw new factory.errors.Argument('Transaction id', 'Already canceled');
521
+ }
522
+ else {
523
+ if (moment(expires)
524
+ .isSameOrBefore(moment(endDate))) {
525
+ throw new factory.errors.Argument('Transaction id', 'potentially expired');
542
526
  }
527
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
543
528
  }
544
- transaction_1.transactionEventEmitter.emitTransactionStatusChanged({
545
- id: params.id,
546
- typeOf: params.typeOf,
547
- status: factory.transactionStatusType.Confirmed
548
- });
529
+ }
530
+ transaction_1.transactionEventEmitter.emitTransactionStatusChanged({
531
+ id: params.id,
532
+ typeOf: params.typeOf,
533
+ status: factory.transactionStatusType.Confirmed
549
534
  });
550
535
  }
551
- countPotentiallyExportTasks(params) {
552
- return __awaiter(this, void 0, void 0, function* () {
553
- const { endDate, limit } = params;
554
- const endDateLt = endDate === null || endDate === void 0 ? void 0 : endDate.$lt;
555
- if (!(endDateLt instanceof Date)) {
556
- throw new factory.errors.Argument('endDate.$lt', 'must be Date');
557
- }
558
- const query = this.transactionModel.countDocuments({
559
- status: {
560
- $in: [
561
- factory.transactionStatusType.Canceled,
562
- factory.transactionStatusType.Confirmed,
563
- factory.transactionStatusType.Expired
564
- ]
565
- },
566
- 'tasksExportAction.actionStatus': {
567
- $exists: true,
568
- $eq: factory.actionStatusType.PotentialActionStatus
569
- },
570
- endDate: { $exists: true, $lt: endDateLt }
571
- });
572
- if (typeof limit === 'number' && limit >= 0) {
573
- query.limit(limit);
574
- }
575
- const count = yield query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
576
- .exec();
577
- return { count };
536
+ async countPotentiallyExportTasks(params) {
537
+ const { endDate, limit } = params;
538
+ const endDateLt = endDate?.$lt;
539
+ if (!(endDateLt instanceof Date)) {
540
+ throw new factory.errors.Argument('endDate.$lt', 'must be Date');
541
+ }
542
+ const query = this.transactionModel.countDocuments({
543
+ status: {
544
+ $in: [
545
+ factory.transactionStatusType.Canceled,
546
+ factory.transactionStatusType.Confirmed,
547
+ factory.transactionStatusType.Expired
548
+ ]
549
+ },
550
+ 'tasksExportAction.actionStatus': {
551
+ $exists: true,
552
+ $eq: factory.actionStatusType.PotentialActionStatus
553
+ },
554
+ endDate: { $exists: true, $lt: endDateLt }
578
555
  });
556
+ if (typeof limit === 'number' && limit >= 0) {
557
+ query.limit(limit);
558
+ }
559
+ const count = await query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
560
+ .exec();
561
+ return { count };
579
562
  }
580
563
  /**
581
564
  * タスク未エクスポートの取引をひとつ取得してエクスポートを開始する
582
565
  */
583
- startExportTasks(params) {
584
- return __awaiter(this, void 0, void 0, function* () {
585
- var _a, _b, _c, _d;
586
- const statusEq = (_a = params.status) === null || _a === void 0 ? void 0 : _a.$eq;
587
- const endDateLt = (_b = params.endDate) === null || _b === void 0 ? void 0 : _b.$lt;
588
- if (typeof statusEq === 'string') {
589
- switch (statusEq) {
590
- case factory.transactionStatusType.InProgress:
591
- throw new factory.errors.NotImplemented(`status "${params.status}" not implemented on startExportTasks`);
592
- default:
593
- // no op
594
- }
595
- }
596
- if (!(endDateLt instanceof Date)) {
597
- throw new factory.errors.Argument('endDate.$lt', 'must be Date');
566
+ async startExportTasks(params) {
567
+ const statusEq = params.status?.$eq;
568
+ const endDateLt = params.endDate?.$lt;
569
+ if (typeof statusEq === 'string') {
570
+ switch (statusEq) {
571
+ case factory.transactionStatusType.InProgress:
572
+ throw new factory.errors.NotImplemented(`status "${params.status}" not implemented on startExportTasks`);
573
+ default:
574
+ // no op
598
575
  }
599
- const query = this.transactionModel.findOneAndUpdate(Object.assign({
600
- // ...(Array.isArray(typeOfIn)) ? { typeOf: { $in: typeOfIn } } : undefined,
601
- status: Object.assign({}, (typeof statusEq === 'string')
576
+ }
577
+ if (!(endDateLt instanceof Date)) {
578
+ throw new factory.errors.Argument('endDate.$lt', 'must be Date');
579
+ }
580
+ const query = this.transactionModel.findOneAndUpdate({
581
+ // ...(Array.isArray(typeOfIn)) ? { typeOf: { $in: typeOfIn } } : undefined,
582
+ status: {
583
+ ...(typeof statusEq === 'string')
602
584
  ? { $eq: statusEq }
603
585
  : {
604
586
  $in: [
@@ -606,31 +588,35 @@ class TransactionRepo {
606
588
  factory.transactionStatusType.Confirmed,
607
589
  factory.transactionStatusType.Expired
608
590
  ]
609
- }), 'tasksExportAction.actionStatus': {
610
- $exists: true,
611
- $eq: factory.actionStatusType.PotentialActionStatus
612
- }, endDate: { $exists: true, $lt: endDateLt } }, (typeof params.id === 'string') ? { _id: { $eq: params.id } } : undefined), {
613
- 'tasksExportAction.actionStatus': factory.actionStatusType.ActiveActionStatus,
614
- 'tasksExportAction.agent': { name: params.tasksExportAction.agent.name },
615
- 'tasksExportAction.startDate': new Date()
616
- }, {
617
- new: true,
618
- projection: {
619
- // _id: 1,
620
- _id: 0,
621
- id: { $toString: '$_id' },
622
- typeOf: 1
623
- }
624
- });
625
- if (typeof ((_c = params.sort) === null || _c === void 0 ? void 0 : _c.endDate) === 'number' || typeof ((_d = params.sort) === null || _d === void 0 ? void 0 : _d.startDate) === 'number') {
626
- query.sort(params.sort);
591
+ }
592
+ },
593
+ 'tasksExportAction.actionStatus': {
594
+ $exists: true,
595
+ $eq: factory.actionStatusType.PotentialActionStatus
596
+ },
597
+ endDate: { $exists: true, $lt: endDateLt },
598
+ ...(typeof params.id === 'string') ? { _id: { $eq: params.id } } : undefined
599
+ }, {
600
+ 'tasksExportAction.actionStatus': factory.actionStatusType.ActiveActionStatus,
601
+ 'tasksExportAction.agent': { name: params.tasksExportAction.agent.name },
602
+ 'tasksExportAction.startDate': new Date()
603
+ }, {
604
+ new: true,
605
+ projection: {
606
+ // _id: 1,
607
+ _id: 0,
608
+ id: { $toString: '$_id' },
609
+ typeOf: 1
627
610
  }
628
- return query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
629
- .lean() // 2024-08-26~
630
- .exec()
631
- // tslint:disable-next-line:no-null-keyword
632
- .then((doc) => (doc === null) ? null : doc);
633
611
  });
612
+ if (typeof params.sort?.endDate === 'number' || typeof params.sort?.startDate === 'number') {
613
+ query.sort(params.sort);
614
+ }
615
+ return query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
616
+ .lean() // 2024-08-26~
617
+ .exec()
618
+ // tslint:disable-next-line:no-null-keyword
619
+ .then((doc) => (doc === null) ? null : doc);
634
620
  }
635
621
  // discontinue(2025-03-10~)
636
622
  // public async reexportTasksByExportAction(params: {
@@ -687,390 +673,366 @@ class TransactionRepo {
687
673
  * PotentialActionStatusに変更する
688
674
  * 2025-03-10~
689
675
  */
690
- reExportAction(params) {
691
- return __awaiter(this, void 0, void 0, function* () {
692
- const { startDate } = params;
693
- if (!(startDate.$lt instanceof Date)) {
694
- throw new factory.errors.Argument('startDate.$lt', 'must be Date');
676
+ async reExportAction(params) {
677
+ const { startDate } = params;
678
+ if (!(startDate.$lt instanceof Date)) {
679
+ throw new factory.errors.Argument('startDate.$lt', 'must be Date');
680
+ }
681
+ return this.transactionModel.updateMany({
682
+ 'tasksExportAction.actionStatus': {
683
+ $exists: true,
684
+ $eq: factory.actionStatusType.ActiveActionStatus
685
+ },
686
+ 'tasksExportAction.startDate': {
687
+ $exists: true,
688
+ $lt: startDate.$lt
695
689
  }
696
- return this.transactionModel.updateMany({
697
- 'tasksExportAction.actionStatus': {
698
- $exists: true,
699
- $eq: factory.actionStatusType.ActiveActionStatus
700
- },
701
- 'tasksExportAction.startDate': {
702
- $exists: true,
703
- $lt: startDate.$lt
704
- }
705
- }, {
706
- $set: {
707
- tasksExportAction: {
708
- actionStatus: factory.actionStatusType.PotentialActionStatus
709
- }
690
+ }, {
691
+ $set: {
692
+ tasksExportAction: {
693
+ actionStatus: factory.actionStatusType.PotentialActionStatus
710
694
  }
711
- })
712
- .exec();
713
- });
695
+ }
696
+ })
697
+ .exec();
714
698
  }
715
699
  /**
716
700
  * タスクエクスポートの遅延している取引について明示的にemitTransactionStatusChangedを実行する
717
701
  */
718
- exportTasksMany(params) {
719
- return __awaiter(this, void 0, void 0, function* () {
720
- const delayedTransactions = yield this.transactionModel.find({
721
- status: { $in: params.status.$in },
722
- 'tasksExportAction.actionStatus': {
723
- $exists: true,
724
- $eq: factory.actionStatusType.PotentialActionStatus
725
- },
726
- endDate: {
727
- $exists: true,
728
- $lt: moment(params.now)
729
- .add(-params.delayInSeconds, 'seconds')
730
- .toDate()
731
- }
732
- })
733
- .select({
734
- _id: 0,
735
- id: { $toString: '$_id' },
736
- typeOf: 1,
737
- status: 1
738
- })
739
- .limit(params.limit)
740
- .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
741
- .lean()
742
- .exec();
743
- if (delayedTransactions.length > 0) {
744
- delayedTransactions.forEach((delayedTransaction) => {
745
- transaction_1.transactionEventEmitter.emitTransactionStatusChanged({
746
- id: delayedTransaction.id,
747
- typeOf: delayedTransaction.typeOf,
748
- status: delayedTransaction.status
749
- });
750
- });
702
+ async exportTasksMany(params) {
703
+ const delayedTransactions = await this.transactionModel.find({
704
+ status: { $in: params.status.$in },
705
+ 'tasksExportAction.actionStatus': {
706
+ $exists: true,
707
+ $eq: factory.actionStatusType.PotentialActionStatus
708
+ },
709
+ endDate: {
710
+ $exists: true,
711
+ $lt: moment(params.now)
712
+ .add(-params.delayInSeconds, 'seconds')
713
+ .toDate()
751
714
  }
752
- return delayedTransactions;
753
- });
715
+ })
716
+ .select({
717
+ _id: 0,
718
+ id: { $toString: '$_id' },
719
+ typeOf: 1,
720
+ status: 1
721
+ })
722
+ .limit(params.limit)
723
+ .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
724
+ .lean()
725
+ .exec();
726
+ if (delayedTransactions.length > 0) {
727
+ delayedTransactions.forEach((delayedTransaction) => {
728
+ transaction_1.transactionEventEmitter.emitTransactionStatusChanged({
729
+ id: delayedTransaction.id,
730
+ typeOf: delayedTransaction.typeOf,
731
+ status: delayedTransaction.status
732
+ });
733
+ });
734
+ }
735
+ return delayedTransactions;
754
736
  }
755
737
  /**
756
738
  * set task status exported by transaction id
757
739
  * IDでタスクをエクスポート済に変更する
758
740
  */
759
- setTasksExportedById(params) {
760
- return __awaiter(this, void 0, void 0, function* () {
761
- const endDate = new Date();
762
- yield this.transactionModel.updateOne({
763
- _id: { $eq: params.id },
764
- // remove dependency on tasksExportationStatus(2024-06-17~)
765
- // tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Exporting }
766
- 'tasksExportAction.actionStatus': {
767
- $exists: true,
768
- $eq: factory.actionStatusType.ActiveActionStatus
769
- }
770
- }, {
771
- // tasksExportationStatus: factory.transactionTasksExportationStatus.Exported, // discontinue(2024-06-20~)
772
- // tasksExportedAt: endDate, // discontinue(2024-06-20~)
773
- 'tasksExportAction.actionStatus': factory.actionStatusType.CompletedActionStatus,
774
- 'tasksExportAction.endDate': endDate
775
- })
776
- .exec();
777
- });
741
+ async setTasksExportedById(params) {
742
+ const endDate = new Date();
743
+ await this.transactionModel.updateOne({
744
+ _id: { $eq: params.id },
745
+ // remove dependency on tasksExportationStatus(2024-06-17~)
746
+ // tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Exporting }
747
+ 'tasksExportAction.actionStatus': {
748
+ $exists: true,
749
+ $eq: factory.actionStatusType.ActiveActionStatus
750
+ }
751
+ }, {
752
+ // tasksExportationStatus: factory.transactionTasksExportationStatus.Exported, // discontinue(2024-06-20~)
753
+ // tasksExportedAt: endDate, // discontinue(2024-06-20~)
754
+ 'tasksExportAction.actionStatus': factory.actionStatusType.CompletedActionStatus,
755
+ 'tasksExportAction.endDate': endDate
756
+ })
757
+ .exec();
778
758
  }
779
759
  /**
780
760
  * add(2025-03-13~)
781
761
  */
782
- countPotentiallyExpired(params) {
783
- return __awaiter(this, void 0, void 0, function* () {
784
- const { expires, limit } = params;
785
- const query = this.transactionModel.countDocuments({
786
- status: { $eq: factory.transactionStatusType.InProgress },
787
- expires: { $lt: expires.$lt }
788
- });
789
- if (typeof limit === 'number' && limit >= 0) {
790
- query.limit(limit);
791
- }
792
- const count = yield query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
793
- .exec();
794
- return { count };
762
+ async countPotentiallyExpired(params) {
763
+ const { expires, limit } = params;
764
+ const query = this.transactionModel.countDocuments({
765
+ status: { $eq: factory.transactionStatusType.InProgress },
766
+ expires: { $lt: expires.$lt }
795
767
  });
768
+ if (typeof limit === 'number' && limit >= 0) {
769
+ query.limit(limit);
770
+ }
771
+ const count = await query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
772
+ .exec();
773
+ return { count };
796
774
  }
797
775
  /**
798
776
  * add(2025-03-03~)
799
777
  */
800
- makeOneExpiredIfExists(params) {
801
- return __awaiter(this, void 0, void 0, function* () {
802
- const endDate = new Date();
803
- const sort = {
804
- expires: factory.sortType.Ascending
805
- };
806
- const doc = yield this.transactionModel.findOneAndUpdate({
807
- status: { $eq: factory.transactionStatusType.InProgress },
808
- expires: { $lt: params.expires.$lt }
809
- }, {
810
- status: factory.transactionStatusType.Expired,
811
- endDate
812
- }, {
813
- new: true,
814
- projection: {
815
- _id: 0,
816
- id: { $toString: '$_id' },
817
- typeOf: 1
818
- }
819
- })
820
- .sort(sort)
821
- .lean()
822
- .exec();
823
- if (doc === null) {
824
- // no op
825
- }
826
- else {
827
- transaction_1.transactionEventEmitter.emitTransactionStatusChanged({
828
- id: doc.id,
829
- typeOf: doc.typeOf,
830
- status: factory.transactionStatusType.Expired
831
- });
832
- return doc;
778
+ async makeOneExpiredIfExists(params) {
779
+ const endDate = new Date();
780
+ const sort = {
781
+ expires: factory.sortType.Ascending
782
+ };
783
+ const doc = await this.transactionModel.findOneAndUpdate({
784
+ status: { $eq: factory.transactionStatusType.InProgress },
785
+ expires: { $lt: params.expires.$lt }
786
+ }, {
787
+ status: factory.transactionStatusType.Expired,
788
+ endDate
789
+ }, {
790
+ new: true,
791
+ projection: {
792
+ _id: 0,
793
+ id: { $toString: '$_id' },
794
+ typeOf: 1
833
795
  }
834
- });
796
+ })
797
+ .sort(sort)
798
+ .lean()
799
+ .exec();
800
+ if (doc === null) {
801
+ // no op
802
+ }
803
+ else {
804
+ transaction_1.transactionEventEmitter.emitTransactionStatusChanged({
805
+ id: doc.id,
806
+ typeOf: doc.typeOf,
807
+ status: factory.transactionStatusType.Expired
808
+ });
809
+ return doc;
810
+ }
835
811
  }
836
812
  /**
837
813
  * 取引を期限切れにする
838
814
  */
839
- makeExpired(params) {
840
- return __awaiter(this, void 0, void 0, function* () {
841
- if (typeof params.limit !== 'number' || params.limit === 0) {
842
- throw new factory.errors.ArgumentNull('limit');
843
- }
844
- const sort = {
845
- expires: factory.sortType.Ascending
846
- };
847
- // IDをemitしたいのでまずリスト検索(2023-04-27~)
848
- const expiringTransactions = yield this.transactionModel.find({
815
+ async makeExpired(params) {
816
+ if (typeof params.limit !== 'number' || params.limit === 0) {
817
+ throw new factory.errors.ArgumentNull('limit');
818
+ }
819
+ const sort = {
820
+ expires: factory.sortType.Ascending
821
+ };
822
+ // IDをemitしたいのでまずリスト検索(2023-04-27~)
823
+ const expiringTransactions = await this.transactionModel.find({
824
+ status: { $eq: factory.transactionStatusType.InProgress },
825
+ expires: { $lt: params.expires.$lt }
826
+ })
827
+ .select({
828
+ _id: 0,
829
+ id: { $toString: '$_id' },
830
+ typeOf: 1
831
+ })
832
+ .limit(params.limit)
833
+ .sort(sort) // sort(2025-03-03~)
834
+ .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
835
+ .lean()
836
+ .exec();
837
+ if (expiringTransactions.length > 0) {
838
+ // ステータスと期限を見て更新
839
+ await this.transactionModel.updateMany({
840
+ _id: { $in: expiringTransactions.map((t) => t.id) },
849
841
  status: { $eq: factory.transactionStatusType.InProgress },
850
842
  expires: { $lt: params.expires.$lt }
843
+ }, {
844
+ status: factory.transactionStatusType.Expired,
845
+ endDate: new Date()
851
846
  })
852
- .select({
853
- _id: 0,
854
- id: { $toString: '$_id' },
855
- typeOf: 1
856
- })
857
- .limit(params.limit)
858
- .sort(sort) // sort(2025-03-03~)
859
- .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
860
- .lean()
861
847
  .exec();
862
- if (expiringTransactions.length > 0) {
863
- // ステータスと期限を見て更新
864
- yield this.transactionModel.updateMany({
865
- _id: { $in: expiringTransactions.map((t) => t.id) },
866
- status: { $eq: factory.transactionStatusType.InProgress },
867
- expires: { $lt: params.expires.$lt }
868
- }, {
869
- status: factory.transactionStatusType.Expired,
870
- endDate: new Date()
871
- })
872
- .exec();
873
- expiringTransactions.forEach((expiringTransaction) => {
874
- transaction_1.transactionEventEmitter.emitTransactionStatusChanged({
875
- id: expiringTransaction.id,
876
- typeOf: expiringTransaction.typeOf,
877
- status: factory.transactionStatusType.Expired
878
- });
848
+ expiringTransactions.forEach((expiringTransaction) => {
849
+ transaction_1.transactionEventEmitter.emitTransactionStatusChanged({
850
+ id: expiringTransaction.id,
851
+ typeOf: expiringTransaction.typeOf,
852
+ status: factory.transactionStatusType.Expired
879
853
  });
880
- }
881
- return expiringTransactions;
882
- });
854
+ });
855
+ }
856
+ return expiringTransactions;
883
857
  }
884
858
  /**
885
859
  * 取引を中止する
886
860
  */
887
- cancel(params) {
888
- return __awaiter(this, void 0, void 0, function* () {
889
- const endDate = new Date();
890
- // 進行中ステータスの取引を中止する
891
- const doc = yield this.transactionModel.findOneAndUpdate({
892
- typeOf: params.typeOf,
893
- _id: params.id,
894
- status: factory.transactionStatusType.InProgress
895
- }, {
896
- status: factory.transactionStatusType.Canceled,
897
- endDate: endDate
898
- }, {
899
- new: true,
900
- projection: { _id: 1 }
901
- })
902
- .lean()
903
- .exec();
904
- // NotFoundであれば取引状態確認
905
- if (doc === null) {
906
- const { status } = yield this.projectFieldsById(params, ['status']);
907
- if (status === factory.transactionStatusType.Canceled) {
908
- // すでに中止済の場合スルー
909
- }
910
- else if (status === factory.transactionStatusType.Expired) {
911
- throw new factory.errors.Argument('Transaction id', 'Transaction already expired');
912
- }
913
- else if (status === factory.transactionStatusType.Confirmed) {
914
- throw new factory.errors.Argument('Transaction id', 'Confirmed transaction unable to cancel');
915
- }
916
- else {
917
- throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
918
- }
861
+ async cancel(params) {
862
+ const endDate = new Date();
863
+ // 進行中ステータスの取引を中止する
864
+ const doc = await this.transactionModel.findOneAndUpdate({
865
+ typeOf: params.typeOf,
866
+ _id: params.id,
867
+ status: factory.transactionStatusType.InProgress
868
+ }, {
869
+ status: factory.transactionStatusType.Canceled,
870
+ endDate: endDate
871
+ }, {
872
+ new: true,
873
+ projection: { _id: 1 }
874
+ })
875
+ .lean()
876
+ .exec();
877
+ // NotFoundであれば取引状態確認
878
+ if (doc === null) {
879
+ const { status } = await this.projectFieldsById(params, ['status']);
880
+ if (status === factory.transactionStatusType.Canceled) {
881
+ // すでに中止済の場合スルー
919
882
  }
920
- transaction_1.transactionEventEmitter.emitTransactionStatusChanged({
921
- id: params.id,
922
- typeOf: params.typeOf,
923
- status: factory.transactionStatusType.Canceled
924
- });
925
- });
926
- }
927
- count(params) {
928
- return __awaiter(this, void 0, void 0, function* () {
929
- const { limit } = params;
930
- const conditions = TransactionRepo.CREATE_MONGO_CONDITIONS(params);
931
- const query = this.transactionModel.countDocuments((conditions.length > 0) ? { $and: conditions } : {});
932
- if (typeof limit === 'number' && limit >= 0) {
933
- query.limit(limit);
883
+ else if (status === factory.transactionStatusType.Expired) {
884
+ throw new factory.errors.Argument('Transaction id', 'Transaction already expired');
934
885
  }
935
- const count = yield query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
936
- .exec();
937
- return { count };
886
+ else if (status === factory.transactionStatusType.Confirmed) {
887
+ throw new factory.errors.Argument('Transaction id', 'Confirmed transaction unable to cancel');
888
+ }
889
+ else {
890
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
891
+ }
892
+ }
893
+ transaction_1.transactionEventEmitter.emitTransactionStatusChanged({
894
+ id: params.id,
895
+ typeOf: params.typeOf,
896
+ status: factory.transactionStatusType.Canceled
938
897
  });
939
898
  }
899
+ async count(params) {
900
+ const { limit } = params;
901
+ const conditions = TransactionRepo.CREATE_MONGO_CONDITIONS(params);
902
+ const query = this.transactionModel.countDocuments((conditions.length > 0) ? { $and: conditions } : {});
903
+ if (typeof limit === 'number' && limit >= 0) {
904
+ query.limit(limit);
905
+ }
906
+ const count = await query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
907
+ .exec();
908
+ return { count };
909
+ }
940
910
  /**
941
911
  * 取引を検索する
942
912
  */
943
- projectFields(params) {
944
- return __awaiter(this, void 0, void 0, function* () {
945
- var _a;
946
- const { inclusion } = params;
947
- const conditions = TransactionRepo.CREATE_MONGO_CONDITIONS(params);
948
- let positiveProjectionFields = AVAILABLE_PROJECT_FIELDS;
949
- if (Array.isArray(inclusion) && inclusion.length > 0) {
950
- positiveProjectionFields = positiveProjectionFields.filter((key) => inclusion.includes(key));
951
- }
952
- const projection = Object.assign({ _id: 0, id: { $toString: '$_id' } }, Object.fromEntries(positiveProjectionFields.map((key) => ([key, 1]))));
953
- // let projection: { [key in (IKeyOfProjection<T> | '__v' | 'createdAt' | 'updatedAt')]?: AnyExpression } = {};
954
- // if (Array.isArray(params.inclusion) && params.inclusion.length > 0) {
955
- // params.inclusion.forEach((field) => {
956
- // projection[field] = 1;
957
- // });
958
- // } else {
959
- // projection = {
960
- // __v: 0,
961
- // createdAt: 0,
962
- // updatedAt: 0
963
- // };
964
- // }
965
- const query = this.transactionModel.find((conditions.length > 0) ? { $and: conditions } : {})
966
- .select(projection);
967
- if (typeof params.limit === 'number' && params.limit > 0) {
968
- const page = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
969
- query.limit(params.limit)
970
- .skip(params.limit * (page - 1));
971
- }
972
- // tslint:disable-next-line:no-single-line-block-comment
973
- /* istanbul ignore else */
974
- if (((_a = params.sort) === null || _a === void 0 ? void 0 : _a.startDate) !== undefined) {
975
- query.sort({ startDate: params.sort.startDate });
976
- }
977
- // const explainResult = await (<any>query).explain();
978
- // console.log(explainResult[0].executionStats.allPlansExecution.map((e: any) => e.executionStages.inputStage));
979
- return query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
980
- .lean() // 2024-08-26~
981
- .exec();
982
- });
913
+ async projectFields(params) {
914
+ const { inclusion } = params;
915
+ const conditions = TransactionRepo.CREATE_MONGO_CONDITIONS(params);
916
+ let positiveProjectionFields = AVAILABLE_PROJECT_FIELDS;
917
+ if (Array.isArray(inclusion) && inclusion.length > 0) {
918
+ positiveProjectionFields = positiveProjectionFields.filter((key) => inclusion.includes(key));
919
+ }
920
+ const projection = {
921
+ _id: 0,
922
+ id: { $toString: '$_id' },
923
+ ...Object.fromEntries(positiveProjectionFields.map((key) => ([key, 1])))
924
+ };
925
+ // let projection: { [key in (IKeyOfProjection<T> | '__v' | 'createdAt' | 'updatedAt')]?: AnyExpression } = {};
926
+ // if (Array.isArray(params.inclusion) && params.inclusion.length > 0) {
927
+ // params.inclusion.forEach((field) => {
928
+ // projection[field] = 1;
929
+ // });
930
+ // } else {
931
+ // projection = {
932
+ // __v: 0,
933
+ // createdAt: 0,
934
+ // updatedAt: 0
935
+ // };
936
+ // }
937
+ const query = this.transactionModel.find((conditions.length > 0) ? { $and: conditions } : {})
938
+ .select(projection);
939
+ if (typeof params.limit === 'number' && params.limit > 0) {
940
+ const page = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
941
+ query.limit(params.limit)
942
+ .skip(params.limit * (page - 1));
943
+ }
944
+ // tslint:disable-next-line:no-single-line-block-comment
945
+ /* istanbul ignore else */
946
+ if (params.sort?.startDate !== undefined) {
947
+ query.sort({ startDate: params.sort.startDate });
948
+ }
949
+ // const explainResult = await (<any>query).explain();
950
+ // console.log(explainResult[0].executionStats.allPlansExecution.map((e: any) => e.executionStages.inputStage));
951
+ return query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
952
+ .lean() // 2024-08-26~
953
+ .exec();
983
954
  }
984
955
  /**
985
956
  * 特定の進行中取引を更新する(汎用)
986
957
  */
987
- findByIdAndUpdateInProgress(params) {
988
- return __awaiter(this, void 0, void 0, function* () {
989
- yield this.transactionModel.findOneAndUpdate({
990
- _id: { $eq: params.id },
991
- status: { $eq: factory.transactionStatusType.InProgress }
992
- }, params.update, {
993
- // new: true,
994
- projection: { _id: 1 }
995
- })
996
- .lean()
997
- .exec()
998
- .then((doc) => {
999
- if (doc === null) {
1000
- throw new factory.errors.ArgumentNull(this.transactionModel.modelName);
1001
- }
1002
- });
958
+ async findByIdAndUpdateInProgress(params) {
959
+ await this.transactionModel.findOneAndUpdate({
960
+ _id: { $eq: params.id },
961
+ status: { $eq: factory.transactionStatusType.InProgress }
962
+ }, params.update, {
963
+ // new: true,
964
+ projection: { _id: 1 }
965
+ })
966
+ .lean()
967
+ .exec()
968
+ .then((doc) => {
969
+ if (doc === null) {
970
+ throw new factory.errors.ArgumentNull(this.transactionModel.modelName);
971
+ }
1003
972
  });
1004
973
  }
1005
- saveOrderNumberIfNotExist(params) {
1006
- return __awaiter(this, void 0, void 0, function* () {
1007
- yield this.transactionModel.updateOne({
1008
- _id: { $eq: params.id },
1009
- status: { $eq: factory.transactionStatusType.InProgress },
1010
- 'object.orderNumber': { $exists: false }
1011
- }, { 'object.orderNumber': params.orderNumber })
1012
- .exec();
1013
- });
974
+ async saveOrderNumberIfNotExist(params) {
975
+ await this.transactionModel.updateOne({
976
+ _id: { $eq: params.id },
977
+ status: { $eq: factory.transactionStatusType.InProgress },
978
+ 'object.orderNumber': { $exists: false }
979
+ }, { 'object.orderNumber': params.orderNumber })
980
+ .exec();
1014
981
  }
1015
- saveConfirmationNumberIfNotExist(params) {
1016
- return __awaiter(this, void 0, void 0, function* () {
1017
- yield this.transactionModel.updateOne({
1018
- _id: { $eq: params.id },
1019
- // status: { $eq: factory.transactionStatusType.InProgress },
1020
- status: { $in: params.status.$in },
1021
- 'object.confirmationNumber': { $exists: false }
1022
- }, { $set: { 'object.confirmationNumber': params.confirmationNumber } })
1023
- .exec();
1024
- });
982
+ async saveConfirmationNumberIfNotExist(params) {
983
+ await this.transactionModel.updateOne({
984
+ _id: { $eq: params.id },
985
+ // status: { $eq: factory.transactionStatusType.InProgress },
986
+ status: { $in: params.status.$in },
987
+ 'object.confirmationNumber': { $exists: false }
988
+ }, { $set: { 'object.confirmationNumber': params.confirmationNumber } })
989
+ .exec();
1025
990
  }
1026
- findByIdAndDelete(params) {
1027
- return __awaiter(this, void 0, void 0, function* () {
1028
- yield this.transactionModel.findByIdAndDelete(params.id)
1029
- .exec();
1030
- });
991
+ async findByIdAndDelete(params) {
992
+ await this.transactionModel.findByIdAndDelete(params.id)
993
+ .exec();
1031
994
  }
1032
- unsetUnnecessaryFields(params) {
1033
- return __awaiter(this, void 0, void 0, function* () {
1034
- return this.transactionModel.updateMany(params.filter, { $unset: params.$unset }, { timestamps: false })
1035
- .exec();
1036
- });
995
+ async unsetUnnecessaryFields(params) {
996
+ return this.transactionModel.updateMany(params.filter, { $unset: params.$unset }, { timestamps: false })
997
+ .exec();
1037
998
  }
1038
999
  /**
1039
1000
  * 終了日時を一定期間過ぎたアクションを削除する
1040
1001
  */
1041
- deleteEndDatePassedCertainPeriod(params) {
1042
- return __awaiter(this, void 0, void 0, function* () {
1043
- return this.transactionModel.deleteMany({
1044
- typeOf: { $eq: params.typeOf },
1045
- // 終了日時を一定期間過ぎたもの
1046
- endDate: {
1047
- $exists: true,
1048
- $gte: params.endDate.$gte,
1049
- $lt: params.endDate.$lt
1050
- }
1051
- })
1052
- .exec();
1053
- });
1002
+ async deleteEndDatePassedCertainPeriod(params) {
1003
+ return this.transactionModel.deleteMany({
1004
+ typeOf: { $eq: params.typeOf },
1005
+ // 終了日時を一定期間過ぎたもの
1006
+ endDate: {
1007
+ $exists: true,
1008
+ $gte: params.endDate.$gte,
1009
+ $lt: params.endDate.$lt
1010
+ }
1011
+ })
1012
+ .exec();
1054
1013
  }
1055
1014
  getCursor(conditions, projection) {
1056
1015
  return this.transactionModel.find(conditions, projection)
1057
1016
  .sort({ startDate: factory.sortType.Descending })
1058
1017
  .cursor();
1059
1018
  }
1060
- aggregatePlaceOrder(params) {
1061
- return __awaiter(this, void 0, void 0, function* () {
1062
- const statuses = yield Promise.all([
1063
- factory.transactionStatusType.Confirmed,
1064
- factory.transactionStatusType.Canceled,
1065
- factory.transactionStatusType.Expired
1066
- ].map((transactionStatus) => __awaiter(this, void 0, void 0, function* () {
1067
- var _a, _b;
1068
- const matchConditions = Object.assign(Object.assign({ startDate: {
1069
- $gte: params.startFrom,
1070
- $lte: params.startThrough
1071
- }, typeOf: { $eq: params.typeOf }, status: { $eq: transactionStatus } }, (typeof ((_b = (_a = params.project) === null || _a === void 0 ? void 0 : _a.id) === null || _b === void 0 ? void 0 : _b.$ne) === 'string')
1019
+ async aggregatePlaceOrder(params) {
1020
+ const statuses = await Promise.all([
1021
+ factory.transactionStatusType.Confirmed,
1022
+ factory.transactionStatusType.Canceled,
1023
+ factory.transactionStatusType.Expired
1024
+ ].map(async (transactionStatus) => {
1025
+ const matchConditions = {
1026
+ startDate: {
1027
+ $gte: params.startFrom,
1028
+ $lte: params.startThrough
1029
+ },
1030
+ typeOf: { $eq: params.typeOf },
1031
+ status: { $eq: transactionStatus },
1032
+ ...(typeof params.project?.id?.$ne === 'string')
1072
1033
  ? { 'project.id': { $ne: params.project.id.$ne } }
1073
- : undefined), (typeof params.clientId === 'string')
1034
+ : undefined,
1035
+ ...(typeof params.clientId === 'string')
1074
1036
  // customerIdentifierAll.push();
1075
1037
  ? {
1076
1038
  'agent.identifier': {
@@ -1078,134 +1040,135 @@ class TransactionRepo {
1078
1040
  $all: [{ name: 'clientId', value: params.clientId }]
1079
1041
  }
1080
1042
  }
1081
- : undefined);
1082
- return this.agggregateByStatus({ matchConditions, status: transactionStatus });
1083
- })));
1084
- return { statuses };
1085
- });
1043
+ : undefined
1044
+ };
1045
+ return this.agggregateByStatus({ matchConditions, status: transactionStatus });
1046
+ }));
1047
+ return { statuses };
1086
1048
  }
1087
1049
  // tslint:disable-next-line:max-func-body-length
1088
- agggregateByStatus(params) {
1089
- return __awaiter(this, void 0, void 0, function* () {
1090
- const matchConditions = params.matchConditions;
1091
- const transactionStatus = params.status;
1092
- const aggregations = yield this.transactionModel.aggregate([
1093
- {
1094
- $match: matchConditions
1095
- },
1096
- {
1097
- $project: {
1098
- duration: { $subtract: ['$endDate', '$startDate'] },
1099
- status: '$status',
1100
- startDate: '$startDate',
1101
- endDate: '$endDate',
1102
- typeOf: '$typeOf'
1103
- }
1104
- },
1105
- {
1106
- $group: {
1107
- _id: '$typeOf',
1108
- transactionCount: { $sum: 1 },
1109
- maxDuration: { $max: '$duration' },
1110
- minDuration: { $min: '$duration' },
1111
- avgDuration: { $avg: '$duration' }
1112
- }
1113
- },
1114
- {
1115
- $project: {
1116
- _id: 0,
1117
- transactionCount: '$transactionCount',
1118
- avgDuration: '$avgDuration',
1119
- maxDuration: '$maxDuration',
1120
- minDuration: '$minDuration'
1121
- }
1050
+ async agggregateByStatus(params) {
1051
+ const matchConditions = params.matchConditions;
1052
+ const transactionStatus = params.status;
1053
+ const aggregations = await this.transactionModel.aggregate([
1054
+ {
1055
+ $match: matchConditions
1056
+ },
1057
+ {
1058
+ $project: {
1059
+ duration: { $subtract: ['$endDate', '$startDate'] },
1060
+ status: '$status',
1061
+ startDate: '$startDate',
1062
+ endDate: '$endDate',
1063
+ typeOf: '$typeOf'
1122
1064
  }
1123
- ])
1124
- .exec();
1125
- // tslint:disable-next-line:no-magic-numbers
1126
- const percents = [50, 95, 99];
1127
- if (aggregations.length === 0) {
1128
- return {
1129
- status: transactionStatus,
1130
- aggregation: {
1131
- transactionCount: 0,
1132
- avgDuration: 0,
1133
- maxDuration: 0,
1134
- minDuration: 0,
1135
- percentilesDuration: percents.map((percent) => {
1136
- return {
1137
- name: String(percent),
1138
- value: 0
1139
- };
1140
- })
1141
- // totalPrice: 0,
1142
- // maxPrice: 0,
1143
- // minPrice: 0,
1144
- // avgPrice: 0
1145
- }
1146
- };
1147
- }
1148
- const ranks4percentile = percents.map((percentile) => {
1149
- return {
1150
- percentile,
1151
- // tslint:disable-next-line:no-magic-numbers
1152
- rank: Math.floor(aggregations[0].transactionCount * percentile / 100)
1153
- };
1154
- });
1155
- const aggregations2 = yield this.transactionModel.aggregate([
1156
- {
1157
- $match: matchConditions
1158
- },
1159
- {
1160
- $project: {
1161
- duration: { $subtract: ['$endDate', '$startDate'] },
1162
- status: '$status',
1163
- startDate: '$startDate',
1164
- endDate: '$endDate',
1165
- typeOf: '$typeOf'
1166
- // result: '$result',
1167
- // price: {
1168
- // $cond: {
1169
- // if: { $isNumber: '$result.order.price' },
1170
- // then: '$result.order.price',
1171
- // else: 0
1172
- // }
1173
- // }
1174
- }
1175
- },
1176
- { $sort: { duration: 1 } },
1177
- {
1178
- $group: {
1179
- _id: '$typeOf',
1180
- durations: { $push: '$duration' }
1181
- // totalPrice: { $sum: '$price' },
1182
- // maxPrice: { $max: '$price' },
1183
- // minPrice: { $min: '$price' },
1184
- // avgPrice: { $avg: '$price' }
1185
- }
1186
- },
1187
- {
1188
- $project: {
1189
- _id: 0,
1190
- percentilesDuration: ranks4percentile.map((rank) => {
1191
- return {
1192
- name: String(rank.percentile),
1193
- value: { $arrayElemAt: ['$durations', rank.rank] }
1194
- };
1195
- })
1196
- // totalPrice: '$totalPrice',
1197
- // maxPrice: '$maxPrice',
1198
- // minPrice: '$minPrice',
1199
- // avgPrice: '$avgPrice'
1200
- }
1065
+ },
1066
+ {
1067
+ $group: {
1068
+ _id: '$typeOf',
1069
+ transactionCount: { $sum: 1 },
1070
+ maxDuration: { $max: '$duration' },
1071
+ minDuration: { $min: '$duration' },
1072
+ avgDuration: { $avg: '$duration' }
1201
1073
  }
1202
- ])
1203
- .exec();
1074
+ },
1075
+ {
1076
+ $project: {
1077
+ _id: 0,
1078
+ transactionCount: '$transactionCount',
1079
+ avgDuration: '$avgDuration',
1080
+ maxDuration: '$maxDuration',
1081
+ minDuration: '$minDuration'
1082
+ }
1083
+ }
1084
+ ])
1085
+ .exec();
1086
+ // tslint:disable-next-line:no-magic-numbers
1087
+ const percents = [50, 95, 99];
1088
+ if (aggregations.length === 0) {
1204
1089
  return {
1205
1090
  status: transactionStatus,
1206
- aggregation: Object.assign(Object.assign({}, aggregations[0]), aggregations2[0])
1091
+ aggregation: {
1092
+ transactionCount: 0,
1093
+ avgDuration: 0,
1094
+ maxDuration: 0,
1095
+ minDuration: 0,
1096
+ percentilesDuration: percents.map((percent) => {
1097
+ return {
1098
+ name: String(percent),
1099
+ value: 0
1100
+ };
1101
+ })
1102
+ // totalPrice: 0,
1103
+ // maxPrice: 0,
1104
+ // minPrice: 0,
1105
+ // avgPrice: 0
1106
+ }
1107
+ };
1108
+ }
1109
+ const ranks4percentile = percents.map((percentile) => {
1110
+ return {
1111
+ percentile,
1112
+ // tslint:disable-next-line:no-magic-numbers
1113
+ rank: Math.floor(aggregations[0].transactionCount * percentile / 100)
1207
1114
  };
1208
1115
  });
1116
+ const aggregations2 = await this.transactionModel.aggregate([
1117
+ {
1118
+ $match: matchConditions
1119
+ },
1120
+ {
1121
+ $project: {
1122
+ duration: { $subtract: ['$endDate', '$startDate'] },
1123
+ status: '$status',
1124
+ startDate: '$startDate',
1125
+ endDate: '$endDate',
1126
+ typeOf: '$typeOf'
1127
+ // result: '$result',
1128
+ // price: {
1129
+ // $cond: {
1130
+ // if: { $isNumber: '$result.order.price' },
1131
+ // then: '$result.order.price',
1132
+ // else: 0
1133
+ // }
1134
+ // }
1135
+ }
1136
+ },
1137
+ { $sort: { duration: 1 } },
1138
+ {
1139
+ $group: {
1140
+ _id: '$typeOf',
1141
+ durations: { $push: '$duration' }
1142
+ // totalPrice: { $sum: '$price' },
1143
+ // maxPrice: { $max: '$price' },
1144
+ // minPrice: { $min: '$price' },
1145
+ // avgPrice: { $avg: '$price' }
1146
+ }
1147
+ },
1148
+ {
1149
+ $project: {
1150
+ _id: 0,
1151
+ percentilesDuration: ranks4percentile.map((rank) => {
1152
+ return {
1153
+ name: String(rank.percentile),
1154
+ value: { $arrayElemAt: ['$durations', rank.rank] }
1155
+ };
1156
+ })
1157
+ // totalPrice: '$totalPrice',
1158
+ // maxPrice: '$maxPrice',
1159
+ // minPrice: '$minPrice',
1160
+ // avgPrice: '$avgPrice'
1161
+ }
1162
+ }
1163
+ ])
1164
+ .exec();
1165
+ return {
1166
+ status: transactionStatus,
1167
+ aggregation: {
1168
+ ...aggregations[0],
1169
+ ...aggregations2[0]
1170
+ }
1171
+ };
1209
1172
  }
1210
1173
  }
1211
1174
  exports.TransactionRepo = TransactionRepo;