@chevre/domain 21.2.0-alpha.98 → 21.2.0

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 (171) hide show
  1. package/example/src/chevre/aggregateEventReservation.ts +1 -1
  2. package/example/src/chevre/aggregateSellerPaymentAccepted.ts +27 -0
  3. package/example/src/chevre/aggregation/aggregateSystem.ts +53 -22
  4. package/example/src/chevre/countDelayedTasks.ts +7 -2
  5. package/example/src/chevre/createManyEventsIfNotExist.ts +199 -46
  6. package/example/src/chevre/findScreeningRoomsByBranchCode.ts +4 -3
  7. package/example/src/chevre/giveUpStartDatePassedCertainPeriod.ts +56 -0
  8. package/example/src/chevre/lockStockHolder.ts +5 -2
  9. package/example/src/chevre/migrateCategoryCodeAdditionalProperties.ts +116 -0
  10. package/example/src/chevre/migrateScreeningEventSeriesVersion.ts +79 -0
  11. package/example/src/chevre/processPay.ts +5 -2
  12. package/example/src/chevre/processRegisterMembership.ts +8 -4
  13. package/example/src/chevre/processRegisterPaymentCard.ts +8 -4
  14. package/example/src/chevre/processReserve.ts +1 -1
  15. package/example/src/chevre/searchAbortedTasks.ts +4 -6
  16. package/example/src/chevre/searchActions.ts +33 -0
  17. package/example/src/chevre/searchEventSeats.ts +5 -2
  18. package/example/src/chevre/searchHoldReservations.ts +38 -0
  19. package/example/src/chevre/searchPermissions.ts +54 -0
  20. package/example/src/chevre/searchScreeningRooms.ts +35 -0
  21. package/example/src/chevre/sendEmailMessage.ts +1 -2
  22. package/example/src/chevre/syncScreeningRooms.ts +22 -0
  23. package/example/src/chevre/syncScreeningRoomsAll.ts +44 -0
  24. package/example/src/chevre/unsetContainsInPlaceFromMovieTheater.ts +41 -0
  25. package/lib/chevre/factory/order.d.ts +4 -1
  26. package/lib/chevre/factory/order.js +19 -6
  27. package/lib/chevre/repo/account.js +3 -2
  28. package/lib/chevre/repo/accountTransaction.js +2 -1
  29. package/lib/chevre/repo/accountingReport.d.ts +1 -3
  30. package/lib/chevre/repo/action.d.ts +50 -1
  31. package/lib/chevre/repo/action.js +103 -34
  32. package/lib/chevre/repo/additionalProperty.js +2 -1
  33. package/lib/chevre/repo/aggregation.d.ts +3 -0
  34. package/lib/chevre/repo/aggregation.js +3 -0
  35. package/lib/chevre/repo/assetTransaction.js +6 -5
  36. package/lib/chevre/repo/categoryCode.d.ts +1 -1
  37. package/lib/chevre/repo/categoryCode.js +37 -25
  38. package/lib/chevre/repo/code.js +3 -2
  39. package/lib/chevre/repo/comment.js +2 -1
  40. package/lib/chevre/repo/creativeWork.d.ts +1 -1
  41. package/lib/chevre/repo/creativeWork.js +35 -12
  42. package/lib/chevre/repo/customer.js +2 -1
  43. package/lib/chevre/repo/emailMessage.js +2 -1
  44. package/lib/chevre/repo/event.d.ts +30 -2
  45. package/lib/chevre/repo/event.js +87 -36
  46. package/lib/chevre/repo/member.d.ts +14 -0
  47. package/lib/chevre/repo/member.js +31 -3
  48. package/lib/chevre/repo/merchantReturnPolicy.js +2 -1
  49. package/lib/chevre/repo/mongoose/schemas/action.js +12 -0
  50. package/lib/chevre/repo/mongoose/schemas/assetTransaction.d.ts +3 -3
  51. package/lib/chevre/repo/mongoose/schemas/holdReservation.d.ts +75 -0
  52. package/lib/chevre/repo/mongoose/schemas/holdReservation.js +93 -0
  53. package/lib/chevre/repo/mongoose/schemas/offer.d.ts +3 -3
  54. package/lib/chevre/repo/mongoose/schemas/order.d.ts +21 -21
  55. package/lib/chevre/repo/mongoose/schemas/place.d.ts +6 -0
  56. package/lib/chevre/repo/mongoose/schemas/place.js +16 -1
  57. package/lib/chevre/repo/mongoose/schemas/product.js +6 -0
  58. package/lib/chevre/repo/mongoose/schemas/reservation.d.ts +9 -9
  59. package/lib/chevre/repo/mongoose/schemas/transaction.d.ts +3 -3
  60. package/lib/chevre/repo/offer.js +3 -2
  61. package/lib/chevre/repo/offerCatalog.js +0 -27
  62. package/lib/chevre/repo/offerItemCondition.js +2 -1
  63. package/lib/chevre/repo/order.js +8 -7
  64. package/lib/chevre/repo/ownershipInfo.js +2 -7
  65. package/lib/chevre/repo/paymentServiceProvider.d.ts +65 -0
  66. package/lib/chevre/repo/paymentServiceProvider.js +156 -0
  67. package/lib/chevre/repo/place.d.ts +203 -27
  68. package/lib/chevre/repo/place.js +1726 -694
  69. package/lib/chevre/repo/priceSpecification.js +3 -2
  70. package/lib/chevre/repo/product.d.ts +5 -3
  71. package/lib/chevre/repo/product.js +92 -5
  72. package/lib/chevre/repo/project.js +2 -1
  73. package/lib/chevre/repo/reservation.d.ts +9 -1
  74. package/lib/chevre/repo/reservation.js +29 -20
  75. package/lib/chevre/repo/role.d.ts +7 -0
  76. package/lib/chevre/repo/role.js +39 -2
  77. package/lib/chevre/repo/seller.d.ts +21 -1
  78. package/lib/chevre/repo/seller.js +59 -4
  79. package/lib/chevre/repo/serviceOutput.js +2 -1
  80. package/lib/chevre/repo/stockHolder.d.ts +143 -7
  81. package/lib/chevre/repo/stockHolder.js +622 -104
  82. package/lib/chevre/repo/task.d.ts +12 -1
  83. package/lib/chevre/repo/task.js +17 -7
  84. package/lib/chevre/repo/transaction.js +6 -5
  85. package/lib/chevre/repo/trip.js +2 -1
  86. package/lib/chevre/repository.d.ts +6 -0
  87. package/lib/chevre/repository.js +8 -1
  88. package/lib/chevre/service/aggregation/event/aggregateScreeningEvent.js +18 -8
  89. package/lib/chevre/service/aggregation/event/aggregateUseActionsOnEvent.js +19 -8
  90. package/lib/chevre/service/aggregation/system.d.ts +43 -1
  91. package/lib/chevre/service/aggregation/system.js +112 -2
  92. package/lib/chevre/service/assetTransaction/moneyTransfer.js +1 -1
  93. package/lib/chevre/service/assetTransaction/pay/account/validation.js +1 -1
  94. package/lib/chevre/service/assetTransaction/pay.d.ts +5 -1
  95. package/lib/chevre/service/assetTransaction/pay.js +7 -7
  96. package/lib/chevre/service/assetTransaction/refund.js +1 -1
  97. package/lib/chevre/service/assetTransaction/reserve.js +10 -3
  98. package/lib/chevre/service/event.d.ts +3 -0
  99. package/lib/chevre/service/event.js +52 -21
  100. package/lib/chevre/service/iam.d.ts +6 -2
  101. package/lib/chevre/service/iam.js +23 -9
  102. package/lib/chevre/service/offer/event/factory.js +22 -13
  103. package/lib/chevre/service/offer/event/importFromCOA.js +2 -2
  104. package/lib/chevre/service/offer/eventServiceByCOA/factory.js +15 -8
  105. package/lib/chevre/service/offer/eventServiceByCOA.js +7 -9
  106. package/lib/chevre/service/offer/product/factory.js +13 -6
  107. package/lib/chevre/service/offer/product.js +2 -2
  108. package/lib/chevre/service/offer.d.ts +16 -8
  109. package/lib/chevre/service/offer.js +71 -8
  110. package/lib/chevre/service/order/createAccountingReportIfNotExist.js +31 -17
  111. package/lib/chevre/service/order/onOrderStatusChanged/factory.js +1 -1
  112. package/lib/chevre/service/order/onOrderStatusChanged.js +2 -2
  113. package/lib/chevre/service/order/placeOrder.js +4 -4
  114. package/lib/chevre/service/order/returnOrder.js +1 -1
  115. package/lib/chevre/service/order/sendOrder.js +3 -3
  116. package/lib/chevre/service/payment/any/onPaymentStatusChanged.js +4 -6
  117. package/lib/chevre/service/payment/any/onRefund.js +46 -42
  118. package/lib/chevre/service/payment/any.d.ts +9 -6
  119. package/lib/chevre/service/payment/any.js +6 -2
  120. package/lib/chevre/service/payment/creditCard.js +2 -2
  121. package/lib/chevre/service/payment/movieTicket/checkByIdentifier.d.ts +8 -7
  122. package/lib/chevre/service/payment/movieTicket/factory.d.ts +1 -1
  123. package/lib/chevre/service/payment/movieTicket/getCredentials.d.ts +1 -1
  124. package/lib/chevre/service/payment/movieTicket/getCredentials.js +1 -1
  125. package/lib/chevre/service/payment/movieTicket/validation.d.ts +3 -4
  126. package/lib/chevre/service/payment/movieTicket/validation.js +53 -12
  127. package/lib/chevre/service/payment/movieTicket.d.ts +1 -1
  128. package/lib/chevre/service/payment/movieTicket.js +4 -4
  129. package/lib/chevre/service/reserve/cancelReservation.js +15 -3
  130. package/lib/chevre/service/reserve/confirmReservation.js +19 -11
  131. package/lib/chevre/service/task/aggregateScreeningEvent.js +1 -1
  132. package/lib/chevre/service/task/cancelPendingReservation.js +1 -1
  133. package/lib/chevre/service/task/cancelReservation.js +1 -1
  134. package/lib/chevre/service/task/deleteTransaction.js +2 -0
  135. package/lib/chevre/service/task/onEventChanged.d.ts +7 -0
  136. package/lib/chevre/service/task/onEventChanged.js +29 -0
  137. package/lib/chevre/service/task/onResourceUpdated.d.ts +7 -0
  138. package/lib/chevre/service/task/onResourceUpdated.js +396 -0
  139. package/lib/chevre/service/task/syncScreeningRooms.d.ts +7 -0
  140. package/lib/chevre/service/task/syncScreeningRooms.js +24 -0
  141. package/lib/chevre/service/task/voidReserveTransaction.js +1 -1
  142. package/lib/chevre/service/transaction/deleteTransaction.d.ts +2 -0
  143. package/lib/chevre/service/transaction/deleteTransaction.js +129 -1
  144. package/lib/chevre/service/transaction/moneyTransfer/exportTasks/factory.js +1 -0
  145. package/lib/chevre/service/transaction/moneyTransfer/factory.d.ts +1 -1
  146. package/lib/chevre/service/transaction/moneyTransfer.js +1 -1
  147. package/lib/chevre/service/transaction/orderProgramMembership/findCreditCard.js +1 -1
  148. package/lib/chevre/service/transaction/orderProgramMembership/findPaymentCardPermit.js +1 -1
  149. package/lib/chevre/service/transaction/orderProgramMembership.js +7 -4
  150. package/lib/chevre/service/transaction/placeOrder/exportTasks/factory.js +1 -0
  151. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/givePointAward.js +1 -1
  152. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/moneyTransfer.js +1 -1
  153. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/registerService.js +1 -1
  154. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/sendEmailMessage.js +4 -4
  155. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions.js +3 -4
  156. package/lib/chevre/service/transaction/placeOrderInProgress/result/acceptedOffers.js +8 -12
  157. package/lib/chevre/service/transaction/placeOrderInProgress.js +6 -4
  158. package/lib/chevre/service/transaction/returnOrder/exportTasks/factory.js +1 -0
  159. package/lib/chevre/service/transaction/returnOrder/potentialActions/returnMoneyTransfer.js +2 -2
  160. package/lib/chevre/service/transaction/returnOrder/potentialActions/returnPaymentMethod.js +5 -5
  161. package/lib/chevre/service/transaction/returnOrder/potentialActions/returnPointAward.js +2 -2
  162. package/lib/chevre/service/transaction/returnOrder/potentialActions/sendEmailMessage.js +3 -3
  163. package/lib/chevre/service/transaction/returnOrder/potentialActions.js +1 -1
  164. package/lib/chevre/service/transaction/returnOrder.js +3 -1
  165. package/lib/chevre/settings.d.ts +11 -0
  166. package/lib/chevre/settings.js +44 -2
  167. package/package.json +3 -3
  168. package/example/src/chevre/eventCatalog2eventService.ts +0 -123
  169. package/example/src/chevre/migrateOrderAdditionalProperties.ts +0 -85
  170. package/example/src/chevre/migrateStockHolderKeys.ts +0 -89
  171. package/example/src/chevre/searchAssetTransactions.ts +0 -30
@@ -236,12 +236,14 @@ function searchEventSeatOffers(params) {
236
236
  }
237
237
  },
238
238
  $projection: params.$projection
239
- });
239
+ }, settings_1.USE_READ_SCREENING_ROOM_TYPE);
240
240
  if (seats.length > 0) {
241
241
  const availabilities = yield repos.stockHolder.searchHolders({
242
+ project: { id: params.event.project.id },
242
243
  eventId: params.event.id,
243
244
  startDate: moment(params.event.startDate)
244
245
  .toDate(),
246
+ hasTicketedSeat: true,
245
247
  offers: seats.map((s) => {
246
248
  var _a;
247
249
  return {
@@ -625,7 +627,7 @@ function processLockOfferRateLimit(params) {
625
627
  */
626
628
  function processLockSeats(params) {
627
629
  return (repos) => __awaiter(this, void 0, void 0, function* () {
628
- var _a, _b;
630
+ var _a, _b, _c, _d, _e;
629
631
  const offers = [];
630
632
  params.reservations.forEach((r) => {
631
633
  var _a, _b;
@@ -674,12 +676,15 @@ function processLockSeats(params) {
674
676
  if (((_a = params.transaction.object) === null || _a === void 0 ? void 0 : _a.useHoldStockByTransactionNumber) === true) {
675
677
  holder = params.transaction.transactionNumber;
676
678
  }
677
- const maximumAttendeeCapacity4event = (_b = params.event.location) === null || _b === void 0 ? void 0 : _b.maximumAttendeeCapacity;
679
+ const hasTicketedSeat = ((_d = (_c = (_b = params.event.offers.itemOffered.serviceOutput) === null || _b === void 0 ? void 0 : _b.reservedTicket) === null || _c === void 0 ? void 0 : _c.ticketedSeat) === null || _d === void 0 ? void 0 : _d.typeOf) === factory.placeType.Seat;
680
+ const maximumAttendeeCapacity4event = (_e = params.event.location) === null || _e === void 0 ? void 0 : _e.maximumAttendeeCapacity;
678
681
  if (typeof maximumAttendeeCapacity4event === 'number') {
679
682
  yield repos.stockHolder.lockIfNotLimitExceeded({
683
+ project: { id: params.event.project.id },
680
684
  eventId: params.event.id,
681
685
  startDate: moment(params.event.startDate)
682
686
  .toDate(),
687
+ hasTicketedSeat,
683
688
  offers,
684
689
  expires,
685
690
  holder
@@ -687,9 +692,11 @@ function processLockSeats(params) {
687
692
  }
688
693
  else {
689
694
  yield repos.stockHolder.lock({
695
+ project: { id: params.event.project.id },
690
696
  eventId: params.event.id,
691
697
  startDate: moment(params.event.startDate)
692
698
  .toDate(),
699
+ hasTicketedSeat,
693
700
  offers,
694
701
  expires,
695
702
  holder
@@ -17,6 +17,9 @@ export declare function importFromCOA(params: {
17
17
  id: string;
18
18
  typeOf: factory.organizationType.Project;
19
19
  };
20
+ /**
21
+ * 施設コード
22
+ */
20
23
  locationBranchCode: string;
21
24
  importFrom: Date;
22
25
  importThrough: Date;
@@ -21,8 +21,8 @@ const difference = require("lodash.difference");
21
21
  const moment = require("moment-timezone");
22
22
  const credentials_1 = require("../credentials");
23
23
  const factory = require("../factory");
24
+ const settings_1 = require("../settings");
24
25
  const offer_1 = require("./offer");
25
- // const customsearch = google.customsearch('v1');
26
26
  const debug = createDebug('chevre-domain:service:event');
27
27
  const coaAuthClient = new COA.auth.RefreshToken({
28
28
  endpoint: credentials_1.credentials.coa.endpoint,
@@ -99,18 +99,29 @@ function importFromCOA(params) {
99
99
  if (typeof (seller === null || seller === void 0 ? void 0 : seller.id) !== 'string') {
100
100
  throw new factory.errors.NotFound('Seller', `Seller with branchCod '${params.locationBranchCode}' not found`);
101
101
  }
102
- // 施設取得
103
- let movieTheater = createMovieTheaterFromCOA(project, { id: seller.id }, yield masterService.theater({ theaterCode: params.locationBranchCode }), yield masterService.screen({ theaterCode: params.locationBranchCode }));
104
102
  // saveMovieTheater:trueの場合のみ、施設保管(2022-10-10~)
105
103
  if (params.saveMovieTheater === true) {
106
- movieTheater = yield repos.place.saveMovieTheaterByBranchCode4coa(movieTheater);
104
+ const savingMovieTheater = createMovieTheaterFromCOA(project, { id: seller.id }, yield masterService.theater({ theaterCode: params.locationBranchCode }), yield masterService.screen({ theaterCode: params.locationBranchCode }));
105
+ yield repos.place.saveMovieTheaterByBranchCode4coa(savingMovieTheater);
106
+ // } else {
107
+ // movieTheater = await repos.place.findMovieTheaterByBranchCode({
108
+ // project: { id: project.id },
109
+ // branchCode: creatingMovieTheater.branchCode
110
+ // });
107
111
  }
108
- else {
109
- movieTheater = yield repos.place.findMovieTheaterByBranchCode({
110
- project: { id: movieTheater.project.id },
111
- branchCode: movieTheater.branchCode
112
- });
112
+ const movieTheaters = yield repos.place.searchMovieTheaters({
113
+ limit: 1,
114
+ page: 1,
115
+ project: { id: { $eq: project.id } },
116
+ branchCode: { $eq: params.locationBranchCode }
117
+ }, ['_id', 'typeOf', 'branchCode', 'name', 'kanaName'], []);
118
+ const movieTheater = movieTheaters.shift();
119
+ if (movieTheater === undefined) {
120
+ throw new factory.errors.NotFound(factory.placeType.MovieTheater);
113
121
  }
122
+ const screeningRooms = yield repos.place.searchScreeningRooms({
123
+ containedInPlace: { branchCode: { $eq: movieTheater.branchCode } }
124
+ }, settings_1.USE_READ_SCREENING_ROOM_TYPE);
114
125
  const targetImportFrom = moment(`${moment(params.importFrom)
115
126
  .tz('Asia/Tokyo')
116
127
  .format('YYYY-MM-DD')}T00:00:00+09:00`);
@@ -121,7 +132,7 @@ function importFromCOA(params) {
121
132
  debug('importing screening events...', targetImportFrom, targetImportThrough);
122
133
  const { screeningEventSerieses, savedEventsCount } = yield saveScreeningEventSeries({
123
134
  locationBranchCode: params.locationBranchCode,
124
- movieTheater: movieTheater,
135
+ movieTheater,
125
136
  project: project,
126
137
  saveScreeningEventSeries: params.saveScreeningEventSeries
127
138
  })(repos);
@@ -130,7 +141,8 @@ function importFromCOA(params) {
130
141
  // イベント永続化
131
142
  const screeningEvents = yield saveScreeningEvents({
132
143
  locationBranchCode: params.locationBranchCode,
133
- movieTheater: movieTheater,
144
+ // movieTheater: movieTheater,
145
+ screeningRooms,
134
146
  screeningEventSerieses: screeningEventSerieses,
135
147
  project: project,
136
148
  targetImportFrom: targetImportFrom.toDate(),
@@ -183,7 +195,6 @@ function importFromCOA(params) {
183
195
  exports.importFromCOA = importFromCOA;
184
196
  function saveScreeningEventSeries(params) {
185
197
  return (repos) => __awaiter(this, void 0, void 0, function* () {
186
- const movieTheater = params.movieTheater;
187
198
  const project = params.project;
188
199
  const masterService = new COA.service.Master({
189
200
  endpoint: credentials_1.credentials.coa.endpoint,
@@ -214,12 +225,12 @@ function saveScreeningEventSeries(params) {
214
225
  const availablePaymentMethodTypes = yield repos.categoryCode.search({
215
226
  project: { id: { $eq: params.project.id } },
216
227
  inCodeSet: { identifier: { $eq: factory.categoryCode.CategorySetIdentifier.PaymentMethodType } }
217
- });
228
+ }, [], []);
218
229
  const screeningEventSerieses = filmsFromCOA.map((filmFromCOA) => {
219
230
  return createScreeningEventSeriesFromCOA({
220
231
  project: project,
221
232
  filmFromCOA: filmFromCOA,
222
- movieTheater: movieTheater,
233
+ movieTheater: params.movieTheater,
223
234
  eirinKubuns: eirinKubuns,
224
235
  eizouKubuns: eizouKubuns,
225
236
  joueihousikiKubuns: joueihousikiKubuns,
@@ -293,7 +304,7 @@ function saveScreeningEvents(params) {
293
304
  }
294
305
  function createScreeningEvents(params) {
295
306
  return () => __awaiter(this, void 0, void 0, function* () {
296
- const movieTheater = params.movieTheater;
307
+ // const movieTheater = params.movieTheater;
297
308
  const screeningEventSerieses = params.screeningEventSerieses;
298
309
  const project = params.project;
299
310
  const masterService = new COA.service.Master({
@@ -329,8 +340,11 @@ function createScreeningEvents(params) {
329
340
  titleCode: scheduleFromCOA.titleCode,
330
341
  titleBranchNum: scheduleFromCOA.titleBranchNum
331
342
  });
332
- // スクリーン存在チェック
333
- const screenRoom = movieTheater.containsPlace.find((place) => place.branchCode === scheduleFromCOA.screenCode);
343
+ // ルーム存在チェック
344
+ const screenRoom = params.screeningRooms.find((place) => place.branchCode === scheduleFromCOA.screenCode);
345
+ // const screenRoom = <factory.place.screeningRoom.IPlace | undefined>movieTheater.containsPlace.find(
346
+ // (place) => place.branchCode === scheduleFromCOA.screenCode
347
+ // );
334
348
  if (screenRoom === undefined) {
335
349
  // tslint:disable-next-line:no-console
336
350
  console.error('screenRoom not found.', scheduleFromCOA.screenCode);
@@ -448,7 +462,15 @@ function createScreeningEventFromCOA(params) {
448
462
  typeOf: 'WebAPI',
449
463
  identifier: factory.service.webAPI.Identifier.COA
450
464
  },
451
- priceCurrency: factory.priceCurrency.JPY
465
+ priceCurrency: factory.priceCurrency.JPY,
466
+ itemOffered: {
467
+ serviceOutput: {
468
+ reservedTicket: {
469
+ typeOf: 'Ticket',
470
+ ticketedSeat: { typeOf: factory.placeType.Seat }
471
+ }
472
+ }
473
+ }
452
474
  };
453
475
  const { additionalProperty, coaInfo } = createScreeningEventAdditionalPropertyFromCOA(params);
454
476
  return {
@@ -586,7 +608,10 @@ function createScreeningEventSeriesFromCOA(params) {
586
608
  endDate: endDate,
587
609
  startDate: startDate,
588
610
  coaInfo,
589
- offers: Object.assign({ project: { typeOf: params.project.typeOf, id: params.project.id }, typeOf: factory.offerType.Offer, priceCurrency: factory.priceCurrency.JPY }, (Array.isArray(unacceptedPaymentMethod)) ? { unacceptedPaymentMethod: unacceptedPaymentMethod } : undefined),
611
+ offers: Object.assign({
612
+ // 不要なので廃止(2023-06-09~)
613
+ // project: { typeOf: params.project.typeOf, id: params.project.id },
614
+ typeOf: factory.offerType.Offer, priceCurrency: factory.priceCurrency.JPY }, (Array.isArray(unacceptedPaymentMethod)) ? { unacceptedPaymentMethod: unacceptedPaymentMethod } : undefined),
590
615
  additionalProperty
591
616
  };
592
617
  }
@@ -767,8 +792,14 @@ function updateEvent4ttts(params) {
767
792
  throw error;
768
793
  }
769
794
  // アクション完了
770
- yield repos.action.complete({ typeOf: action.typeOf, id: action.id, result: {} });
771
- yield (0, offer_1.onEventChanged)({ event, isNew: false })({
795
+ yield repos.action.complete({ typeOf: action.typeOf, id: action.id, result: { id: event.id } });
796
+ yield (0, offer_1.onEventChanged)({
797
+ id: [event.id],
798
+ project: { id: event.project.id },
799
+ typeOf: event.typeOf,
800
+ isNew: false,
801
+ useInform: true
802
+ })({
772
803
  event: repos.event,
773
804
  project: repos.project,
774
805
  task: repos.task
@@ -18,6 +18,10 @@ export declare function searchPermissions(params: {
18
18
  member: MemberRepo;
19
19
  role: RoleRepo;
20
20
  }) => Promise<{
21
- roleNames: string[];
22
- permissions: IPermission[];
21
+ hasRole: {
22
+ roleName: string;
23
+ }[];
24
+ permissions: {
25
+ _id: string;
26
+ }[];
23
27
  }>;
@@ -16,18 +16,32 @@ exports.searchPermissions = void 0;
16
16
  function searchPermissions(params) {
17
17
  return (repos) => __awaiter(this, void 0, void 0, function* () {
18
18
  let permissions = [];
19
- // プロジェクトメンバーを検索
20
- const projectMembers = yield repos.member.search({
19
+ const hasRole = yield repos.member.aggregateRoleNames({
21
20
  project: { id: { $eq: params.project.id } },
22
21
  member: { id: { $eq: params.member.id } }
23
22
  });
24
- // 持っているロールを検索
25
- const roleNames = projectMembers.reduce((a, b) => [...a, ...(Array.isArray(b.member.hasRole)) ? b.member.hasRole.map((r) => r.roleName) : []], []);
26
- const roles = yield repos.role.search({ roleName: { $in: roleNames } });
27
- // 権限をまとめる
28
- permissions = roles.reduce((a, b) => [...a, ...b.permissions], []);
29
- permissions = [...new Set(permissions)];
30
- return { roleNames, permissions };
23
+ if (hasRole.length > 0) {
24
+ permissions = yield repos.role.aggregatePermissions({ roleName: { $in: hasRole.map((r) => r.roleName) } });
25
+ }
26
+ return { hasRole, permissions };
27
+ // let permissions: IPermission[] = [];
28
+ // const projectMembers = await repos.member.search({
29
+ // project: { id: { $eq: params.project.id } },
30
+ // member: { id: { $eq: params.member.id } }
31
+ // });
32
+ // // 持っているロールを検索
33
+ // const roleNames = projectMembers.reduce<string[]>(
34
+ // (a, b) => [...a, ...(Array.isArray(b.member.hasRole)) ? b.member.hasRole.map((r) => r.roleName) : []],
35
+ // []
36
+ // );
37
+ // const roles = await repos.role.search({ roleName: { $in: roleNames } });
38
+ // // 権限をまとめる
39
+ // permissions = roles.reduce<string[]>(
40
+ // (a, b) => [...a, ...b.permissions],
41
+ // []
42
+ // );
43
+ // permissions = [...new Set(permissions)];
44
+ // return { roleNames, permissions };
31
45
  });
32
46
  }
33
47
  exports.searchPermissions = searchPermissions;
@@ -156,7 +156,6 @@ function responseBody2acceptedOffers4result(params) {
156
156
  // 予約取引からacceptedOffers4resultを生成する
157
157
  if (Array.isArray(params.objectSubReservations)) {
158
158
  acceptedOffers4result = params.objectSubReservations.map((itemOffered) => {
159
- var _a;
160
159
  const reservation = createReservation({
161
160
  project: params.project,
162
161
  itemOffered,
@@ -184,7 +183,8 @@ function responseBody2acceptedOffers4result(params) {
184
183
  }
185
184
  : undefined);
186
185
  });
187
- return {
186
+ // tslint:disable-next-line:no-unnecessary-local-variable
187
+ const resultAcceptedOffer = {
188
188
  typeOf: factory.offerType.Offer,
189
189
  id: itemOffered.reservedTicket.ticketType.id,
190
190
  name: itemOffered.reservedTicket.ticketType.name,
@@ -195,17 +195,20 @@ function responseBody2acceptedOffers4result(params) {
195
195
  priceCurrency: priceSpecification.priceCurrency,
196
196
  typeOf: priceSpecification.typeOf,
197
197
  valueAddedTaxIncluded: priceSpecification.valueAddedTaxIncluded
198
- },
199
- priceCurrency: (typeof itemOffered.priceCurrency === 'string')
200
- ? itemOffered.priceCurrency
201
- : factory.priceCurrency.JPY,
202
- seller: {
203
- typeOf: params.seller.typeOf,
204
- name: (typeof params.seller.name === 'string')
205
- ? params.seller.name
206
- : String((_a = params.seller.name) === null || _a === void 0 ? void 0 : _a.ja)
207
198
  }
199
+ // 不要なので廃止(2023-07-01~)
200
+ // priceCurrency: (typeof itemOffered.priceCurrency === 'string')
201
+ // ? itemOffered.priceCurrency
202
+ // : factory.priceCurrency.JPY,
203
+ // 不要なので廃止(2023-07-01~)
204
+ // seller: {
205
+ // typeOf: params.seller.typeOf,
206
+ // name: (typeof params.seller.name === 'string')
207
+ // ? params.seller.name
208
+ // : String(params.seller.name?.ja)
209
+ // }
208
210
  };
211
+ return resultAcceptedOffer;
209
212
  });
210
213
  }
211
214
  return acceptedOffers4result;
@@ -252,7 +255,10 @@ function createReservation(params) {
252
255
  if (params.issuedThrough.typeOf !== factory.product.ProductType.EventService) {
253
256
  throw new factory.errors.Argument('issuedThrough', `issuedThrough.typeOf must be ${factory.product.ProductType.EventService}`);
254
257
  }
255
- reservationItem = Object.assign({ project: itemOffered.project, typeOf: itemOffered.typeOf, additionalProperty: itemOffered.additionalProperty, additionalTicketText: itemOffered.additionalTicketText, id: itemOffered.id, issuedThrough: params.issuedThrough, reservationNumber: itemOffered.reservationNumber, reservationFor,
258
+ reservationItem = Object.assign({
259
+ // 不要なので廃止(2023-07-01~)
260
+ // project: itemOffered.project,
261
+ typeOf: itemOffered.typeOf, additionalProperty: itemOffered.additionalProperty, additionalTicketText: itemOffered.additionalTicketText, id: itemOffered.id, issuedThrough: params.issuedThrough, reservationNumber: itemOffered.reservationNumber, reservationFor,
256
262
  reservedTicket }, (typeof ((_a = itemOffered.programMembershipUsed) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string')
257
263
  ? { programMembershipUsed: itemOffered.programMembershipUsed }
258
264
  : undefined);
@@ -280,7 +286,10 @@ function createReservation(params) {
280
286
  if (params.issuedThrough.typeOf !== factory.product.ProductType.Transportation) {
281
287
  throw new factory.errors.Argument('issuedThrough', `issuedThrough.typeOf must be ${factory.product.ProductType.Transportation}`);
282
288
  }
283
- reservationItem = Object.assign({ project: itemOffered.project, typeOf: itemOffered.typeOf, additionalProperty: itemOffered.additionalProperty, additionalTicketText: itemOffered.additionalTicketText, id: itemOffered.id, issuedThrough: params.issuedThrough, reservationNumber: itemOffered.reservationNumber, reservationFor,
289
+ reservationItem = Object.assign({
290
+ // 不要なので廃止(2023-07-01~)
291
+ // project: itemOffered.project,
292
+ typeOf: itemOffered.typeOf, additionalProperty: itemOffered.additionalProperty, additionalTicketText: itemOffered.additionalTicketText, id: itemOffered.id, issuedThrough: params.issuedThrough, reservationNumber: itemOffered.reservationNumber, reservationFor,
284
293
  reservedTicket }, (typeof ((_d = itemOffered.programMembershipUsed) === null || _d === void 0 ? void 0 : _d.typeOf) === 'string')
285
294
  ? { programMembershipUsed: itemOffered.programMembershipUsed }
286
295
  : undefined);
@@ -20,7 +20,7 @@ function importFromCOA(params) {
20
20
  page: 1,
21
21
  project: { id: { $eq: params.project.id } },
22
22
  inCodeSet: { identifier: { $eq: factory.categoryCode.CategorySetIdentifier.CurrencyType } }
23
- });
23
+ }, [], []);
24
24
  const defaultCurrencyType = currencyTypes.shift();
25
25
  // メンバーシップ区分検索
26
26
  const membershipTypes = yield repos.categoryCode.search({
@@ -28,7 +28,7 @@ function importFromCOA(params) {
28
28
  page: 1,
29
29
  project: { id: { $eq: params.project.id } },
30
30
  inCodeSet: { identifier: { $eq: factory.categoryCode.CategorySetIdentifier.MembershipType } }
31
- });
31
+ }, [], []);
32
32
  const defaultMembershipType = membershipTypes.shift();
33
33
  try {
34
34
  const ticketResults = yield repos.masterService.ticket({ theaterCode: params.theaterCode });
@@ -171,7 +171,10 @@ function responseBody2acceptedOffers4result(params) {
171
171
  }
172
172
  }
173
173
  };
174
- const reservation = Object.assign(Object.assign(Object.assign({ project: { typeOf: event.project.typeOf, id: event.project.id }, typeOf: factory.reservationType.EventReservation, id: reservationId, issuedThrough, bookingTime: params.bookingTime }, (Array.isArray(additionalProperty)) ? { additionalProperty } : undefined), (typeof additionalTicketText === 'string') ? { additionalTicketText } : undefined), {
174
+ const reservation = Object.assign(Object.assign(Object.assign({
175
+ // 不要なので廃止(2023-07-01~)
176
+ // project: { typeOf: event.project.typeOf, id: event.project.id },
177
+ typeOf: factory.reservationType.EventReservation, id: reservationId, issuedThrough, bookingTime: params.bookingTime }, (Array.isArray(additionalProperty)) ? { additionalProperty } : undefined), (typeof additionalTicketText === 'string') ? { additionalTicketText } : undefined), {
175
178
  // numSeats: 1, // 廃止(2022-08-18~)
176
179
  reservationFor: reservationFor, reservationNumber: reservationNumber, reservedTicket: reservedTicket });
177
180
  if (requestedOffer.priceSpecification === undefined) {
@@ -183,19 +186,23 @@ function responseBody2acceptedOffers4result(params) {
183
186
  valueAddedTaxIncluded: requestedOffer.priceSpecification.valueAddedTaxIncluded,
184
187
  priceComponent: requestedOffer.priceSpecification.priceComponent
185
188
  };
186
- return {
189
+ // tslint:disable-next-line:no-unnecessary-local-variable
190
+ const resultAcceptedOffer = {
187
191
  typeOf: factory.offerType.Offer,
188
192
  id: requestedOffer.id,
189
193
  name: requestedOffer.name,
190
194
  itemOffered: reservation,
191
195
  offeredThrough: { typeOf: 'WebAPI', identifier: factory.service.webAPI.Identifier.COA },
192
- priceSpecification,
193
- priceCurrency: factory.priceCurrency.JPY,
194
- seller: {
195
- typeOf: params.seller.typeOf,
196
- name: params.seller.name
197
- }
196
+ priceSpecification
197
+ // 不要なので廃止(2023-07-01~)
198
+ // priceCurrency: factory.priceCurrency.JPY,
199
+ // 不要なので廃止(2023-07-01~)
200
+ // seller: {
201
+ // typeOf: params.seller.typeOf,
202
+ // name: params.seller.name
203
+ // }
198
204
  };
205
+ return resultAcceptedOffer;
199
206
  }));
200
207
  return acceptedOffers4result;
201
208
  }
@@ -29,21 +29,19 @@ function authorize(params) {
29
29
  throw new factory.errors.Forbidden('Transaction not yours');
30
30
  }
31
31
  // イベント取得属性最適化(2023-01-23~)
32
- const screeningEvent = yield repos.event.findMinimizedIndividualEventById({
33
- id: params.object.event.id
34
- });
32
+ const screeningEvent = yield repos.event.findMinimizedIndividualEventById({ id: params.object.event.id });
35
33
  const availablePaymentMethodTypes = yield repos.categoryCode.search({
36
34
  project: { id: { $eq: transaction.project.id } },
37
35
  inCodeSet: { identifier: { $eq: factory.categoryCode.CategorySetIdentifier.PaymentMethodType } }
38
- });
36
+ }, [], []);
39
37
  const seatingTypes = yield repos.categoryCode.search({
40
38
  project: { id: { $eq: transaction.project.id } },
41
39
  inCodeSet: { identifier: { $eq: factory.categoryCode.CategorySetIdentifier.SeatingType } }
42
- });
40
+ }, [], []);
43
41
  const videoFormatTypes = yield repos.categoryCode.search({
44
42
  project: { id: { $eq: transaction.project.id } },
45
43
  inCodeSet: { identifier: { $eq: factory.categoryCode.CategorySetIdentifier.VideoFormatType } }
46
- });
44
+ }, [], []);
47
45
  // COA仮予約後にリクエストが来る前提
48
46
  const { acceptedOffers } = yield (0, validateAcceptedOffers_1.validateAcceptedOffers)({
49
47
  object: params.object,
@@ -183,15 +181,15 @@ function changeOffers(params) {
183
181
  const availablePaymentMethodTypes = yield repos.categoryCode.search({
184
182
  project: { id: { $eq: transaction.project.id } },
185
183
  inCodeSet: { identifier: { $eq: factory.categoryCode.CategorySetIdentifier.PaymentMethodType } }
186
- });
184
+ }, [], []);
187
185
  const seatingTypes = yield repos.categoryCode.search({
188
186
  project: { id: { $eq: transaction.project.id } },
189
187
  inCodeSet: { identifier: { $eq: factory.categoryCode.CategorySetIdentifier.SeatingType } }
190
- });
188
+ }, [], []);
191
189
  const videoFormatTypes = yield repos.categoryCode.search({
192
190
  project: { id: { $eq: transaction.project.id } },
193
191
  inCodeSet: { identifier: { $eq: factory.categoryCode.CategorySetIdentifier.VideoFormatType } }
194
- });
192
+ }, [], []);
195
193
  // COA仮予約後にリクエストが来る前提
196
194
  const { acceptedOffers } = yield (0, validateAcceptedOffers_1.validateAcceptedOffers)({
197
195
  object: params.object,
@@ -78,6 +78,7 @@ function acceptedOffers2amount(params) {
78
78
  return a + priceSpecification.priceComponent.reduce((a2, b2) => a2 + Number(b2.price), 0);
79
79
  }, 0);
80
80
  }
81
+ // tslint:disable-next-line:max-func-body-length
81
82
  function responseBody2resultAcceptedOffer(params) {
82
83
  let acceptedOffers = [];
83
84
  if (Array.isArray(params.responseBody.object)) {
@@ -90,7 +91,10 @@ function responseBody2resultAcceptedOffer(params) {
90
91
  }
91
92
  // itemOfferedを最小限に最適化
92
93
  const permitByResponse = responseBodyObject.itemOffered.serviceOutput;
93
- const itemOffered = Object.assign(Object.assign({ project: permitByResponse.project, typeOf: permitByResponse.typeOf, identifier: permitByResponse.identifier, issuedThrough: permitByResponse.issuedThrough, name: permitByResponse.name }, (typeof permitByResponse.validFor === 'string') ? { validFor: permitByResponse.validFor } : undefined), (typeof ((_c = permitByResponse.amount) === null || _c === void 0 ? void 0 : _c.typeOf) === 'string') ? { amount: permitByResponse.amount } : undefined);
94
+ const itemOffered = Object.assign(Object.assign({
95
+ // 不要なので廃止(2023-07-01~)
96
+ // project: permitByResponse.project,
97
+ typeOf: permitByResponse.typeOf, identifier: permitByResponse.identifier, issuedThrough: permitByResponse.issuedThrough, name: permitByResponse.name }, (typeof permitByResponse.validFor === 'string') ? { validFor: permitByResponse.validFor } : undefined), (typeof ((_c = permitByResponse.amount) === null || _c === void 0 ? void 0 : _c.typeOf) === 'string') ? { amount: permitByResponse.amount } : undefined);
94
98
  const offer = params.acceptedOffer.find((o) => o.id === responseBodyObject.id);
95
99
  if (offer === undefined) {
96
100
  throw new factory.errors.ServiceUnavailable(`Offer ${responseBodyObject.id} from registerService not found`);
@@ -132,16 +136,19 @@ function responseBody2resultAcceptedOffer(params) {
132
136
  }
133
137
  })
134
138
  };
135
- return {
136
- // project: { typeOf: params.project.typeOf, id: params.project.id },
139
+ // tslint:disable-next-line:no-unnecessary-local-variable
140
+ const permitAcceptedOffer = {
137
141
  typeOf: responseBodyObject.typeOf,
138
142
  id: offer.id,
139
143
  name: offer.name,
140
144
  itemOffered,
141
- priceSpecification,
142
- priceCurrency: offer.priceCurrency,
143
- seller: { name: offer.seller.name, typeOf: offer.seller.typeOf }
145
+ priceSpecification
146
+ // 不要なので廃止(2023-07-01~)
147
+ // priceCurrency: offer.priceCurrency,
148
+ // 不要なので廃止(2023-07-01~)
149
+ // seller: { name: offer.seller.name, typeOf: offer.seller.typeOf }
144
150
  };
151
+ return permitAcceptedOffer;
145
152
  });
146
153
  }
147
154
  return acceptedOffers;
@@ -32,7 +32,7 @@ function search(params) {
32
32
  page: 1,
33
33
  project: { id: { $eq: params.project.id } },
34
34
  id: { $eq: params.itemOffered.id }
35
- });
35
+ }, [], []);
36
36
  const product = searchProductsResult.shift();
37
37
  if (product === undefined) {
38
38
  throw new factory.errors.NotFound('Product');
@@ -206,7 +206,7 @@ function fixProductAndOffers(params) {
206
206
  page: 1,
207
207
  project: { id: { $eq: params.project.id } },
208
208
  id: { $eq: productId }
209
- });
209
+ }, [], []);
210
210
  const product = searchProductsResult.shift();
211
211
  if (product === undefined) {
212
212
  throw new factory.errors.NotFound('Product');
@@ -47,19 +47,17 @@ export declare function searchEventSeatOffersWithPaging(params: {
47
47
  stockHolder: StockHolderRepo;
48
48
  place: PlaceRepo;
49
49
  }) => Promise<factory.place.seat.IPlaceWithOffer[]>;
50
- interface IChangedEvent {
51
- id: string;
52
- typeOf: factory.eventType;
53
- project: {
54
- id: string;
55
- };
56
- }
57
50
  /**
58
51
  * イベント変更時処理
59
52
  */
60
53
  export declare function onEventChanged(params: {
61
- event: IChangedEvent | IChangedEvent[];
54
+ id: string[];
55
+ typeOf: factory.eventType;
56
+ project: {
57
+ id: string;
58
+ };
62
59
  isNew: boolean;
60
+ useInform?: boolean;
63
61
  }): (repos: {
64
62
  event: EventRepo;
65
63
  project: ProjectRepo;
@@ -76,3 +74,13 @@ export declare function createAggregateScreeningEventIfNotExist(params: {
76
74
  }): (repos: {
77
75
  task: TaskRepo;
78
76
  }) => Promise<void>;
77
+ export declare function createInformTasks(params: {
78
+ project: {
79
+ id: string;
80
+ };
81
+ ids: string[];
82
+ typeOf: factory.eventType;
83
+ }): (repos: {
84
+ event: EventRepo;
85
+ task: TaskRepo;
86
+ }) => Promise<void>;