@chevre/domain 23.2.0-alpha.61 → 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 (476) 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 +2 -0
  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 +20 -32
  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.js +646 -669
  35. package/lib/chevre/repo/eventOffer.js +122 -125
  36. package/lib/chevre/repo/eventSellerMakesOffer.js +64 -76
  37. package/lib/chevre/repo/eventSeries.js +208 -231
  38. package/lib/chevre/repo/identity.js +94 -106
  39. package/lib/chevre/repo/identityProvider.js +72 -95
  40. package/lib/chevre/repo/issuer.js +102 -135
  41. package/lib/chevre/repo/member.js +238 -258
  42. package/lib/chevre/repo/memberProgram.js +157 -177
  43. package/lib/chevre/repo/merchantReturnPolicy.js +62 -93
  44. package/lib/chevre/repo/message.js +122 -135
  45. package/lib/chevre/repo/mongoose/schemas/acceptedPaymentMethod.js +1 -1
  46. package/lib/chevre/repo/mongoose/schemas/account.js +1 -1
  47. package/lib/chevre/repo/mongoose/schemas/accountTitle.js +1 -1
  48. package/lib/chevre/repo/mongoose/schemas/accountTransaction.js +1 -1
  49. package/lib/chevre/repo/mongoose/schemas/accountingReport.js +1 -1
  50. package/lib/chevre/repo/mongoose/schemas/action.js +1 -1
  51. package/lib/chevre/repo/mongoose/schemas/actionRecipe.js +1 -1
  52. package/lib/chevre/repo/mongoose/schemas/additionalProperty.js +1 -1
  53. package/lib/chevre/repo/mongoose/schemas/advanceBookingRequirement.js +1 -1
  54. package/lib/chevre/repo/mongoose/schemas/aggregateOffer.js +1 -1
  55. package/lib/chevre/repo/mongoose/schemas/aggregateOrder.js +1 -1
  56. package/lib/chevre/repo/mongoose/schemas/aggregateReservation.js +1 -1
  57. package/lib/chevre/repo/mongoose/schemas/aggregation.js +1 -1
  58. package/lib/chevre/repo/mongoose/schemas/assetTransaction.js +1 -1
  59. package/lib/chevre/repo/mongoose/schemas/authorization.js +1 -1
  60. package/lib/chevre/repo/mongoose/schemas/categoryCode.js +1 -1
  61. package/lib/chevre/repo/mongoose/schemas/civicStructure.js +1 -1
  62. package/lib/chevre/repo/mongoose/schemas/creativeWork.js +1 -1
  63. package/lib/chevre/repo/mongoose/schemas/customer.js +1 -1
  64. package/lib/chevre/repo/mongoose/schemas/customerType.js +1 -1
  65. package/lib/chevre/repo/mongoose/schemas/event.js +1 -1
  66. package/lib/chevre/repo/mongoose/schemas/eventOffer.js +1 -1
  67. package/lib/chevre/repo/mongoose/schemas/eventSeries.js +1 -1
  68. package/lib/chevre/repo/mongoose/schemas/identity.js +1 -1
  69. package/lib/chevre/repo/mongoose/schemas/identityProvider.js +1 -1
  70. package/lib/chevre/repo/mongoose/schemas/issuer.js +1 -1
  71. package/lib/chevre/repo/mongoose/schemas/member/global.js +1 -1
  72. package/lib/chevre/repo/mongoose/schemas/member.js +1 -1
  73. package/lib/chevre/repo/mongoose/schemas/merchantReturnPolicy.js +1 -1
  74. package/lib/chevre/repo/mongoose/schemas/message.js +1 -1
  75. package/lib/chevre/repo/mongoose/schemas/movieTicketTypes.js +1 -1
  76. package/lib/chevre/repo/mongoose/schemas/note.js +1 -1
  77. package/lib/chevre/repo/mongoose/schemas/offerCatalog.js +1 -1
  78. package/lib/chevre/repo/mongoose/schemas/offerCatalogItem.js +1 -1
  79. package/lib/chevre/repo/mongoose/schemas/offerItemCondition.js +1 -1
  80. package/lib/chevre/repo/mongoose/schemas/order.js +1 -1
  81. package/lib/chevre/repo/mongoose/schemas/paymentService.js +1 -1
  82. package/lib/chevre/repo/mongoose/schemas/paymentServiceChannel.js +1 -1
  83. package/lib/chevre/repo/mongoose/schemas/pendingReservation.js +1 -1
  84. package/lib/chevre/repo/mongoose/schemas/pendingReservationAggregate.js +1 -1
  85. package/lib/chevre/repo/mongoose/schemas/place.js +1 -1
  86. package/lib/chevre/repo/mongoose/schemas/potentialAction.js +1 -1
  87. package/lib/chevre/repo/mongoose/schemas/product.js +1 -1
  88. package/lib/chevre/repo/mongoose/schemas/productModel.js +1 -1
  89. package/lib/chevre/repo/mongoose/schemas/productOffer.js +1 -1
  90. package/lib/chevre/repo/mongoose/schemas/reservation.js +1 -1
  91. package/lib/chevre/repo/mongoose/schemas/reserveInterface.js +1 -1
  92. package/lib/chevre/repo/mongoose/schemas/role.js +1 -1
  93. package/lib/chevre/repo/mongoose/schemas/schedule.js +1 -1
  94. package/lib/chevre/repo/mongoose/schemas/seller.js +1 -1
  95. package/lib/chevre/repo/mongoose/schemas/sellerReturnPolicy.js +1 -1
  96. package/lib/chevre/repo/mongoose/schemas/service/availableHour.js +1 -1
  97. package/lib/chevre/repo/mongoose/schemas/setting.js +1 -1
  98. package/lib/chevre/repo/mongoose/schemas/task.js +1 -1
  99. package/lib/chevre/repo/mongoose/schemas/ticket.js +1 -1
  100. package/lib/chevre/repo/mongoose/schemas/transaction.js +1 -1
  101. package/lib/chevre/repo/mongoose/schemas/transactionNumber.js +1 -1
  102. package/lib/chevre/repo/mongoose/schemas/trip.js +1 -1
  103. package/lib/chevre/repo/mongoose/schemas/webSite.js +1 -1
  104. package/lib/chevre/repo/movieTicketType.js +68 -89
  105. package/lib/chevre/repo/note.js +143 -146
  106. package/lib/chevre/repo/noteAboutOrder.js +112 -113
  107. package/lib/chevre/repo/offer/unitPriceInCatalog.js +331 -313
  108. package/lib/chevre/repo/offerCatalog.js +302 -333
  109. package/lib/chevre/repo/offerCatalogItem.js +289 -316
  110. package/lib/chevre/repo/offerItemCondition.js +60 -85
  111. package/lib/chevre/repo/order.js +563 -572
  112. package/lib/chevre/repo/orderInTransaction.js +113 -136
  113. package/lib/chevre/repo/orderNumber.js +99 -112
  114. package/lib/chevre/repo/ownershipInfo.js +213 -233
  115. package/lib/chevre/repo/passport.js +94 -102
  116. package/lib/chevre/repo/paymentMethod/creditCard.js +153 -169
  117. package/lib/chevre/repo/paymentService.js +180 -199
  118. package/lib/chevre/repo/paymentServiceChannel.js +76 -99
  119. package/lib/chevre/repo/paymentServiceProvider.js +186 -201
  120. package/lib/chevre/repo/pendingReservation.js +275 -305
  121. package/lib/chevre/repo/permit.js +47 -42
  122. package/lib/chevre/repo/person.js +227 -247
  123. package/lib/chevre/repo/place/busStop.js +77 -103
  124. package/lib/chevre/repo/place/entranceGate.js +123 -128
  125. package/lib/chevre/repo/place/hasPOS.js +108 -120
  126. package/lib/chevre/repo/place/movieTheater.js +187 -219
  127. package/lib/chevre/repo/place/screeningRoom.js +340 -324
  128. package/lib/chevre/repo/place/seat.js +539 -475
  129. package/lib/chevre/repo/place/section.js +329 -292
  130. package/lib/chevre/repo/potentialAction.js +67 -86
  131. package/lib/chevre/repo/priceSpecification.js +103 -141
  132. package/lib/chevre/repo/product.js +204 -238
  133. package/lib/chevre/repo/productHasOfferCatalog.js +39 -50
  134. package/lib/chevre/repo/productModel.js +94 -126
  135. package/lib/chevre/repo/productOffer.js +119 -118
  136. package/lib/chevre/repo/project.js +123 -141
  137. package/lib/chevre/repo/projectMakesOffer.js +96 -108
  138. package/lib/chevre/repo/rateLimit/offer.js +43 -56
  139. package/lib/chevre/repo/reservation.js +370 -345
  140. package/lib/chevre/repo/reserveInterface.js +31 -42
  141. package/lib/chevre/repo/role.js +94 -112
  142. package/lib/chevre/repo/schedule.js +25 -36
  143. package/lib/chevre/repo/seller.js +115 -145
  144. package/lib/chevre/repo/sellerMakesOffer.js +95 -110
  145. package/lib/chevre/repo/sellerPaymentAccepted.js +92 -109
  146. package/lib/chevre/repo/sellerReturnPolicy.js +74 -96
  147. package/lib/chevre/repo/service/availableHour.js +27 -38
  148. package/lib/chevre/repo/serviceOutput.js +55 -66
  149. package/lib/chevre/repo/serviceOutputIdentifier.js +46 -57
  150. package/lib/chevre/repo/setting/jwt.js +40 -50
  151. package/lib/chevre/repo/setting.js +48 -48
  152. package/lib/chevre/repo/stockHolder.js +179 -197
  153. package/lib/chevre/repo/task.js +615 -617
  154. package/lib/chevre/repo/telemetry.js +1 -0
  155. package/lib/chevre/repo/ticket.js +52 -65
  156. package/lib/chevre/repo/transaction.js +758 -795
  157. package/lib/chevre/repo/transactionNumber.js +67 -80
  158. package/lib/chevre/repo/transactionNumberCounter.js +69 -79
  159. package/lib/chevre/repo/transactionProcess.js +36 -47
  160. package/lib/chevre/repo/trip.js +145 -163
  161. package/lib/chevre/repo/webSite.js +90 -105
  162. package/lib/chevre/repository.js +455 -646
  163. package/lib/chevre/service/account.js +9 -18
  164. package/lib/chevre/service/accountTransaction/deposit.js +16 -17
  165. package/lib/chevre/service/accountTransaction/transfer.js +18 -19
  166. package/lib/chevre/service/accountTransaction/withdraw.js +16 -17
  167. package/lib/chevre/service/accountTransaction.js +4 -13
  168. package/lib/chevre/service/aggregation/event/aggregateOffers.js +63 -60
  169. package/lib/chevre/service/aggregation/event/aggregateScreeningEvent.js +52 -55
  170. package/lib/chevre/service/aggregation/event/findEventOffers.js +7 -17
  171. package/lib/chevre/service/aggregation/event/importFromCOA.js +4 -13
  172. package/lib/chevre/service/aggregation/project.js +10 -19
  173. package/lib/chevre/service/aggregation/system.js +182 -99
  174. package/lib/chevre/service/assetTransaction/cancelReservation/factory.js +31 -17
  175. package/lib/chevre/service/assetTransaction/cancelReservation/start.js +17 -23
  176. package/lib/chevre/service/assetTransaction/cancelReservation/startAndConfirm.js +17 -15
  177. package/lib/chevre/service/assetTransaction/cancelReservation.js +7 -16
  178. package/lib/chevre/service/assetTransaction/cancelReservationCOA/factory.js +11 -4
  179. package/lib/chevre/service/assetTransaction/cancelReservationCOA.js +4 -13
  180. package/lib/chevre/service/assetTransaction/fixInformAction.js +6 -16
  181. package/lib/chevre/service/assetTransaction/moneyTransfer/potentialActions.js +13 -25
  182. package/lib/chevre/service/assetTransaction/moneyTransfer.js +101 -88
  183. package/lib/chevre/service/assetTransaction/pay/cancel.js +3 -12
  184. package/lib/chevre/service/assetTransaction/pay/check.js +4 -14
  185. package/lib/chevre/service/assetTransaction/pay/confirm.js +18 -21
  186. package/lib/chevre/service/assetTransaction/pay/exportTasksById.js +4 -13
  187. package/lib/chevre/service/assetTransaction/pay/publishPaymentUrl.js +33 -32
  188. package/lib/chevre/service/assetTransaction/pay/searchGMOTrade.js +7 -17
  189. package/lib/chevre/service/assetTransaction/pay/start/account/validation.js +6 -16
  190. package/lib/chevre/service/assetTransaction/pay/start/factory.js +64 -36
  191. package/lib/chevre/service/assetTransaction/pay/start/preStart/validateAcceptedPaymentMethodIfNeeded.js +7 -17
  192. package/lib/chevre/service/assetTransaction/pay/start/preStart/validateSeller.js +6 -16
  193. package/lib/chevre/service/assetTransaction/pay/start/processAuthorizeAccount.js +7 -17
  194. package/lib/chevre/service/assetTransaction/pay/start/processAuthorizeCreditCard.js +9 -15
  195. package/lib/chevre/service/assetTransaction/pay/start/processAuthorizeMovieTicket.js +3 -12
  196. package/lib/chevre/service/assetTransaction/pay/start.js +29 -35
  197. package/lib/chevre/service/assetTransaction/refund/factory.js +36 -16
  198. package/lib/chevre/service/assetTransaction/refund/potentialActions.js +12 -21
  199. package/lib/chevre/service/assetTransaction/refund.js +35 -39
  200. package/lib/chevre/service/assetTransaction/registerService/factory.js +65 -28
  201. package/lib/chevre/service/assetTransaction/registerService/potentialActions.js +50 -41
  202. package/lib/chevre/service/assetTransaction/registerService.js +45 -52
  203. package/lib/chevre/service/assetTransaction/reserve/cancel.js +5 -14
  204. package/lib/chevre/service/assetTransaction/reserve/confirm/factory.js +15 -3
  205. package/lib/chevre/service/assetTransaction/reserve/confirm.js +21 -26
  206. package/lib/chevre/service/assetTransaction/reserve/exportTasksById.js +3 -12
  207. package/lib/chevre/service/assetTransaction/reserve/start/createSubReservations.js +99 -79
  208. package/lib/chevre/service/assetTransaction/reserve/start/factory/createPointAward.js +17 -12
  209. package/lib/chevre/service/assetTransaction/reserve/start/factory/createReservation.js +108 -70
  210. package/lib/chevre/service/assetTransaction/reserve/start/factory/createStartParams.js +69 -30
  211. package/lib/chevre/service/assetTransaction/reserve/start/factory/price.js +29 -20
  212. package/lib/chevre/service/assetTransaction/reserve/start.js +91 -106
  213. package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/fixExtendedEventOffer.js +5 -15
  214. package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/validateIssuedOfferIfExists.js +41 -54
  215. package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/validateMemberTierIfExists.js +42 -55
  216. package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/verifyTicketTokenAsNeeded.js +7 -17
  217. package/lib/chevre/service/assetTransaction/reserve/validateStartRequest.js +15 -27
  218. package/lib/chevre/service/assetTransaction/reserveCOA/cancel.js +24 -24
  219. package/lib/chevre/service/assetTransaction/reserveCOA/factory.js +12 -4
  220. package/lib/chevre/service/assetTransaction/reserveCOA.js +4 -13
  221. package/lib/chevre/service/assetTransaction.js +17 -21
  222. package/lib/chevre/service/delivery/factory.js +3 -4
  223. package/lib/chevre/service/delivery/product/factory.js +16 -7
  224. package/lib/chevre/service/delivery/reservation/factory.js +14 -3
  225. package/lib/chevre/service/delivery.js +47 -49
  226. package/lib/chevre/service/event/processUpdateMovieTheater.js +21 -23
  227. package/lib/chevre/service/event/saveScreeningEventSeries.js +56 -37
  228. package/lib/chevre/service/event/saveScreeningEvents.js +14 -23
  229. package/lib/chevre/service/event.js +34 -27
  230. package/lib/chevre/service/iam.js +8 -17
  231. package/lib/chevre/service/moneyTransfer.js +128 -112
  232. package/lib/chevre/service/notification/factory.js +11 -8
  233. package/lib/chevre/service/notification/notifyAbortedTasksByEmail.js +11 -15
  234. package/lib/chevre/service/notification/notifyByEmail.js +7 -17
  235. package/lib/chevre/service/notification/sendEmailMessage.js +23 -26
  236. package/lib/chevre/service/notification/triggerWebhook.js +58 -54
  237. package/lib/chevre/service/offer/any.js +6 -15
  238. package/lib/chevre/service/offer/event/authorize/factory.js +139 -61
  239. package/lib/chevre/service/offer/event/authorize/processStartReserve4chevre/requestedProgramMembershipUsed2permit.js +8 -18
  240. package/lib/chevre/service/offer/event/authorize/processStartReserve4chevre.js +43 -27
  241. package/lib/chevre/service/offer/event/authorize.js +114 -68
  242. package/lib/chevre/service/offer/event/checkAvailability.js +5 -15
  243. package/lib/chevre/service/offer/event/importFromCOA/factory.js +9 -2
  244. package/lib/chevre/service/offer/event/importFromCOA.js +13 -19
  245. package/lib/chevre/service/offer/event/issueEventOfferTicket.js +38 -39
  246. package/lib/chevre/service/offer/event/searchEventTicketOffers.js +26 -38
  247. package/lib/chevre/service/offer/event/searchOfferAppliesToMovieTicket.js +11 -22
  248. package/lib/chevre/service/offer/event/searchOfferCatalogItemAvailability.js +13 -24
  249. package/lib/chevre/service/offer/event/searchOfferCatalogItems.js +15 -22
  250. package/lib/chevre/service/offer/event/searchOffersByIds.js +24 -36
  251. package/lib/chevre/service/offer/event/searchPriceSpecs4event.js +5 -14
  252. package/lib/chevre/service/offer/event/voidTransaction/processVoidTransaction4chevre.js +4 -13
  253. package/lib/chevre/service/offer/event/voidTransaction/processVoidTransaction4coa.js +6 -15
  254. package/lib/chevre/service/offer/event/voidTransaction.js +35 -39
  255. package/lib/chevre/service/offer/event/voidTransactionByActionId.js +14 -20
  256. package/lib/chevre/service/offer/eventServiceByCOA/acceptOffer/authorize.js +52 -40
  257. package/lib/chevre/service/offer/eventServiceByCOA/acceptOffer/factory.js +5 -1
  258. package/lib/chevre/service/offer/eventServiceByCOA/acceptOffer.js +34 -37
  259. package/lib/chevre/service/offer/eventServiceByCOA/authorize/factory.js +45 -22
  260. package/lib/chevre/service/offer/eventServiceByCOA/authorize/validateAcceptedOffers.js +67 -59
  261. package/lib/chevre/service/offer/eventServiceByCOA/authorize.js +16 -26
  262. package/lib/chevre/service/offer/eventServiceByCOA/authorizeByAcceptAction.js +8 -18
  263. package/lib/chevre/service/offer/eventServiceByCOA/changeOffers.js +42 -41
  264. package/lib/chevre/service/offer/eventServiceByCOA/findAcceptAction.js +22 -25
  265. package/lib/chevre/service/offer/factory.js +18 -7
  266. package/lib/chevre/service/offer/moneyTransfer/authorize.js +31 -36
  267. package/lib/chevre/service/offer/moneyTransfer/returnMoneyTransfer.js +9 -18
  268. package/lib/chevre/service/offer/moneyTransfer/settleTransaction.js +10 -19
  269. package/lib/chevre/service/offer/moneyTransfer/voidTransaction.js +14 -24
  270. package/lib/chevre/service/offer/onEventChanged.js +69 -64
  271. package/lib/chevre/service/offer/product/factory.js +54 -29
  272. package/lib/chevre/service/offer/product/searchProductOffers.js +30 -23
  273. package/lib/chevre/service/offer/product.js +106 -80
  274. package/lib/chevre/service/offer.js +48 -44
  275. package/lib/chevre/service/order/confirmPayTransaction.js +28 -27
  276. package/lib/chevre/service/order/createAccountingReportIfNotExist.js +54 -41
  277. package/lib/chevre/service/order/deleteOrder.js +28 -35
  278. package/lib/chevre/service/order/findPlaceOrderTransaction.js +3 -12
  279. package/lib/chevre/service/order/onAssetTransactionStatusChanged.js +64 -68
  280. package/lib/chevre/service/order/onOrderStatusChanged/onOrderCancelled/factory.js +1 -2
  281. package/lib/chevre/service/order/onOrderStatusChanged/onOrderCancelled.js +3 -12
  282. package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered/factory.js +11 -6
  283. package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered.js +5 -14
  284. package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially/factory.js +22 -9
  285. package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially.js +5 -14
  286. package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.js +23 -26
  287. package/lib/chevre/service/order/onOrderStatusChanged/onOrderPaymentDue.js +13 -19
  288. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/createSendEmailMessageTaskIfNotExist.js +5 -14
  289. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/factory.js +24 -13
  290. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/processOrder.js +23 -32
  291. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing.js +8 -18
  292. package/lib/chevre/service/order/onOrderStatusChanged/onOrderReturned/factory.js +10 -9
  293. package/lib/chevre/service/order/onOrderStatusChanged/onOrderReturned.js +23 -28
  294. package/lib/chevre/service/order/onOrderUpdated/factory.js +3 -5
  295. package/lib/chevre/service/order/onOrderUpdated.js +13 -15
  296. package/lib/chevre/service/order/payOrder.js +3 -12
  297. package/lib/chevre/service/order/placeOrder/createPlacingOrderFromExistingTransaction.js +9 -19
  298. package/lib/chevre/service/order/placeOrder/factory/orderedItem.js +31 -15
  299. package/lib/chevre/service/order/placeOrder/factory.js +35 -22
  300. package/lib/chevre/service/order/placeOrder/voidAcceptedOfferIfNecessary.js +3 -12
  301. package/lib/chevre/service/order/placeOrder.js +12 -22
  302. package/lib/chevre/service/order/placeOrderWithoutTransaction.js +10 -18
  303. package/lib/chevre/service/order/returnOrder.js +27 -29
  304. package/lib/chevre/service/order/sendOrder.js +37 -36
  305. package/lib/chevre/service/payment/any/authorize/fixTransactionNumber.js +19 -25
  306. package/lib/chevre/service/payment/any/authorize/handlePrePublishedPaymentMethodIdOnAuthorizing.js +24 -37
  307. package/lib/chevre/service/payment/any/factory.js +106 -49
  308. package/lib/chevre/service/payment/any/fixOrderAsNeeded.js +4 -13
  309. package/lib/chevre/service/payment/any/onPayActionCompleted.js +13 -18
  310. package/lib/chevre/service/payment/any/onPaymentStatusChanged/onPaid.js +34 -37
  311. package/lib/chevre/service/payment/any/onPaymentStatusChanged/onRefunded.js +18 -24
  312. package/lib/chevre/service/payment/any/onPaymentStatusChanged.js +16 -16
  313. package/lib/chevre/service/payment/any/onRefundActionCompletedOrFailed.js +15 -20
  314. package/lib/chevre/service/payment/any/person2username.js +33 -45
  315. package/lib/chevre/service/payment/any/publishPaymentUrl/fixTransactionNumberOnPublishPaymentUrl.js +8 -18
  316. package/lib/chevre/service/payment/any/verifyTicketTokenAsNeeded.js +5 -15
  317. package/lib/chevre/service/payment/any.js +181 -137
  318. package/lib/chevre/service/payment/creditCard/authorize/handleAuthorizeError.js +2 -2
  319. package/lib/chevre/service/payment/creditCard/authorize/processAuthorizeCreditCard.js +44 -24
  320. package/lib/chevre/service/payment/creditCard/authorize/processAuthorizeCreditCard3ds.js +6 -15
  321. package/lib/chevre/service/payment/creditCard/authorize/processAuthorizeCreditCard3dsResult2recipe.js +5 -1
  322. package/lib/chevre/service/payment/creditCard/authorize/processAuthorizeCreditCardResult2recipe.js +10 -2
  323. package/lib/chevre/service/payment/creditCard/authorize.js +20 -22
  324. package/lib/chevre/service/payment/creditCard/factory.js +22 -4
  325. package/lib/chevre/service/payment/creditCard/getGMOInfoFromSeller.js +8 -18
  326. package/lib/chevre/service/payment/creditCard/payCreditCard.js +31 -36
  327. package/lib/chevre/service/payment/creditCard/refundCreditCard.js +40 -49
  328. package/lib/chevre/service/payment/creditCard/searchGMOTrade.js +33 -45
  329. package/lib/chevre/service/payment/creditCard/voidTransaction.js +15 -25
  330. package/lib/chevre/service/payment/faceToFace.js +14 -23
  331. package/lib/chevre/service/payment/factory/createPayObjectServiceOutput.js +44 -25
  332. package/lib/chevre/service/payment/factory.js +50 -23
  333. package/lib/chevre/service/payment/movieTicket/authorize.js +35 -28
  334. package/lib/chevre/service/payment/movieTicket/checkMovieTicket.js +22 -25
  335. package/lib/chevre/service/payment/movieTicket/factory.js +33 -10
  336. package/lib/chevre/service/payment/movieTicket/getCredentials.js +5 -15
  337. package/lib/chevre/service/payment/movieTicket/payMovieTicket.js +29 -40
  338. package/lib/chevre/service/payment/movieTicket/processPurchaseNumberAuth.js +8 -18
  339. package/lib/chevre/service/payment/movieTicket/refundMovieTicket.js +60 -59
  340. package/lib/chevre/service/payment/movieTicket/validation.js +41 -36
  341. package/lib/chevre/service/payment/movieTicket/voidTransaction.js +8 -18
  342. package/lib/chevre/service/payment/paymentCard.js +87 -103
  343. package/lib/chevre/service/permit.js +36 -35
  344. package/lib/chevre/service/product.js +23 -27
  345. package/lib/chevre/service/project.js +22 -31
  346. package/lib/chevre/service/report/ownershipInfo.js +3 -4
  347. package/lib/chevre/service/report/telemetry.js +51 -55
  348. package/lib/chevre/service/reserve/cancelReservation.js +92 -90
  349. package/lib/chevre/service/reserve/checkInReservation.js +24 -29
  350. package/lib/chevre/service/reserve/confirmReservation.js +33 -38
  351. package/lib/chevre/service/reserve/factory.js +42 -20
  352. package/lib/chevre/service/reserve/findByCode.js +13 -18
  353. package/lib/chevre/service/reserve/potentialActions/onPendingReservationCanceled.js +18 -24
  354. package/lib/chevre/service/reserve/potentialActions/onReservationCanceled.js +17 -24
  355. package/lib/chevre/service/reserve/potentialActions/onReservationCheckedIn.js +38 -29
  356. package/lib/chevre/service/reserve/potentialActions/onReservationConfirmed.js +45 -35
  357. package/lib/chevre/service/reserve/potentialActions/onReservationUsed.js +37 -32
  358. package/lib/chevre/service/reserve/potentialActions/onReservationsCreated.js +17 -23
  359. package/lib/chevre/service/reserve/searchByOrder.js +10 -19
  360. package/lib/chevre/service/reserve/useReservation.js +47 -32
  361. package/lib/chevre/service/reserve/verifyToken4reservation.js +7 -14
  362. package/lib/chevre/service/reserveCOA/cancelReservation.js +7 -16
  363. package/lib/chevre/service/reserveCOA/factory.js +5 -1
  364. package/lib/chevre/service/task/acceptCOAOffer.js +20 -24
  365. package/lib/chevre/service/task/aggregateOffers.js +3 -12
  366. package/lib/chevre/service/task/aggregateOnSystem.js +4 -14
  367. package/lib/chevre/service/task/aggregateScreeningEvent.js +3 -12
  368. package/lib/chevre/service/task/authorizePayment.js +9 -15
  369. package/lib/chevre/service/task/cancelMoneyTransfer.js +3 -12
  370. package/lib/chevre/service/task/cancelPendingReservation.js +10 -20
  371. package/lib/chevre/service/task/cancelReservation.js +3 -12
  372. package/lib/chevre/service/task/checkMovieTicket.js +16 -19
  373. package/lib/chevre/service/task/checkResource.js +7 -16
  374. package/lib/chevre/service/task/confirmMoneyTransfer.js +3 -12
  375. package/lib/chevre/service/task/confirmPayTransaction.js +6 -12
  376. package/lib/chevre/service/task/confirmRegisterService.js +3 -12
  377. package/lib/chevre/service/task/confirmRegisterServiceTransaction.js +24 -31
  378. package/lib/chevre/service/task/confirmReserveTransaction.js +48 -42
  379. package/lib/chevre/service/task/createAccountingReport.js +14 -20
  380. package/lib/chevre/service/task/deletePerson.js +48 -58
  381. package/lib/chevre/service/task/deleteTransaction.js +3 -12
  382. package/lib/chevre/service/task/givePointAward.js +3 -12
  383. package/lib/chevre/service/task/handleNotification.js +4 -14
  384. package/lib/chevre/service/task/importEventCapacitiesFromCOA.js +6 -16
  385. package/lib/chevre/service/task/importEventsFromCOA.js +6 -16
  386. package/lib/chevre/service/task/importOffersFromCOA.js +8 -18
  387. package/lib/chevre/service/task/invalidatePaymentUrl.js +6 -12
  388. package/lib/chevre/service/task/moneyTransfer.js +3 -12
  389. package/lib/chevre/service/task/onAssetTransactionStatusChanged.js +3 -12
  390. package/lib/chevre/service/task/onAuthorizationCreated.js +11 -18
  391. package/lib/chevre/service/task/onEventChanged.js +3 -12
  392. package/lib/chevre/service/task/onOrderPaymentCompleted.js +3 -12
  393. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByAggregateOffer.js +7 -16
  394. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByEventSeries.js +7 -16
  395. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByMovieTheater.js +8 -17
  396. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByOfferCatalog.js +10 -19
  397. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByProduct.js +8 -17
  398. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByRoom.js +6 -15
  399. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesBySeller.js +14 -23
  400. package/lib/chevre/service/task/onResourceDeleted.js +17 -26
  401. package/lib/chevre/service/task/onResourceUpdated/onAggregateOfferUpdated.js +9 -21
  402. package/lib/chevre/service/task/onResourceUpdated/onCategoryCodeUpdated.js +3 -12
  403. package/lib/chevre/service/task/onResourceUpdated/onHasPOSUpdated.js +11 -23
  404. package/lib/chevre/service/task/onResourceUpdated/onOfferCatalogUpdated.js +13 -25
  405. package/lib/chevre/service/task/onResourceUpdated/syncCategoryCode.js +9 -15
  406. package/lib/chevre/service/task/onResourceUpdated/syncOfferCatalog.js +21 -27
  407. package/lib/chevre/service/task/onResourceUpdated.js +113 -153
  408. package/lib/chevre/service/task/pay.js +8 -16
  409. package/lib/chevre/service/task/payment/invalidatePaymentUrlByTask.js +4 -14
  410. package/lib/chevre/service/task/payment/payByTask.js +49 -38
  411. package/lib/chevre/service/task/payment/refundByTask.js +7 -17
  412. package/lib/chevre/service/task/payment/voidPaymentByTask.js +6 -15
  413. package/lib/chevre/service/task/placeOrder.js +6 -12
  414. package/lib/chevre/service/task/publishPaymentUrl.js +9 -14
  415. package/lib/chevre/service/task/refund.js +8 -16
  416. package/lib/chevre/service/task/registerService.js +3 -12
  417. package/lib/chevre/service/task/reserve.js +3 -12
  418. package/lib/chevre/service/task/returnMoneyTransfer.js +3 -12
  419. package/lib/chevre/service/task/returnOrder.js +6 -12
  420. package/lib/chevre/service/task/returnPayTransaction.js +54 -48
  421. package/lib/chevre/service/task/returnPointAward.js +3 -12
  422. package/lib/chevre/service/task/returnReserveTransaction.js +29 -30
  423. package/lib/chevre/service/task/sendEmailMessage.js +6 -13
  424. package/lib/chevre/service/task/sendOrder.js +12 -15
  425. package/lib/chevre/service/task/syncResourcesFromCOA.js +39 -40
  426. package/lib/chevre/service/task/triggerWebhook.js +6 -12
  427. package/lib/chevre/service/task/useReservation.js +11 -14
  428. package/lib/chevre/service/task/voidMoneyTransferTransaction.js +3 -12
  429. package/lib/chevre/service/task/voidPayTransaction.js +7 -12
  430. package/lib/chevre/service/task/voidPayment.js +3 -12
  431. package/lib/chevre/service/task/voidRegisterServiceTransaction.js +3 -12
  432. package/lib/chevre/service/task/voidReserveTransaction.js +10 -16
  433. package/lib/chevre/service/task.js +16 -22
  434. package/lib/chevre/service/taskHandler/onOperationFailed/informTaskIfNeeded.js +9 -20
  435. package/lib/chevre/service/taskHandler/onOperationFailed.js +20 -17
  436. package/lib/chevre/service/taskHandler.js +19 -21
  437. package/lib/chevre/service/transaction/deleteTransaction.js +104 -84
  438. package/lib/chevre/service/transaction/moneyTransfer/exportTasks/factory.js +15 -6
  439. package/lib/chevre/service/transaction/moneyTransfer/factory.js +13 -4
  440. package/lib/chevre/service/transaction/moneyTransfer/potentialActions.js +12 -24
  441. package/lib/chevre/service/transaction/moneyTransfer.js +119 -96
  442. package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions/sendEmailMessage.js +49 -51
  443. package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions.js +14 -25
  444. package/lib/chevre/service/transaction/placeOrder/confirm/publishCode.js +4 -14
  445. package/lib/chevre/service/transaction/placeOrder/confirm/validation/validateInvoiceReferencesOrder.js +3 -4
  446. package/lib/chevre/service/transaction/placeOrder/confirm/validation/validateMovieTicket.js +3 -4
  447. package/lib/chevre/service/transaction/placeOrder/confirm/validation/validatePrice.js +2 -3
  448. package/lib/chevre/service/transaction/placeOrder/confirm/validation.js +30 -45
  449. package/lib/chevre/service/transaction/placeOrder/confirm.js +75 -55
  450. package/lib/chevre/service/transaction/placeOrder/exportTasks/factory.js +31 -13
  451. package/lib/chevre/service/transaction/placeOrder/exportTasksById.js +6 -15
  452. package/lib/chevre/service/transaction/placeOrder/publishConfirmationNumberIfNotExist.js +6 -15
  453. package/lib/chevre/service/transaction/placeOrder/publishOrderNumberIfNotExist.js +7 -16
  454. package/lib/chevre/service/transaction/placeOrder/start/factory.js +27 -7
  455. package/lib/chevre/service/transaction/placeOrder/start/validateStartRequest.js +53 -59
  456. package/lib/chevre/service/transaction/placeOrder/start.js +14 -18
  457. package/lib/chevre/service/transaction/returnOrder/exportTasks/factory.js +13 -6
  458. package/lib/chevre/service/transaction/returnOrder/potentialActions/returnPaymentMethod.js +176 -190
  459. package/lib/chevre/service/transaction/returnOrder/potentialActions/returnPointAward.js +77 -89
  460. package/lib/chevre/service/transaction/returnOrder/potentialActions/sendEmailMessage.js +40 -48
  461. package/lib/chevre/service/transaction/returnOrder/potentialActions.js +52 -56
  462. package/lib/chevre/service/transaction/returnOrder/preStart/findApplicableReturnPolicy.js +100 -102
  463. package/lib/chevre/service/transaction/returnOrder/preStart/getReturnPolicyByProject.js +60 -80
  464. package/lib/chevre/service/transaction/returnOrder/preStart.js +42 -46
  465. package/lib/chevre/service/transaction/returnOrder.js +32 -36
  466. package/lib/chevre/service/transaction.js +75 -46
  467. package/lib/chevre/service/validation/validateEvent.js +2 -11
  468. package/lib/chevre/service/validation/validateOrder.js +7 -16
  469. package/lib/chevre/service.js +85 -128
  470. package/lib/chevre/settings/aggregation.js +4 -0
  471. package/lib/chevre/settings.js +7 -0
  472. package/package.json +6 -7
  473. package/example/src/chevre/addEventBySchedule.ts +0 -46
  474. package/example/src/idaas/auth0/adminApplications.ts +0 -183
  475. package/example/src/idaas/auth0/getToken.ts +0 -55
  476. package/example/src/idaas/auth0/getTokenByPrivateKeyJWT.ts +0 -84
@@ -1,24 +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
- var __rest = (this && this.__rest) || function (s, e) {
12
- var t = {};
13
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
14
- t[p] = s[p];
15
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
16
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
17
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
18
- t[p[i]] = s[p[i]];
19
- }
20
- return t;
21
- };
22
2
  Object.defineProperty(exports, "__esModule", { value: true });
23
3
  exports.EventRepo = void 0;
24
4
  const mongoose_1 = require("mongoose");
@@ -39,6 +19,7 @@ const AVAILABLE_PUBLIC_PROJECT_FIELDS = [
39
19
  * イベントリポジトリ
40
20
  */
41
21
  class EventRepo {
22
+ eventModel;
42
23
  constructor(connection) {
43
24
  this.eventModel = connection.model(event_1.modelName, (0, event_1.createSchema)());
44
25
  }
@@ -52,7 +33,6 @@ class EventRepo {
52
33
  }
53
34
  // tslint:disable-next-line:cyclomatic-complexity max-func-body-length
54
35
  static CREATE_MONGO_CONDITIONS(conditions) {
55
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4;
56
36
  const andConditions = [];
57
37
  const typeOfEq = conditions.typeOf;
58
38
  if (typeof typeOfEq === 'string') {
@@ -66,19 +46,19 @@ class EventRepo {
66
46
  if (typeof typeOfEq !== 'string' && !Array.isArray(typeOfIn)) {
67
47
  throw new factory.errors.ArgumentNull('typeOf');
68
48
  }
69
- const projectIdEq = (_b = (_a = conditions.project) === null || _a === void 0 ? void 0 : _a.id) === null || _b === void 0 ? void 0 : _b.$eq;
49
+ const projectIdEq = conditions.project?.id?.$eq;
70
50
  if (typeof projectIdEq === 'string') {
71
51
  andConditions.push({ 'project.id': { $eq: projectIdEq } });
72
52
  }
73
- const organizerIdEq = (_d = (_c = conditions.organizer) === null || _c === void 0 ? void 0 : _c.id) === null || _d === void 0 ? void 0 : _d.$eq;
53
+ const organizerIdEq = conditions.organizer?.id?.$eq;
74
54
  if (typeof organizerIdEq === 'string') {
75
55
  andConditions.push({ 'organizer.id': { $exists: true, $eq: organizerIdEq } });
76
56
  }
77
- const idEq = (_e = conditions.id) === null || _e === void 0 ? void 0 : _e.$eq;
57
+ const idEq = conditions.id?.$eq;
78
58
  if (typeof idEq === 'string') {
79
59
  andConditions.push({ _id: { $eq: idEq } });
80
60
  }
81
- const idIn = (_f = conditions.id) === null || _f === void 0 ? void 0 : _f.$in;
61
+ const idIn = conditions.id?.$in;
82
62
  if (Array.isArray(idIn)) {
83
63
  andConditions.push({ _id: { $in: idIn } });
84
64
  }
@@ -135,15 +115,15 @@ class EventRepo {
135
115
  endDate: { $lte: conditions.endThrough }
136
116
  });
137
117
  }
138
- const locationBranchCodeEq = (_h = (_g = conditions.location) === null || _g === void 0 ? void 0 : _g.branchCode) === null || _h === void 0 ? void 0 : _h.$eq;
118
+ const locationBranchCodeEq = conditions.location?.branchCode?.$eq;
139
119
  if (typeof locationBranchCodeEq === 'string') {
140
120
  andConditions.push({ 'location.branchCode': { $exists: true, $eq: locationBranchCodeEq } });
141
121
  }
142
- const locationBranchCodeIn = (_k = (_j = conditions.location) === null || _j === void 0 ? void 0 : _j.branchCode) === null || _k === void 0 ? void 0 : _k.$in;
122
+ const locationBranchCodeIn = conditions.location?.branchCode?.$in;
143
123
  if (Array.isArray(locationBranchCodeIn)) {
144
124
  andConditions.push({ 'location.branchCode': { $exists: true, $in: locationBranchCodeIn } });
145
125
  }
146
- const additionalPropertyElemMatch = (_l = conditions.additionalProperty) === null || _l === void 0 ? void 0 : _l.$elemMatch;
126
+ const additionalPropertyElemMatch = conditions.additionalProperty?.$elemMatch;
147
127
  if (additionalPropertyElemMatch !== undefined && additionalPropertyElemMatch !== null) {
148
128
  andConditions.push({
149
129
  additionalProperty: {
@@ -178,7 +158,7 @@ class EventRepo {
178
158
  }
179
159
  // tslint:disable-next-line:no-single-line-block-comment
180
160
  /* istanbul ignore else */
181
- const superEventLocationIdEq = (_p = (_o = (_m = params.superEvent) === null || _m === void 0 ? void 0 : _m.location) === null || _o === void 0 ? void 0 : _o.id) === null || _p === void 0 ? void 0 : _p.$eq;
161
+ const superEventLocationIdEq = params.superEvent?.location?.id?.$eq;
182
162
  if (typeof superEventLocationIdEq === 'string') {
183
163
  andConditions.push({
184
164
  'superEvent.location.id': {
@@ -221,7 +201,7 @@ class EventRepo {
221
201
  });
222
202
  }
223
203
  }
224
- const itemOfferedIdIn = (_s = (_r = (_q = params.offers) === null || _q === void 0 ? void 0 : _q.itemOffered) === null || _r === void 0 ? void 0 : _r.id) === null || _s === void 0 ? void 0 : _s.$in;
204
+ const itemOfferedIdIn = params.offers?.itemOffered?.id?.$in;
225
205
  if (Array.isArray(itemOfferedIdIn)) {
226
206
  andConditions.push({
227
207
  'offers.itemOffered.id': {
@@ -230,7 +210,7 @@ class EventRepo {
230
210
  }
231
211
  });
232
212
  }
233
- const itemOfferedTicketedSeatTypeOfIn = (_x = (_w = (_v = (_u = (_t = params.offers) === null || _t === void 0 ? void 0 : _t.itemOffered) === null || _u === void 0 ? void 0 : _u.serviceOutput) === null || _v === void 0 ? void 0 : _v.reservedTicket) === null || _w === void 0 ? void 0 : _w.ticketedSeat) === null || _x === void 0 ? void 0 : _x.typeOfs;
213
+ const itemOfferedTicketedSeatTypeOfIn = params.offers?.itemOffered?.serviceOutput?.reservedTicket?.ticketedSeat?.typeOfs;
234
214
  if (Array.isArray(itemOfferedTicketedSeatTypeOfIn)) {
235
215
  andConditions.push({
236
216
  'offers.itemOffered.serviceOutput.reservedTicket.ticketedSeat.typeOf': {
@@ -239,7 +219,7 @@ class EventRepo {
239
219
  }
240
220
  });
241
221
  }
242
- const itemOfferedServiceTypeIdIn = (_0 = (_z = (_y = params.offers) === null || _y === void 0 ? void 0 : _y.itemOffered) === null || _z === void 0 ? void 0 : _z.serviceType) === null || _0 === void 0 ? void 0 : _0.ids;
222
+ const itemOfferedServiceTypeIdIn = params.offers?.itemOffered?.serviceType?.ids;
243
223
  if (Array.isArray(itemOfferedServiceTypeIdIn)) {
244
224
  andConditions.push({
245
225
  'offers.itemOffered.serviceType.id': {
@@ -248,8 +228,8 @@ class EventRepo {
248
228
  }
249
229
  });
250
230
  }
251
- const sellerMakesOfferElemMatch = (_3 = (_2 = (_1 = params.offers) === null || _1 === void 0 ? void 0 : _1.seller) === null || _2 === void 0 ? void 0 : _2.makesOffer) === null || _3 === void 0 ? void 0 : _3.$elemMatch;
252
- if (typeof ((_4 = sellerMakesOfferElemMatch === null || sellerMakesOfferElemMatch === void 0 ? void 0 : sellerMakesOfferElemMatch['availableAtOrFrom.id']) === null || _4 === void 0 ? void 0 : _4.$eq) === 'string') {
231
+ const sellerMakesOfferElemMatch = params.offers?.seller?.makesOffer?.$elemMatch;
232
+ if (typeof sellerMakesOfferElemMatch?.['availableAtOrFrom.id']?.$eq === 'string') {
253
233
  andConditions.push({
254
234
  'offers.seller.makesOffer': {
255
235
  $exists: true,
@@ -300,188 +280,199 @@ class EventRepo {
300
280
  /**
301
281
  * イベントコードをキーにして冪等置換
302
282
  */
303
- upsertManyScreeningEventByIdentifier(params, options) {
304
- return __awaiter(this, void 0, void 0, function* () {
305
- const { update } = options;
306
- const bulkWriteOps = [];
307
- const queryFilters = [];
308
- if (Array.isArray(params)) {
309
- params.forEach(({ $set, $unset }) => {
310
- const { project, identifier } = $set;
311
- if (typeof identifier !== 'string' || identifier.length === 0) {
312
- throw new factory.errors.ArgumentNull('identifier');
313
- }
314
- // リソースのユニークネスを保証するfilter
315
- const filter = {
316
- 'project.id': { $eq: project.id },
317
- identifier: { $exists: true, $eq: identifier }
318
- };
319
- queryFilters.push({
320
- 'project.id': { $eq: project.id },
321
- identifier: { $exists: true, $eq: identifier }
322
- });
323
- if (update === true) {
324
- const { maximumPhysicalAttendeeCapacity, additionalProperty, eventStatus, location, name, superEvent, offers, doorTime, endDate, startDate } = $set;
325
- const setFields = {
326
- maximumPhysicalAttendeeCapacity, additionalProperty,
327
- eventStatus, location, name, superEvent, offers,
328
- doorTime, endDate, startDate
329
- };
330
- const updateOne = {
331
- filter,
332
- update: Object.assign({ $set: setFields }, ($unset !== undefined) ? { $unset } : undefined),
333
- upsert: false
334
- };
335
- bulkWriteOps.push({ updateOne });
336
- }
337
- else {
338
- const { id, coaInfo, description, maximumAttendeeCapacity, remainingAttendeeCapacity, checkInCount, attendeeCount, aggregateReservation } = $set, setOnInsertFields = __rest($set, ["id", "coaInfo", "description", "maximumAttendeeCapacity", "remainingAttendeeCapacity", "checkInCount", "attendeeCount", "aggregateReservation"]);
339
- const setOnInsert = Object.assign(Object.assign({}, setOnInsertFields), { identifier, _id: EventRepo.CREATE_ID() });
340
- const updateOne = {
341
- filter,
342
- update: {
343
- $setOnInsert: setOnInsert
344
- },
345
- upsert: true
346
- };
347
- bulkWriteOps.push({ updateOne });
348
- }
283
+ async upsertManyScreeningEventByIdentifier(params, options) {
284
+ const { update } = options;
285
+ const bulkWriteOps = [];
286
+ const queryFilters = [];
287
+ if (Array.isArray(params)) {
288
+ params.forEach(({ $set, $unset }) => {
289
+ const { project, identifier } = $set;
290
+ if (typeof identifier !== 'string' || identifier.length === 0) {
291
+ throw new factory.errors.ArgumentNull('identifier');
292
+ }
293
+ // リソースのユニークネスを保証するfilter
294
+ const filter = {
295
+ 'project.id': { $eq: project.id },
296
+ identifier: { $exists: true, $eq: identifier }
297
+ };
298
+ queryFilters.push({
299
+ 'project.id': { $eq: project.id },
300
+ identifier: { $exists: true, $eq: identifier }
349
301
  });
350
- }
351
- if (bulkWriteOps.length > 0) {
352
- const bulkWriteResult = yield this.eventModel.bulkWrite(bulkWriteOps, { ordered: false });
353
- // update:falseの場合、upsertedIdsのみmodifiedEventsとして返せばよい(2026-01-16~)
354
- if (!update) {
355
- // BulkWriteResult -> upsertedIds: { '0': '7iri6p4m54k0r3g' }
356
- return {
357
- bulkWriteResult,
358
- modifiedEvents: Object.values(bulkWriteResult.upsertedIds)
359
- .map((id) => ({ id: String(id) }))
302
+ if (update === true) {
303
+ const { maximumPhysicalAttendeeCapacity, additionalProperty, eventStatus, location, name, superEvent, offers, doorTime, endDate, startDate } = $set;
304
+ const setFields = {
305
+ maximumPhysicalAttendeeCapacity, additionalProperty,
306
+ eventStatus, location, name, superEvent, offers,
307
+ doorTime, endDate, startDate
308
+ };
309
+ const updateOne = {
310
+ filter,
311
+ update: {
312
+ $set: setFields,
313
+ ...($unset !== undefined) ? { $unset } : undefined
314
+ },
315
+ upsert: false
360
316
  };
317
+ bulkWriteOps.push({ updateOne });
361
318
  }
362
319
  else {
363
- // modifiedの場合upsertedIdsに含まれないので、idを検索する
364
- const modifiedEvents = yield this.eventModel.find({ $or: queryFilters }, {
365
- _id: 0,
366
- id: { $toString: '$_id' }
367
- })
368
- .lean()
369
- .exec();
370
- return { bulkWriteResult, modifiedEvents };
320
+ const { id, coaInfo, description, maximumAttendeeCapacity, remainingAttendeeCapacity, checkInCount, attendeeCount, aggregateReservation, ...setOnInsertFields } = $set;
321
+ const setOnInsert = {
322
+ ...setOnInsertFields,
323
+ identifier,
324
+ _id: EventRepo.CREATE_ID()
325
+ };
326
+ const updateOne = {
327
+ filter,
328
+ update: {
329
+ $setOnInsert: setOnInsert
330
+ },
331
+ upsert: true
332
+ };
333
+ bulkWriteOps.push({ updateOne });
371
334
  }
335
+ });
336
+ }
337
+ if (bulkWriteOps.length > 0) {
338
+ const bulkWriteResult = await this.eventModel.bulkWrite(bulkWriteOps, { ordered: false });
339
+ // update:falseの場合、upsertedIdsのみmodifiedEventsとして返せばよい(2026-01-16~)
340
+ if (!update) {
341
+ // BulkWriteResult -> upsertedIds: { '0': '7iri6p4m54k0r3g' }
342
+ return {
343
+ bulkWriteResult,
344
+ modifiedEvents: Object.values(bulkWriteResult.upsertedIds)
345
+ .map((id) => ({ id: String(id) }))
346
+ };
372
347
  }
373
- return { modifiedEvents: [] };
374
- });
348
+ else {
349
+ // modifiedの場合upsertedIdsに含まれないので、idを検索する
350
+ const modifiedEvents = await this.eventModel.find({ $or: queryFilters }, {
351
+ _id: 0,
352
+ id: { $toString: '$_id' }
353
+ })
354
+ .lean()
355
+ .exec();
356
+ return { bulkWriteResult, modifiedEvents };
357
+ }
358
+ }
359
+ return { modifiedEvents: [] };
375
360
  }
376
361
  /**
377
362
  * イベント部分更新
378
363
  */
379
- updatePartiallyById(params) {
380
- return __awaiter(this, void 0, void 0, function* () {
381
- // let doc: Document | null;
382
- const _a = params.attributes, { typeOf } = _a, updateFields = __rest(_a, ["typeOf"]);
383
- if (typeof typeOf !== 'string' || typeOf.length === 0) {
384
- throw new factory.errors.ArgumentNull('attributes.typeOf');
385
- }
386
- const doc = yield this.eventModel.findOneAndUpdate({
364
+ async updatePartiallyById(params) {
365
+ // let doc: Document | null;
366
+ const { typeOf, ...updateFields } = params.attributes;
367
+ if (typeof typeOf !== 'string' || typeOf.length === 0) {
368
+ throw new factory.errors.ArgumentNull('attributes.typeOf');
369
+ }
370
+ const doc = await this.eventModel.findOneAndUpdate({
371
+ _id: { $eq: params.id },
372
+ 'project.id': { $eq: params.project.id },
373
+ typeOf: { $eq: typeOf }
374
+ }, {
375
+ $set: updateFields
376
+ }, { upsert: false, new: false, projection: { _id: 1 } })
377
+ .lean()
378
+ .exec();
379
+ if (doc === null) {
380
+ throw new factory.errors.NotFound(this.eventModel.modelName);
381
+ }
382
+ }
383
+ /**
384
+ * 単一イベント編集
385
+ */
386
+ async updateEventById(params) {
387
+ let doc;
388
+ const { identifier, project, typeOf, organizer, aggregateReservation, maximumAttendeeCapacity, remainingAttendeeCapacity, checkInCount, attendeeCount, coaInfo, ...updateFields
389
+ // maximumPhysicalAttendeeCapacity, additionalProperty,
390
+ // eventStatus, location, name, superEvent, offers,
391
+ // doorTime, endDate, startDate
392
+ } = params.attributes;
393
+ if (typeof typeOf !== 'string' || typeOf.length === 0) {
394
+ throw new factory.errors.ArgumentNull('attributes.typeOf');
395
+ }
396
+ if (typeof params.id !== 'string' || params.id === '') {
397
+ throw new factory.errors.ArgumentNull('id');
398
+ }
399
+ try {
400
+ doc = await this.eventModel.findOneAndUpdate({
387
401
  _id: { $eq: params.id },
388
- 'project.id': { $eq: params.project.id },
389
402
  typeOf: { $eq: typeOf }
390
403
  }, {
391
- $set: updateFields
392
- }, { upsert: false, new: false, projection: { _id: 1 } })
404
+ // 編集のためのみのメソッドになったので、setOnInsertは廃止(2025-10-27~)
405
+ // 上書き禁止属性を除外(2022-08-24~)
406
+ // $setOnInsert: {
407
+ // typeOf,
408
+ // project,
409
+ // ...(typeof identifier === 'string' && identifier !== '') ? { identifier } : undefined
410
+ // },
411
+ $set: updateFields,
412
+ ...(params.$unset !== undefined) ? { $unset: params.$unset } : undefined
413
+ }, {
414
+ upsert: false,
415
+ new: true,
416
+ projection: { _id: 1 }
417
+ })
393
418
  .lean()
394
419
  .exec();
395
- if (doc === null) {
396
- throw new factory.errors.NotFound(this.eventModel.modelName);
397
- }
398
- });
399
- }
400
- /**
401
- * 単一イベント編集
402
- */
403
- updateEventById(params) {
404
- return __awaiter(this, void 0, void 0, function* () {
405
- let doc;
406
- const _a = params.attributes, { identifier, project, typeOf, organizer, aggregateReservation, maximumAttendeeCapacity, remainingAttendeeCapacity, checkInCount, attendeeCount, coaInfo } = _a, updateFields = __rest(_a, ["identifier", "project", "typeOf", "organizer", "aggregateReservation", "maximumAttendeeCapacity", "remainingAttendeeCapacity", "checkInCount", "attendeeCount", "coaInfo"])
407
- // maximumPhysicalAttendeeCapacity, additionalProperty,
408
- // eventStatus, location, name, superEvent, offers,
409
- // doorTime, endDate, startDate
410
- ;
411
- if (typeof typeOf !== 'string' || typeOf.length === 0) {
412
- throw new factory.errors.ArgumentNull('attributes.typeOf');
413
- }
414
- if (typeof params.id !== 'string' || params.id === '') {
415
- throw new factory.errors.ArgumentNull('id');
416
- }
417
- try {
418
- doc = yield this.eventModel.findOneAndUpdate({
419
- _id: { $eq: params.id },
420
- typeOf: { $eq: typeOf }
421
- }, Object.assign({
422
- // 編集のためのみのメソッドになったので、setOnInsertは廃止(2025-10-27~)
423
- // 上書き禁止属性を除外(2022-08-24~)
424
- // $setOnInsert: {
425
- // typeOf,
426
- // project,
427
- // ...(typeof identifier === 'string' && identifier !== '') ? { identifier } : undefined
428
- // },
429
- $set: updateFields }, (params.$unset !== undefined) ? { $unset: params.$unset } : undefined), {
430
- upsert: false,
431
- new: true,
432
- projection: { _id: 1 }
433
- })
434
- .lean()
435
- .exec();
436
- }
437
- catch (error) {
438
- if (yield (0, errorHandler_1.isMongoError)(error)) {
439
- if (error.code === errorHandler_1.MongoErrorCode.DuplicateKey) {
440
- throw new factory.errors.AlreadyInUse(factory.eventType.ScreeningEvent, ['offeredBy.member.identifier']);
441
- }
420
+ }
421
+ catch (error) {
422
+ if (await (0, errorHandler_1.isMongoError)(error)) {
423
+ if (error.code === errorHandler_1.MongoErrorCode.DuplicateKey) {
424
+ throw new factory.errors.AlreadyInUse(factory.eventType.ScreeningEvent, ['offeredBy.member.identifier']);
442
425
  }
443
- throw error;
444
- }
445
- if (doc === null) {
446
- throw new factory.errors.NotFound(this.eventModel.modelName);
447
426
  }
448
- });
427
+ throw error;
428
+ }
429
+ if (doc === null) {
430
+ throw new factory.errors.NotFound(this.eventModel.modelName);
431
+ }
449
432
  }
450
433
  /**
451
434
  * sskts専用
452
435
  */
453
- saveManyEvents(params) {
454
- return __awaiter(this, void 0, void 0, function* () {
455
- const bulkWriteOps = [];
456
- if (Array.isArray(params)) {
457
- params.forEach((p) => {
458
- const upsert = p.upsert === true;
459
- if (p.attributes.typeOf === factory.eventType.ScreeningEvent) {
460
- // 上書き禁止属性を除外(2022-08-24~)
461
- const _a = p.attributes, { identifier, project, typeOf, remainingAttendeeCapacity } = _a, updateFields = __rest(_a, ["identifier", "project", "typeOf", "remainingAttendeeCapacity"]);
462
- bulkWriteOps.push({
463
- updateOne: {
464
- filter: {
465
- _id: p.id,
466
- typeOf: p.attributes.typeOf
467
- },
468
- update: Object.assign({ $setOnInsert: Object.assign(Object.assign({ typeOf: p.attributes.typeOf, project: p.attributes.project }, (typeof p.attributes.identifier === 'string')
469
- ? { identifier: p.attributes.identifier } : undefined), (typeof p.attributes.remainingAttendeeCapacity === 'number')
436
+ async saveManyEvents(params) {
437
+ const bulkWriteOps = [];
438
+ if (Array.isArray(params)) {
439
+ params.forEach((p) => {
440
+ const upsert = p.upsert === true;
441
+ if (p.attributes.typeOf === factory.eventType.ScreeningEvent) {
442
+ // 上書き禁止属性を除外(2022-08-24~)
443
+ const { identifier, project, typeOf, remainingAttendeeCapacity, ...updateFields } = p.attributes;
444
+ bulkWriteOps.push({
445
+ updateOne: {
446
+ filter: {
447
+ _id: p.id,
448
+ typeOf: p.attributes.typeOf
449
+ },
450
+ update: {
451
+ $setOnInsert: {
452
+ typeOf: p.attributes.typeOf,
453
+ project: p.attributes.project,
454
+ ...(typeof p.attributes.identifier === 'string')
455
+ ? { identifier: p.attributes.identifier } : undefined,
456
+ ...(typeof p.attributes.remainingAttendeeCapacity === 'number')
470
457
  ? { remainingAttendeeCapacity: p.attributes.remainingAttendeeCapacity }
471
- : undefined), $set: updateFields }, (p.$unset !== undefined) ? { $unset: p.$unset } : undefined),
472
- upsert
473
- }
474
- });
475
- }
476
- else if (p.attributes.typeOf === factory.eventType.ScreeningEventSeries) {
477
- throw new factory.errors.Internal('typeOf: ScreeningEventSeries discontinued');
478
- }
479
- });
480
- }
481
- if (bulkWriteOps.length > 0) {
482
- yield this.eventModel.bulkWrite(bulkWriteOps, { ordered: false });
483
- }
484
- });
458
+ : undefined
459
+ },
460
+ $set: updateFields,
461
+ // $unsetに対応(2022-08-31~)
462
+ ...(p.$unset !== undefined) ? { $unset: p.$unset } : undefined
463
+ },
464
+ upsert
465
+ }
466
+ });
467
+ }
468
+ else if (p.attributes.typeOf === factory.eventType.ScreeningEventSeries) {
469
+ throw new factory.errors.Internal('typeOf: ScreeningEventSeries discontinued');
470
+ }
471
+ });
472
+ }
473
+ if (bulkWriteOps.length > 0) {
474
+ await this.eventModel.bulkWrite(bulkWriteOps, { ordered: false });
475
+ }
485
476
  }
486
477
  // /**
487
478
  // * tttsイベントを識別子によって冪等作成する
@@ -527,546 +518,532 @@ class EventRepo {
527
518
  /**
528
519
  * イベントを検索する(inclusion projection)
529
520
  */
530
- projectEventFields(params, inclusion) {
531
- return __awaiter(this, void 0, void 0, function* () {
532
- var _a;
533
- const conditions = EventRepo.CREATE_MONGO_CONDITIONS(params);
534
- let projection;
535
- const positiveProjectionFields = (Array.isArray(inclusion))
536
- ? inclusion.filter((key) => String(key) !== 'id' && String(key) !== '_id')
537
- : [];
538
- if (Array.isArray(inclusion) && inclusion.length > 0) {
539
- projection = Object.assign(Object.assign({}, Object.fromEntries(positiveProjectionFields.map((key) => ([key, 1])))), { _id: 0, id: { $toString: '$_id' } });
540
- }
541
- else {
542
- // discontinue(2024-07-24~)
543
- throw new factory.errors.ArgumentNull('inclusion', 'inclusion must be specified');
544
- }
545
- const query = this.eventModel.find({ $and: conditions }, projection);
546
- if (typeof params.limit === 'number' && params.limit > 0) {
547
- const page = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
548
- query.limit(params.limit)
549
- .skip(params.limit * (page - 1));
550
- }
551
- // tslint:disable-next-line:no-single-line-block-comment
552
- /* istanbul ignore else */
553
- if (((_a = params.sort) === null || _a === void 0 ? void 0 : _a.startDate) !== undefined) {
554
- query.sort({ startDate: params.sort.startDate });
555
- }
556
- // const explainResult = await query.explain()
557
- // .exec();
558
- // console.log(explainResult[0].executionStats.allPlansExecution.map((e: any) => e.executionStages.inputStage));
559
- // console.log(explainResult[0].executionStats.allPlansExecution);
560
- // console.log(explainResult[0].queryPlanner?.winningPlan);
561
- // console.log(explainResult[0].queryPlanner?.winningPlan?.inputStage?.inputStage?.inputStage);
562
- // console.log(explainResult);
563
- // return [];
564
- return query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
565
- .lean() // lean(2024-08-01~)
566
- .exec();
567
- });
521
+ async projectEventFields(params, inclusion) {
522
+ const conditions = EventRepo.CREATE_MONGO_CONDITIONS(params);
523
+ let projection;
524
+ const positiveProjectionFields = (Array.isArray(inclusion))
525
+ ? inclusion.filter((key) => String(key) !== 'id' && String(key) !== '_id')
526
+ : [];
527
+ if (Array.isArray(inclusion) && inclusion.length > 0) {
528
+ projection = {
529
+ ...Object.fromEntries(positiveProjectionFields.map((key) => ([key, 1]))),
530
+ _id: 0, // hide _id(2024-08-01~)
531
+ id: { $toString: '$_id' }
532
+ };
533
+ }
534
+ else {
535
+ // discontinue(2024-07-24~)
536
+ throw new factory.errors.ArgumentNull('inclusion', 'inclusion must be specified');
537
+ }
538
+ const query = this.eventModel.find({ $and: conditions }, projection);
539
+ if (typeof params.limit === 'number' && params.limit > 0) {
540
+ const page = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
541
+ query.limit(params.limit)
542
+ .skip(params.limit * (page - 1));
543
+ }
544
+ // tslint:disable-next-line:no-single-line-block-comment
545
+ /* istanbul ignore else */
546
+ if (params.sort?.startDate !== undefined) {
547
+ query.sort({ startDate: params.sort.startDate });
548
+ }
549
+ // const explainResult = await query.explain()
550
+ // .exec();
551
+ // console.log(explainResult[0].executionStats.allPlansExecution.map((e: any) => e.executionStages.inputStage));
552
+ // console.log(explainResult[0].executionStats.allPlansExecution);
553
+ // console.log(explainResult[0].queryPlanner?.winningPlan);
554
+ // console.log(explainResult[0].queryPlanner?.winningPlan?.inputStage?.inputStage?.inputStage);
555
+ // console.log(explainResult);
556
+ // return [];
557
+ return query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
558
+ .lean() // lean(2024-08-01~)
559
+ .exec();
568
560
  }
569
- findByAdditionalProperty(params) {
570
- return __awaiter(this, void 0, void 0, function* () {
571
- const query = this.eventModel.find({
572
- 'project.id': { $eq: params.project.id },
573
- additionalProperty: { $eq: params.additionalProperty }
574
- }, { _id: 1 });
575
- // if (typeof params.limit === 'number' && params.limit > 0) {
576
- // const page: number = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
577
- // query.limit(params.limit)
578
- // .skip(params.limit * (page - 1));
579
- // }
580
- return query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
581
- .lean()
582
- .exec();
583
- });
561
+ async findByAdditionalProperty(params) {
562
+ const query = this.eventModel.find({
563
+ 'project.id': { $eq: params.project.id },
564
+ additionalProperty: { $eq: params.additionalProperty }
565
+ }, { _id: 1 });
566
+ // if (typeof params.limit === 'number' && params.limit > 0) {
567
+ // const page: number = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
568
+ // query.limit(params.limit)
569
+ // .skip(params.limit * (page - 1));
570
+ // }
571
+ return query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
572
+ .lean()
573
+ .exec();
584
574
  }
585
575
  /**
586
576
  * apiで公開属性を検索する(2024-10-13~)
587
577
  */
588
- aggregatePublicFields(params, inclusion, options) {
589
- return __awaiter(this, void 0, void 0, function* () {
590
- var _a, _b;
591
- const { includeOffers, includeSellerMakesOffer, sellerMakesOfferAvailableAtIn } = options;
592
- const conditions = EventRepo.CREATE_MONGO_CONDITIONS(params);
593
- let projection;
594
- let positiveProjectionFields;
595
- if (Array.isArray(inclusion) && inclusion.length > 0) {
596
- positiveProjectionFields = inclusion.filter((key) => AVAILABLE_PUBLIC_PROJECT_FIELDS.includes(key));
597
- projection = Object.assign({ _id: 0, id: { $toString: '$_id' } }, Object.fromEntries(positiveProjectionFields.map((key) => ([key, 1]))));
598
- if (includeOffers) {
599
- projection = Object.assign(Object.assign(Object.assign({}, projection), { 'offers.typeOf': 1, 'offers.eligibleQuantity': 1, 'offers.itemOffered': 1, 'offers.identifier': 1, 'offers.offeredThrough': 1, 'offers.unacceptedPaymentMethod': 1, 'offers.seller.typeOf': 1, 'offers.seller.id': 1, 'offers.seller.name': 1 }), (includeSellerMakesOffer)
600
- ? Object.assign({}, (Array.isArray(sellerMakesOfferAvailableAtIn))
601
- ? {
602
- 'offers.seller.makesOffer': {
603
- $filter: {
604
- input: '$offers.seller.makesOffer',
605
- as: 'sellerMakesOffer',
606
- cond: { $in: ['$$sellerMakesOffer.availableAtOrFrom.id', sellerMakesOfferAvailableAtIn] }
578
+ async aggregatePublicFields(params, inclusion, options) {
579
+ const { includeOffers, includeSellerMakesOffer, sellerMakesOfferAvailableAtIn } = options;
580
+ const conditions = EventRepo.CREATE_MONGO_CONDITIONS(params);
581
+ let projection;
582
+ let positiveProjectionFields;
583
+ if (Array.isArray(inclusion) && inclusion.length > 0) {
584
+ positiveProjectionFields = inclusion.filter((key) => AVAILABLE_PUBLIC_PROJECT_FIELDS.includes(key));
585
+ projection = {
586
+ _id: 0,
587
+ id: { $toString: '$_id' },
588
+ ...Object.fromEntries(positiveProjectionFields.map((key) => ([key, 1])))
589
+ };
590
+ if (includeOffers) {
591
+ projection = {
592
+ ...projection,
593
+ 'offers.typeOf': 1,
594
+ 'offers.eligibleQuantity': 1,
595
+ 'offers.itemOffered': 1,
596
+ 'offers.identifier': 1, // support オファーコレクションコード(2025-09-29~)
597
+ 'offers.offeredThrough': 1,
598
+ 'offers.unacceptedPaymentMethod': 1,
599
+ 'offers.seller.typeOf': 1,
600
+ 'offers.seller.id': 1,
601
+ 'offers.seller.name': 1,
602
+ ...(includeSellerMakesOffer)
603
+ ? {
604
+ ...(Array.isArray(sellerMakesOfferAvailableAtIn))
605
+ ? {
606
+ 'offers.seller.makesOffer': {
607
+ $filter: {
608
+ input: '$offers.seller.makesOffer',
609
+ as: 'sellerMakesOffer',
610
+ cond: { $in: ['$$sellerMakesOffer.availableAtOrFrom.id', sellerMakesOfferAvailableAtIn] }
611
+ }
607
612
  }
608
613
  }
609
- }
610
- : { 'offers.seller.makesOffer': 1 }) : undefined);
611
- }
612
- }
613
- else {
614
- // discontinue(2024-07-24~)
615
- throw new factory.errors.ArgumentNull('inclusion', 'inclusion must be specified');
616
- }
617
- const aggregate = this.eventModel.aggregate([
618
- { $match: { $and: conditions } },
619
- ...(((_a = params.sort) === null || _a === void 0 ? void 0 : _a.startDate) !== undefined)
620
- ? [{ $sort: { startDate: params.sort.startDate } }]
621
- : [],
622
- { $project: projection }
623
- ]);
624
- if (typeof params.limit === 'number' && params.limit > 0) {
625
- const page = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
626
- aggregate.limit(params.limit * page)
627
- .skip(params.limit * (page - 1));
628
- }
629
- // tslint:disable-next-line:no-single-line-block-comment
630
- /* istanbul ignore else */
631
- if (((_b = params.sort) === null || _b === void 0 ? void 0 : _b.startDate) !== undefined) {
632
- aggregate.sort({ startDate: params.sort.startDate });
614
+ : { 'offers.seller.makesOffer': 1 }
615
+ }
616
+ : undefined
617
+ };
633
618
  }
634
- return aggregate
635
- .option({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
636
- .exec();
637
- });
619
+ }
620
+ else {
621
+ // discontinue(2024-07-24~)
622
+ throw new factory.errors.ArgumentNull('inclusion', 'inclusion must be specified');
623
+ }
624
+ const aggregate = this.eventModel.aggregate([
625
+ { $match: { $and: conditions } },
626
+ ...(params.sort?.startDate !== undefined)
627
+ ? [{ $sort: { startDate: params.sort.startDate } }]
628
+ : [],
629
+ { $project: projection }
630
+ ]);
631
+ if (typeof params.limit === 'number' && params.limit > 0) {
632
+ const page = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
633
+ aggregate.limit(params.limit * page)
634
+ .skip(params.limit * (page - 1));
635
+ }
636
+ // tslint:disable-next-line:no-single-line-block-comment
637
+ /* istanbul ignore else */
638
+ if (params.sort?.startDate !== undefined) {
639
+ aggregate.sort({ startDate: params.sort.startDate });
640
+ }
641
+ return aggregate
642
+ .option({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
643
+ .exec();
638
644
  }
639
645
  /**
640
646
  * IDのみで検索する
641
647
  * projectionなし
642
648
  */
643
- findAnyEventById(params) {
644
- return __awaiter(this, void 0, void 0, function* () {
645
- var _a;
646
- const doc = yield this.eventModel.findOne(Object.assign({ _id: { $eq: params.id.$eq }, 'project.id': { $eq: params.project.id.$eq }, typeOf: { $in: [factory.eventType.ScreeningEvent] } }, (typeof ((_a = params.organizer) === null || _a === void 0 ? void 0 : _a.id.$eq) === 'string')
649
+ async findAnyEventById(params) {
650
+ const doc = await this.eventModel.findOne({
651
+ _id: { $eq: params.id.$eq },
652
+ 'project.id': { $eq: params.project.id.$eq },
653
+ typeOf: { $in: [factory.eventType.ScreeningEvent] },
654
+ ...(typeof params.organizer?.id.$eq === 'string')
647
655
  ? { 'organizer.id': { $exists: true, $eq: params.organizer.id.$eq } }
648
- : undefined), {
649
- __v: 0,
650
- createdAt: 0,
651
- updatedAt: 0,
652
- // DefaultでaggregateEntranceGateを取得しない(2023-01-25~)
653
- aggregateEntranceGate: 0,
654
- // DefaultでaggregateOfferを取得しない(2023-01-24~)
655
- aggregateOffer: 0
656
- })
657
- .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
658
- .exec();
659
- if (doc === null) {
660
- throw new factory.errors.NotFound('Event');
661
- }
662
- return doc.toObject();
663
- });
656
+ : undefined
657
+ }, {
658
+ __v: 0,
659
+ createdAt: 0,
660
+ updatedAt: 0,
661
+ // DefaultでaggregateEntranceGateを取得しない(2023-01-25~)
662
+ aggregateEntranceGate: 0,
663
+ // DefaultでaggregateOfferを取得しない(2023-01-24~)
664
+ aggregateOffer: 0
665
+ })
666
+ .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
667
+ .exec();
668
+ if (doc === null) {
669
+ throw new factory.errors.NotFound('Event');
670
+ }
671
+ return doc.toObject();
664
672
  }
665
- searchEventIds(params) {
666
- return __awaiter(this, void 0, void 0, function* () {
667
- const conditions = EventRepo.CREATE_MONGO_CONDITIONS(params);
668
- const query = this.eventModel.distinct('_id', { $and: conditions });
669
- return query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
670
- .exec();
671
- });
673
+ async searchEventIds(params) {
674
+ const conditions = EventRepo.CREATE_MONGO_CONDITIONS(params);
675
+ const query = this.eventModel.distinct('_id', { $and: conditions });
676
+ return query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
677
+ .exec();
672
678
  }
673
679
  /**
674
680
  * 特定イベントから指定フィールドのみ取得する
675
681
  * イベント IDは必ず返ります
676
682
  */
677
- projectEventFieldsById(params, inclusion // add projection(2024-07-18~)
683
+ async projectEventFieldsById(params, inclusion // add projection(2024-07-18~)
678
684
  ) {
679
- return __awaiter(this, void 0, void 0, function* () {
680
- const projection = {
681
- _id: 0,
682
- id: { $toString: '$_id' }
683
- };
684
- if (Array.isArray(inclusion) && inclusion.length > 0) {
685
- inclusion.forEach((field) => {
686
- if (String(field) !== '_id' && String(field) !== 'id') {
687
- projection[field] = 1;
688
- }
689
- });
690
- }
691
- else {
692
- // discontinue(2024-07-24~)
693
- throw new factory.errors.ArgumentNull('inclusion', 'inclusion must be specified');
694
- // projection = PROJECTION_MINIMIZED_EVENT;
695
- }
696
- const doc = yield this.eventModel.findOne({ _id: { $eq: params.id } }, projection)
697
- .lean() // lean(2024-07-24~)
698
- .exec();
699
- if (doc === null) {
700
- throw new factory.errors.NotFound(this.eventModel.modelName);
701
- }
702
- return doc;
703
- });
685
+ const projection = {
686
+ _id: 0,
687
+ id: { $toString: '$_id' }
688
+ };
689
+ if (Array.isArray(inclusion) && inclusion.length > 0) {
690
+ inclusion.forEach((field) => {
691
+ if (String(field) !== '_id' && String(field) !== 'id') {
692
+ projection[field] = 1;
693
+ }
694
+ });
695
+ }
696
+ else {
697
+ // discontinue(2024-07-24~)
698
+ throw new factory.errors.ArgumentNull('inclusion', 'inclusion must be specified');
699
+ // projection = PROJECTION_MINIMIZED_EVENT;
700
+ }
701
+ const doc = await this.eventModel.findOne({ _id: { $eq: params.id } }, projection)
702
+ .lean() // lean(2024-07-24~)
703
+ .exec();
704
+ if (doc === null) {
705
+ throw new factory.errors.NotFound(this.eventModel.modelName);
706
+ }
707
+ return doc;
704
708
  }
705
709
  /**
706
710
  * イベントをキャンセルする
707
711
  */
708
- cancelEvent(params) {
709
- return __awaiter(this, void 0, void 0, function* () {
710
- return this.eventModel.updateOne({
711
- _id: { $eq: params.id },
712
- 'project.id': { $eq: params.project.id }
713
- }, { $set: { eventStatus: factory.eventStatusType.EventCancelled } }, { includeResultMetadata: true })
714
- .exec();
715
- });
712
+ async cancelEvent(params) {
713
+ return this.eventModel.updateOne({
714
+ _id: { $eq: params.id },
715
+ 'project.id': { $eq: params.project.id }
716
+ }, { $set: { eventStatus: factory.eventStatusType.EventCancelled } }, { includeResultMetadata: true })
717
+ .exec();
716
718
  }
717
719
  /**
718
720
  * 興行イベントのsuperEventを最新の情報に同期する
719
721
  */
720
- syncScreeningEventSeries2screeningEvents(params) {
721
- return __awaiter(this, void 0, void 0, function* () {
722
- const superEvent = EventFactory.minimizeSuperEvent({ superEventFromDB: params.superEventFromDB });
723
- yield this.eventModel.updateMany({
724
- typeOf: { $eq: factory.eventType.ScreeningEvent },
725
- 'project.id': { $eq: params.project.id },
726
- 'superEvent.id': { $exists: true, $eq: params.superEventFromDB.id },
727
- startDate: { $gte: params.startDate.$gte }
728
- }, {
729
- $set: {
730
- superEvent
731
- }
732
- })
733
- .exec();
734
- });
722
+ async syncScreeningEventSeries2screeningEvents(params) {
723
+ const superEvent = EventFactory.minimizeSuperEvent({ superEventFromDB: params.superEventFromDB });
724
+ await this.eventModel.updateMany({
725
+ typeOf: { $eq: factory.eventType.ScreeningEvent },
726
+ 'project.id': { $eq: params.project.id },
727
+ 'superEvent.id': { $exists: true, $eq: params.superEventFromDB.id },
728
+ startDate: { $gte: params.startDate.$gte }
729
+ }, {
730
+ $set: {
731
+ superEvent
732
+ }
733
+ })
734
+ .exec();
735
735
  }
736
- deleteEventById(params) {
737
- return __awaiter(this, void 0, void 0, function* () {
738
- yield this.eventModel.findOneAndDelete({
739
- _id: params.id,
740
- 'project.id': { $eq: params.project.id }
741
- })
742
- .exec();
743
- });
736
+ async deleteEventById(params) {
737
+ await this.eventModel.findOneAndDelete({
738
+ _id: params.id,
739
+ 'project.id': { $eq: params.project.id }
740
+ })
741
+ .exec();
744
742
  }
745
- deleteManyEventByOrganizerId(params) {
746
- return __awaiter(this, void 0, void 0, function* () {
747
- return this.eventModel.deleteMany({
748
- 'project.id': { $eq: params.project.id },
749
- 'organizer.id': { $exists: true, $eq: params.organizer.id }
750
- })
751
- .exec();
752
- });
743
+ async deleteManyEventByOrganizerId(params) {
744
+ return this.eventModel.deleteMany({
745
+ 'project.id': { $eq: params.project.id },
746
+ 'organizer.id': { $exists: true, $eq: params.organizer.id }
747
+ })
748
+ .exec();
753
749
  }
754
- deleteManyEventsByScreeningRoom(params) {
755
- return __awaiter(this, void 0, void 0, function* () {
756
- return this.eventModel.deleteMany({
757
- 'project.id': { $eq: params.project.id },
758
- 'location.branchCode': { $exists: true, $eq: params.location.branchCode },
759
- 'superEvent.location.id': { $exists: true, $eq: params.location.containedInPlace.id }
760
- })
761
- .exec();
762
- });
750
+ async deleteManyEventsByScreeningRoom(params) {
751
+ return this.eventModel.deleteMany({
752
+ 'project.id': { $eq: params.project.id },
753
+ 'location.branchCode': { $exists: true, $eq: params.location.branchCode },
754
+ 'superEvent.location.id': { $exists: true, $eq: params.location.containedInPlace.id }
755
+ })
756
+ .exec();
763
757
  }
764
- deleteManyBySuperEventId(params) {
765
- return __awaiter(this, void 0, void 0, function* () {
766
- return this.eventModel.deleteMany({
767
- 'project.id': { $eq: params.project.id },
768
- 'superEvent.id': { $exists: true, $eq: params.superEvent.id }
769
- })
770
- .exec();
771
- });
758
+ async deleteManyBySuperEventId(params) {
759
+ return this.eventModel.deleteMany({
760
+ 'project.id': { $eq: params.project.id },
761
+ 'superEvent.id': { $exists: true, $eq: params.superEvent.id }
762
+ })
763
+ .exec();
772
764
  }
773
- deleteManyBySuperEventLocationId(params) {
774
- return __awaiter(this, void 0, void 0, function* () {
775
- return this.eventModel.deleteMany({
776
- 'project.id': { $eq: params.project.id },
777
- 'superEvent.location.id': { $exists: true, $eq: params.superEvent.location.id }
778
- })
779
- .exec();
780
- });
765
+ async deleteManyBySuperEventLocationId(params) {
766
+ return this.eventModel.deleteMany({
767
+ 'project.id': { $eq: params.project.id },
768
+ 'superEvent.location.id': { $exists: true, $eq: params.superEvent.location.id }
769
+ })
770
+ .exec();
781
771
  }
782
772
  /**
783
773
  * 興行(プロダクト)から削除する
784
774
  */
785
- deleteManyEventsByItemOfferedId(params) {
786
- return __awaiter(this, void 0, void 0, function* () {
787
- return this.eventModel.deleteMany({
788
- 'project.id': { $eq: params.project.id },
789
- 'offers.itemOffered.id': { $exists: true, $in: params.offers.itemOffered.id.$in }
790
- })
791
- .exec();
792
- });
775
+ async deleteManyEventsByItemOfferedId(params) {
776
+ return this.eventModel.deleteMany({
777
+ 'project.id': { $eq: params.project.id },
778
+ 'offers.itemOffered.id': { $exists: true, $in: params.offers.itemOffered.id.$in }
779
+ })
780
+ .exec();
793
781
  }
794
- deleteManyEventsEndedByProject(params) {
795
- return __awaiter(this, void 0, void 0, function* () {
796
- return this.eventModel.deleteMany({
797
- typeOf: { $in: params.typeOf.$in },
798
- 'project.id': { $eq: params.project.id },
799
- endDate: { $lte: params.endDate.$lte }
800
- })
801
- .exec();
802
- });
782
+ async deleteManyEventsEndedByProject(params) {
783
+ return this.eventModel.deleteMany({
784
+ typeOf: { $in: params.typeOf.$in },
785
+ 'project.id': { $eq: params.project.id },
786
+ endDate: { $lte: params.endDate.$lte }
787
+ })
788
+ .exec();
803
789
  }
804
- deleteManyEventsEnded(params) {
805
- return __awaiter(this, void 0, void 0, function* () {
806
- return this.eventModel.deleteMany({
807
- typeOf: { $eq: params.typeOf.$eq },
808
- endDate: { $lte: params.endDate.$lte }
809
- })
810
- .exec();
811
- });
790
+ async deleteManyEventsEnded(params) {
791
+ return this.eventModel.deleteMany({
792
+ typeOf: { $eq: params.typeOf.$eq },
793
+ endDate: { $lte: params.endDate.$lte }
794
+ })
795
+ .exec();
812
796
  }
813
- deleteByProject(params) {
814
- return __awaiter(this, void 0, void 0, function* () {
815
- yield this.eventModel.deleteMany({
816
- 'project.id': { $eq: params.project.id }
817
- })
818
- .exec();
819
- });
797
+ async deleteByProject(params) {
798
+ await this.eventModel.deleteMany({
799
+ 'project.id': { $eq: params.project.id }
800
+ })
801
+ .exec();
820
802
  }
821
803
  /**
822
804
  * 集計属性を更新する
823
805
  */
824
- updateAggregationById(params, update) {
825
- return __awaiter(this, void 0, void 0, function* () {
826
- const doc = yield this.eventModel.findOneAndUpdate({ _id: { $eq: params.id } }, update, {
827
- new: false,
828
- projection: { _id: 1 }
829
- })
830
- .lean()
831
- .exec();
832
- if (doc === null) {
833
- throw new factory.errors.NotFound(this.eventModel.modelName);
834
- }
835
- });
806
+ async updateAggregationById(params, update) {
807
+ const doc = await this.eventModel.findOneAndUpdate({ _id: { $eq: params.id } }, update, {
808
+ new: false,
809
+ projection: { _id: 1 }
810
+ })
811
+ .lean()
812
+ .exec();
813
+ if (doc === null) {
814
+ throw new factory.errors.NotFound(this.eventModel.modelName);
815
+ }
836
816
  }
837
- bulkWrite(bulkWriteOps) {
838
- return __awaiter(this, void 0, void 0, function* () {
839
- return this.eventModel.bulkWrite(bulkWriteOps, { ordered: false });
840
- });
817
+ async bulkWrite(bulkWriteOps) {
818
+ return this.eventModel.bulkWrite(bulkWriteOps, { ordered: false });
841
819
  }
842
820
  getCursor(conditions, projection) {
843
821
  return this.eventModel.find(conditions, projection)
844
822
  .sort({ startDate: factory.sortType.Descending })
845
823
  .cursor();
846
824
  }
847
- addAvailableAtOrFrom(params) {
848
- return __awaiter(this, void 0, void 0, function* () {
849
- yield this.eventModel.updateOne({ _id: { $eq: params.id } }, {
850
- $push: {
851
- 'offers.seller.makesOffer': params.offers.seller.makesOffer
852
- }
853
- }, { includeResultMetadata: true })
854
- .exec();
855
- });
825
+ async addAvailableAtOrFrom(params) {
826
+ await this.eventModel.updateOne({ _id: { $eq: params.id } }, {
827
+ $push: {
828
+ 'offers.seller.makesOffer': params.offers.seller.makesOffer
829
+ }
830
+ }, { includeResultMetadata: true })
831
+ .exec();
856
832
  }
857
- unsetUnnecessaryFields(params) {
858
- return __awaiter(this, void 0, void 0, function* () {
859
- return this.eventModel.updateMany(params.filter, { $unset: params.$unset }, { timestamps: false })
860
- .exec();
861
- });
833
+ async unsetUnnecessaryFields(params) {
834
+ return this.eventModel.updateMany(params.filter, { $unset: params.$unset }, { timestamps: false })
835
+ .exec();
862
836
  }
863
- aggregateEvent(params) {
864
- return __awaiter(this, void 0, void 0, function* () {
865
- const statuses = yield Promise.all([
866
- factory.eventStatusType.EventScheduled,
867
- factory.eventStatusType.EventCancelled,
868
- factory.eventStatusType.EventPostponed
869
- ].map((eventStatus) => __awaiter(this, void 0, void 0, function* () {
870
- var _a, _b;
871
- const matchConditions = Object.assign({ startDate: {
872
- $gte: params.startFrom,
873
- $lte: params.startThrough
874
- }, typeOf: { $eq: params.typeOf }, eventStatus: { $eq: eventStatus } }, (typeof ((_b = (_a = params.project) === null || _a === void 0 ? void 0 : _a.id) === null || _b === void 0 ? void 0 : _b.$ne) === 'string')
837
+ async aggregateEvent(params) {
838
+ const statuses = await Promise.all([
839
+ factory.eventStatusType.EventScheduled,
840
+ factory.eventStatusType.EventCancelled,
841
+ factory.eventStatusType.EventPostponed
842
+ ].map(async (eventStatus) => {
843
+ const matchConditions = {
844
+ startDate: {
845
+ $gte: params.startFrom,
846
+ $lte: params.startThrough
847
+ },
848
+ typeOf: { $eq: params.typeOf },
849
+ eventStatus: { $eq: eventStatus },
850
+ ...(typeof params.project?.id?.$ne === 'string')
875
851
  ? { 'project.id': { $ne: params.project.id.$ne } }
876
- : undefined);
877
- return this.agggregateByStatus({ matchConditions, status: eventStatus });
878
- })));
879
- return { statuses };
880
- });
852
+ : undefined
853
+ };
854
+ return this.agggregateByStatus({ matchConditions, status: eventStatus });
855
+ }));
856
+ return { statuses };
881
857
  }
882
858
  // tslint:disable-next-line:max-func-body-length
883
- agggregateByStatus(params) {
884
- return __awaiter(this, void 0, void 0, function* () {
885
- const matchConditions = params.matchConditions;
886
- const eventStatus = params.status;
887
- const aggregations = yield this.eventModel.aggregate([
888
- {
889
- $match: matchConditions
890
- },
891
- {
892
- $project: {
893
- remainingCapacityRate: {
894
- $cond: {
895
- if: {
896
- $and: [
897
- { $isNumber: '$maximumAttendeeCapacity' },
898
- { $isNumber: '$remainingAttendeeCapacity' }
899
- ]
900
- },
901
- then: {
902
- $cond: {
903
- if: { $gt: ['$maximumAttendeeCapacity', 0] },
904
- then: {
905
- $multiply: [
906
- { $divide: ['$remainingAttendeeCapacity', '$maximumAttendeeCapacity'] },
907
- // tslint:disable-next-line:no-magic-numbers
908
- 100
909
- ]
910
- },
911
- else: 0
912
- }
913
- },
914
- else: 0
915
- }
916
- },
917
- eventStatus: '$eventStatus',
918
- startDate: '$startDate',
919
- endDate: '$endDate',
920
- typeOf: '$typeOf',
921
- maximumAttendeeCapacity: {
922
- $cond: {
923
- if: { $isNumber: '$maximumAttendeeCapacity' },
924
- then: '$maximumAttendeeCapacity',
925
- else: 0
926
- }
927
- },
928
- remainingAttendeeCapacity: {
929
- $cond: {
930
- if: { $isNumber: '$remainingAttendeeCapacity' },
931
- then: '$remainingAttendeeCapacity',
932
- else: 0
933
- }
934
- },
935
- reservationCount: {
936
- $cond: {
937
- if: { $isNumber: '$aggregateReservation.reservationCount' },
938
- then: '$aggregateReservation.reservationCount',
939
- else: 0
940
- }
941
- },
942
- offerCount: {
943
- $cond: {
944
- if: { $isNumber: '$aggregateOffer.offerCount' },
945
- then: '$aggregateOffer.offerCount',
946
- else: 0
947
- }
859
+ async agggregateByStatus(params) {
860
+ const matchConditions = params.matchConditions;
861
+ const eventStatus = params.status;
862
+ const aggregations = await this.eventModel.aggregate([
863
+ {
864
+ $match: matchConditions
865
+ },
866
+ {
867
+ $project: {
868
+ remainingCapacityRate: {
869
+ $cond: {
870
+ if: {
871
+ $and: [
872
+ { $isNumber: '$maximumAttendeeCapacity' },
873
+ { $isNumber: '$remainingAttendeeCapacity' }
874
+ ]
875
+ },
876
+ then: {
877
+ $cond: {
878
+ if: { $gt: ['$maximumAttendeeCapacity', 0] },
879
+ then: {
880
+ $multiply: [
881
+ { $divide: ['$remainingAttendeeCapacity', '$maximumAttendeeCapacity'] },
882
+ // tslint:disable-next-line:no-magic-numbers
883
+ 100
884
+ ]
885
+ },
886
+ else: 0
887
+ }
888
+ },
889
+ else: 0
890
+ }
891
+ },
892
+ eventStatus: '$eventStatus',
893
+ startDate: '$startDate',
894
+ endDate: '$endDate',
895
+ typeOf: '$typeOf',
896
+ maximumAttendeeCapacity: {
897
+ $cond: {
898
+ if: { $isNumber: '$maximumAttendeeCapacity' },
899
+ then: '$maximumAttendeeCapacity',
900
+ else: 0
901
+ }
902
+ },
903
+ remainingAttendeeCapacity: {
904
+ $cond: {
905
+ if: { $isNumber: '$remainingAttendeeCapacity' },
906
+ then: '$remainingAttendeeCapacity',
907
+ else: 0
908
+ }
909
+ },
910
+ reservationCount: {
911
+ $cond: {
912
+ if: { $isNumber: '$aggregateReservation.reservationCount' },
913
+ then: '$aggregateReservation.reservationCount',
914
+ else: 0
915
+ }
916
+ },
917
+ offerCount: {
918
+ $cond: {
919
+ if: { $isNumber: '$aggregateOffer.offerCount' },
920
+ then: '$aggregateOffer.offerCount',
921
+ else: 0
948
922
  }
949
- }
950
- },
951
- {
952
- $group: {
953
- _id: '$typeOf',
954
- eventCount: { $sum: 1 },
955
- reservationCount: { $sum: '$reservationCount' },
956
- avgOfferCount: { $avg: '$offerCount' },
957
- maximumAttendeeCapacity: { $sum: '$maximumAttendeeCapacity' },
958
- remainingAttendeeCapacity: { $sum: '$remainingAttendeeCapacity' },
959
- avgRemainingCapacityRate: { $avg: '$remainingCapacityRate' },
960
- maxRemainingCapacityRate: { $max: '$remainingCapacityRate' },
961
- minRemainingCapacityRate: { $min: '$remainingCapacityRate' }
962
- }
963
- },
964
- {
965
- $project: {
966
- _id: 0,
967
- eventCount: '$eventCount',
968
- reservationCount: '$reservationCount',
969
- avgOfferCount: '$avgOfferCount',
970
- maximumAttendeeCapacity: '$maximumAttendeeCapacity',
971
- remainingAttendeeCapacity: '$remainingAttendeeCapacity',
972
- avgRemainingCapacityRate: '$avgRemainingCapacityRate',
973
- maxRemainingCapacityRate: '$maxRemainingCapacityRate',
974
- minRemainingCapacityRate: '$minRemainingCapacityRate'
975
923
  }
976
924
  }
977
- ])
978
- .exec();
979
- // tslint:disable-next-line:no-magic-numbers
980
- const percents = [50, 95, 99];
981
- if (aggregations.length === 0) {
982
- return {
983
- status: eventStatus,
984
- aggregation: {
985
- eventCount: 0,
986
- reservationCount: 0,
987
- avgOfferCount: 0,
988
- maximumAttendeeCapacity: 0,
989
- remainingAttendeeCapacity: 0,
990
- avgRemainingCapacityRate: 0,
991
- maxRemainingCapacityRate: 0,
992
- minRemainingCapacityRate: 0,
993
- percentilesRemainingCapacityRate: percents.map((percent) => {
994
- return {
995
- name: String(percent),
996
- value: 0
997
- };
998
- })
999
- }
1000
- };
1001
- }
1002
- const ranks4percentile = percents.map((percentile) => {
1003
- return {
1004
- percentile,
1005
- // tslint:disable-next-line:no-magic-numbers
1006
- rank: Math.floor(aggregations[0].eventCount * percentile / 100)
1007
- };
1008
- });
1009
- const aggregations2 = yield this.eventModel.aggregate([
1010
- {
1011
- $match: matchConditions
1012
- },
1013
- {
1014
- $project: {
1015
- remainingCapacityRate: {
1016
- $cond: {
1017
- if: {
1018
- $and: [
1019
- { $isNumber: '$maximumAttendeeCapacity' },
1020
- { $isNumber: '$remainingAttendeeCapacity' }
1021
- ]
1022
- },
1023
- then: {
1024
- $cond: {
1025
- if: { $gt: ['$maximumAttendeeCapacity', 0] },
1026
- then: {
1027
- $multiply: [
1028
- { $divide: ['$remainingAttendeeCapacity', '$maximumAttendeeCapacity'] },
1029
- // tslint:disable-next-line:no-magic-numbers
1030
- 100
1031
- ]
1032
- },
1033
- else: 0
1034
- }
1035
- },
1036
- else: 0
1037
- }
1038
- },
1039
- eventStatus: '$eventStatus',
1040
- startDate: '$startDate',
1041
- endDate: '$endDate',
1042
- typeOf: '$typeOf'
1043
- }
1044
- },
1045
- { $sort: { remainingCapacityRate: 1 } },
1046
- {
1047
- $group: {
1048
- _id: '$typeOf',
1049
- remainingCapacityRates: { $push: '$remainingCapacityRate' }
1050
- }
1051
- },
1052
- {
1053
- $project: {
1054
- _id: 0,
1055
- percentilesRemainingCapacityRate: ranks4percentile.map((rank) => {
1056
- return {
1057
- name: String(rank.percentile),
1058
- value: { $arrayElemAt: ['$remainingCapacityRates', rank.rank] }
1059
- };
1060
- })
1061
- }
925
+ },
926
+ {
927
+ $group: {
928
+ _id: '$typeOf',
929
+ eventCount: { $sum: 1 },
930
+ reservationCount: { $sum: '$reservationCount' },
931
+ avgOfferCount: { $avg: '$offerCount' },
932
+ maximumAttendeeCapacity: { $sum: '$maximumAttendeeCapacity' },
933
+ remainingAttendeeCapacity: { $sum: '$remainingAttendeeCapacity' },
934
+ avgRemainingCapacityRate: { $avg: '$remainingCapacityRate' },
935
+ maxRemainingCapacityRate: { $max: '$remainingCapacityRate' },
936
+ minRemainingCapacityRate: { $min: '$remainingCapacityRate' }
1062
937
  }
1063
- ])
1064
- .exec();
938
+ },
939
+ {
940
+ $project: {
941
+ _id: 0,
942
+ eventCount: '$eventCount',
943
+ reservationCount: '$reservationCount',
944
+ avgOfferCount: '$avgOfferCount',
945
+ maximumAttendeeCapacity: '$maximumAttendeeCapacity',
946
+ remainingAttendeeCapacity: '$remainingAttendeeCapacity',
947
+ avgRemainingCapacityRate: '$avgRemainingCapacityRate',
948
+ maxRemainingCapacityRate: '$maxRemainingCapacityRate',
949
+ minRemainingCapacityRate: '$minRemainingCapacityRate'
950
+ }
951
+ }
952
+ ])
953
+ .exec();
954
+ // tslint:disable-next-line:no-magic-numbers
955
+ const percents = [50, 95, 99];
956
+ if (aggregations.length === 0) {
1065
957
  return {
1066
958
  status: eventStatus,
1067
- aggregation: Object.assign(Object.assign({}, aggregations[0]), aggregations2[0])
959
+ aggregation: {
960
+ eventCount: 0,
961
+ reservationCount: 0,
962
+ avgOfferCount: 0,
963
+ maximumAttendeeCapacity: 0,
964
+ remainingAttendeeCapacity: 0,
965
+ avgRemainingCapacityRate: 0,
966
+ maxRemainingCapacityRate: 0,
967
+ minRemainingCapacityRate: 0,
968
+ percentilesRemainingCapacityRate: percents.map((percent) => {
969
+ return {
970
+ name: String(percent),
971
+ value: 0
972
+ };
973
+ })
974
+ }
975
+ };
976
+ }
977
+ const ranks4percentile = percents.map((percentile) => {
978
+ return {
979
+ percentile,
980
+ // tslint:disable-next-line:no-magic-numbers
981
+ rank: Math.floor(aggregations[0].eventCount * percentile / 100)
1068
982
  };
1069
983
  });
984
+ const aggregations2 = await this.eventModel.aggregate([
985
+ {
986
+ $match: matchConditions
987
+ },
988
+ {
989
+ $project: {
990
+ remainingCapacityRate: {
991
+ $cond: {
992
+ if: {
993
+ $and: [
994
+ { $isNumber: '$maximumAttendeeCapacity' },
995
+ { $isNumber: '$remainingAttendeeCapacity' }
996
+ ]
997
+ },
998
+ then: {
999
+ $cond: {
1000
+ if: { $gt: ['$maximumAttendeeCapacity', 0] },
1001
+ then: {
1002
+ $multiply: [
1003
+ { $divide: ['$remainingAttendeeCapacity', '$maximumAttendeeCapacity'] },
1004
+ // tslint:disable-next-line:no-magic-numbers
1005
+ 100
1006
+ ]
1007
+ },
1008
+ else: 0
1009
+ }
1010
+ },
1011
+ else: 0
1012
+ }
1013
+ },
1014
+ eventStatus: '$eventStatus',
1015
+ startDate: '$startDate',
1016
+ endDate: '$endDate',
1017
+ typeOf: '$typeOf'
1018
+ }
1019
+ },
1020
+ { $sort: { remainingCapacityRate: 1 } },
1021
+ {
1022
+ $group: {
1023
+ _id: '$typeOf',
1024
+ remainingCapacityRates: { $push: '$remainingCapacityRate' }
1025
+ }
1026
+ },
1027
+ {
1028
+ $project: {
1029
+ _id: 0,
1030
+ percentilesRemainingCapacityRate: ranks4percentile.map((rank) => {
1031
+ return {
1032
+ name: String(rank.percentile),
1033
+ value: { $arrayElemAt: ['$remainingCapacityRates', rank.rank] }
1034
+ };
1035
+ })
1036
+ }
1037
+ }
1038
+ ])
1039
+ .exec();
1040
+ return {
1041
+ status: eventStatus,
1042
+ aggregation: {
1043
+ ...aggregations[0],
1044
+ ...aggregations2[0]
1045
+ }
1046
+ };
1070
1047
  }
1071
1048
  }
1072
1049
  exports.EventRepo = EventRepo;