@chevre/domain 21.2.0-alpha.93 → 21.2.0-alpha.95

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.
@@ -6,7 +6,7 @@ import * as mongoose from 'mongoose';
6
6
  // const project = { id: String(process.env.PROJECT_ID) };
7
7
 
8
8
  async function main() {
9
- await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: true });
9
+ await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
10
10
 
11
11
  const actionRepo = new chevre.repository.Action(mongoose.connection);
12
12
  const actions = await actionRepo.search(
@@ -5,6 +5,7 @@ export { IAcceptedAddOn };
5
5
  export declare function createStartParams(params: factory.assetTransaction.reserve.IStartParamsWithoutDetail & {
6
6
  reservationNumber: string;
7
7
  disablePendingReservations: boolean;
8
+ useHoldStockByTransactionNumber: boolean;
8
9
  }): factory.assetTransaction.IStartParams<factory.assetTransactionType.Reserve>;
9
10
  /**
10
11
  * ポイント特典を作成する
@@ -13,7 +13,7 @@ function createStartParams(params) {
13
13
  const reservationNumber = params.reservationNumber;
14
14
  const reservationPackage = Object.assign({
15
15
  // project: params.project,
16
- reservationNumber: reservationNumber, reservationStatus: factory.reservationStatusType.ReservationPending, disablePendingReservations: params.disablePendingReservations, typeOf: factory.reservationType.ReservationPackage }, (typeof ((_a = params.object.broker) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string') ? { broker: params.object.broker } : undefined);
16
+ reservationNumber: reservationNumber, reservationStatus: factory.reservationStatusType.ReservationPending, disablePendingReservations: params.disablePendingReservations, useHoldStockByTransactionNumber: params.useHoldStockByTransactionNumber, typeOf: factory.reservationType.ReservationPackage }, (typeof ((_a = params.object.broker) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string') ? { broker: params.object.broker } : undefined);
17
17
  return {
18
18
  project: { id: params.project.id, typeOf: factory.organizationType.Project },
19
19
  typeOf: factory.assetTransactionType.Reserve,
@@ -97,6 +97,8 @@ type IStartParams = factory.assetTransaction.reserve.IStartParamsWithoutDetail &
97
97
  */
98
98
  export declare function start(params: IStartParams & {
99
99
  disablePendingReservations: boolean;
100
+ useHoldStockByTransactionNumber: boolean;
101
+ stockHoldUntilDaysAfterEventEnd: number;
100
102
  }): IStartOperation<{
101
103
  transaction: factory.assetTransaction.ITransaction<factory.assetTransactionType.Reserve>;
102
104
  objectSubReservations: IObjectSubReservation[];
@@ -73,7 +73,8 @@ function start(params) {
73
73
  preSearchedTicketOffers: params.preSearchedTicketOffers,
74
74
  preSearchedUnitPriceOffers: params.preSearchedUnitPriceOffers,
75
75
  availableAtOrFrom: { id: (_e = params.availableAtOrFrom) === null || _e === void 0 ? void 0 : _e.id },
76
- validateAppliesToMovieTicket: params.validateAppliesToMovieTicket
76
+ validateAppliesToMovieTicket: params.validateAppliesToMovieTicket,
77
+ stockHoldUntilDaysAfterEventEnd: params.stockHoldUntilDaysAfterEventEnd
77
78
  })(repos);
78
79
  transaction = addReservationsResult.transaction;
79
80
  objectSubReservations = addReservationsResult.objectSubReservations;
@@ -178,7 +179,12 @@ function addReservations(params) {
178
179
  yield processLockSeats({
179
180
  event: event,
180
181
  reservations: objectSubReservations,
181
- transaction: transaction
182
+ transaction: {
183
+ id: transaction.id,
184
+ transactionNumber: transaction.transactionNumber,
185
+ object: { useHoldStockByTransactionNumber: transaction.object.useHoldStockByTransactionNumber === true }
186
+ },
187
+ stockHoldUntilDaysAfterEventEnd: params.stockHoldUntilDaysAfterEventEnd
182
188
  })(repos);
183
189
  if (transaction.object.disablePendingReservations !== true) {
184
190
  // 予約作成(insertManyで実装)
@@ -614,7 +620,7 @@ function processLockOfferRateLimit(params) {
614
620
  */
615
621
  function processLockSeats(params) {
616
622
  return (repos) => __awaiter(this, void 0, void 0, function* () {
617
- var _a;
623
+ var _a, _b;
618
624
  const offers = [];
619
625
  params.reservations.forEach((r) => {
620
626
  var _a, _b;
@@ -654,10 +660,16 @@ function processLockSeats(params) {
654
660
  }
655
661
  });
656
662
  const expires = moment(params.event.endDate)
657
- .add(1, 'month')
663
+ // 設定化(2023-06-05~)
664
+ // .add(1, 'month')
665
+ .add(params.stockHoldUntilDaysAfterEventEnd, 'days')
658
666
  .toDate();
659
- const holder = params.transaction.id;
660
- const maximumAttendeeCapacity4event = (_a = params.event.location) === null || _a === void 0 ? void 0 : _a.maximumAttendeeCapacity;
667
+ // holder:取引番号に対応(2023-06-05~)
668
+ let holder = params.transaction.id;
669
+ if (((_a = params.transaction.object) === null || _a === void 0 ? void 0 : _a.useHoldStockByTransactionNumber) === true) {
670
+ holder = params.transaction.transactionNumber;
671
+ }
672
+ const maximumAttendeeCapacity4event = (_b = params.event.location) === null || _b === void 0 ? void 0 : _b.maximumAttendeeCapacity;
661
673
  if (typeof maximumAttendeeCapacity4event === 'number') {
662
674
  yield repos.stockHolder.lockIfNotLimitExceeded({
663
675
  eventId: params.event.id,
@@ -58,5 +58,7 @@ declare function authorize(params: {
58
58
  id: string;
59
59
  };
60
60
  disablePendingReservations: boolean;
61
+ useHoldStockByTransactionNumber: boolean;
62
+ stockHoldUntilDaysAfterEventEnd: number;
61
63
  }): IAuthorizeOperation<IAuthorizeOfferAction>;
62
64
  export { authorize };
@@ -67,7 +67,9 @@ function authorize(params) {
67
67
  unitPriceOffers,
68
68
  validateEvent: params.validateEvent === true,
69
69
  validateEventOfferPeriod: params.validateEventOfferPeriod === true,
70
- disablePendingReservations: params.disablePendingReservations
70
+ disablePendingReservations: params.disablePendingReservations,
71
+ useHoldStockByTransactionNumber: params.useHoldStockByTransactionNumber,
72
+ stockHoldUntilDaysAfterEventEnd: params.stockHoldUntilDaysAfterEventEnd
71
73
  })(repos);
72
74
  // requestBody = processStartReserveResult.requestBody;
73
75
  // responseBody = processStartReserveResult.responseBody;
@@ -163,7 +165,7 @@ function processStartReserve4chevre(params) {
163
165
  // requestBody = startParams;
164
166
  const startParamObject = yield validateObjectWithoutDetail(startParams)(repos);
165
167
  // 予約取引開始
166
- const startReserveTransactionResult = yield ReserveTransactionService.start(Object.assign(Object.assign({}, startParams), { object: startParamObject, preSearchedEvent: event, preSearchedTicketOffers: params.ticketOffers, preSearchedUnitPriceOffers: params.unitPriceOffers, availableAtOrFrom: { id: params.availableAtOrFrom.id }, validateEvent: params.validateEvent, validateEventOfferPeriod: params.validateEventOfferPeriod, validateAppliesToMovieTicket: true, disablePendingReservations: params.disablePendingReservations }))(repos);
168
+ const startReserveTransactionResult = yield ReserveTransactionService.start(Object.assign(Object.assign({}, startParams), { object: startParamObject, preSearchedEvent: event, preSearchedTicketOffers: params.ticketOffers, preSearchedUnitPriceOffers: params.unitPriceOffers, availableAtOrFrom: { id: params.availableAtOrFrom.id }, validateEvent: params.validateEvent, validateEventOfferPeriod: params.validateEventOfferPeriod, validateAppliesToMovieTicket: true, disablePendingReservations: params.disablePendingReservations, useHoldStockByTransactionNumber: params.useHoldStockByTransactionNumber, stockHoldUntilDaysAfterEventEnd: params.stockHoldUntilDaysAfterEventEnd }))(repos);
167
169
  responseBody = startReserveTransactionResult.transaction;
168
170
  // 予約取引からオファー情報を生成する
169
171
  acceptedOffers4result = (0, factory_1.responseBody2acceptedOffers4result)({
@@ -28,7 +28,6 @@ function cancelPendingReservation(actionAttributesList) {
28
28
  if (actionAttributesList.length > 0) {
29
29
  // tslint:disable-next-line:max-func-body-length
30
30
  yield Promise.all(actionAttributesList.map((actionAttributes) => __awaiter(this, void 0, void 0, function* () {
31
- // let canceledReservation: factory.reservation.eventReservation.IReservation | undefined;
32
31
  const reserveTransactionId = actionAttributes.purpose.id;
33
32
  // アクション開始
34
33
  const action = yield repos.action.start(actionAttributes);
@@ -53,10 +52,6 @@ function cancelPendingReservation(actionAttributesList) {
53
52
  const subReservation = reserveTransaction.object.subReservation;
54
53
  if (Array.isArray(subReservation) && subReservation.length > 0) {
55
54
  yield Promise.all(subReservation.map((cancelingSubReservation) => __awaiter(this, void 0, void 0, function* () {
56
- // const cancelingReservation: factory.reservation.eventReservation.IReservation = {
57
- // ...cancelingSubReservation,
58
- // reservationFor
59
- // };
60
55
  yield processUnlockSeat({
61
56
  reservation: {
62
57
  id: cancelingSubReservation.id,
@@ -69,7 +64,10 @@ function cancelPendingReservation(actionAttributesList) {
69
64
  : reservationFor.departureTime
70
65
  }
71
66
  },
72
- expectedHolder: reserveTransactionId
67
+ // holder:取引番号に対応(2023-06-05~)
68
+ expectedHolder: (reserveTransaction.object.useHoldStockByTransactionNumber === true)
69
+ ? reserveTransaction.transactionNumber
70
+ : reserveTransactionId
73
71
  })(repos);
74
72
  yield processUnlockOfferRateLimit({
75
73
  reservation: {
@@ -90,33 +88,6 @@ function cancelPendingReservation(actionAttributesList) {
90
88
  else {
91
89
  // 廃止(2022-12-27~)
92
90
  throw new factory.errors.NotImplemented(`object.typeOf '${actionObject.typeOf}' not implemented`);
93
- // const cancelingSubReservation = reserveTransaction.object.subReservation?.find((r) => {
94
- // return r.id === actionObject.id;
95
- // });
96
- // // 取消対象予約が取引に存在すれば、適宜unlock
97
- // if (cancelingSubReservation !== undefined) {
98
- // const cancelingReservation: factory.reservation.eventReservation.IReservation = {
99
- // ...cancelingSubReservation,
100
- // reservationFor
101
- // };
102
- // await processUnlockSeat({
103
- // reservation: cancelingReservation,
104
- // expectedHolder: reserveTransactionId
105
- // })(repos);
106
- // await processUnlockOfferRateLimit({ reservation: cancelingReservation, reservationFor })(repos);
107
- // // 予約が存在すればキャンセル状態に変更する
108
- // const reservationCount = await repos.reservation.count({
109
- // typeOf: cancelingSubReservation.typeOf,
110
- // ids: [cancelingSubReservation.id]
111
- // });
112
- // if (reservationCount > 0) {
113
- // await repos.reservation.cancel<factory.reservationType.EventReservation>({
114
- // id: cancelingSubReservation.id,
115
- // previousReservationStatus: actionObject.reservationStatus,
116
- // modifiedTime: now
117
- // });
118
- // }
119
- // }
120
91
  }
121
92
  }
122
93
  }
@@ -194,10 +165,6 @@ function cancelReservation(actionAttributesList) {
194
165
  const subReservation = reserveTransaction.object.subReservation;
195
166
  if (Array.isArray(subReservation) && subReservation.length > 0) {
196
167
  yield Promise.all(subReservation.map((cancelingSubReservation) => __awaiter(this, void 0, void 0, function* () {
197
- // const cancelingReservation: factory.reservation.eventReservation.IReservation = {
198
- // ...cancelingSubReservation,
199
- // reservationFor
200
- // };
201
168
  yield processUnlockSeat({
202
169
  reservation: {
203
170
  id: cancelingSubReservation.id,
@@ -210,7 +177,10 @@ function cancelReservation(actionAttributesList) {
210
177
  : reservationFor.departureTime
211
178
  }
212
179
  },
213
- expectedHolder: reserveTransaction.id
180
+ // holder:取引番号に対応(2023-06-05~)
181
+ expectedHolder: (reserveTransaction.object.useHoldStockByTransactionNumber === true)
182
+ ? reserveTransaction.transactionNumber
183
+ : reserveTransaction.id
214
184
  })(repos);
215
185
  yield processUnlockOfferRateLimit({
216
186
  reservation: {
@@ -240,10 +210,10 @@ function cancelReservation(actionAttributesList) {
240
210
  object: { reservations: { id: { $in: [reservation.id] } } }
241
211
  });
242
212
  const reserveTransaction = reserveTransactions.shift();
243
- let expectedHolder;
244
- if (reserveTransaction !== undefined) {
245
- expectedHolder = reserveTransaction.id;
246
- }
213
+ // holder:取引番号に対応(2023-06-05~)
214
+ const expectedHolder = ((reserveTransaction === null || reserveTransaction === void 0 ? void 0 : reserveTransaction.object.useHoldStockByTransactionNumber) === true)
215
+ ? reserveTransaction.transactionNumber
216
+ : reserveTransaction === null || reserveTransaction === void 0 ? void 0 : reserveTransaction.id;
247
217
  if (typeof expectedHolder === 'string') {
248
218
  yield processUnlockSeat({
249
219
  reservation: {
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  }
10
10
  ],
11
11
  "dependencies": {
12
- "@chevre/factory": "4.313.0-alpha.23",
12
+ "@chevre/factory": "4.313.0-alpha.24",
13
13
  "@cinerino/sdk": "3.157.0-alpha.6",
14
14
  "@motionpicture/coa-service": "9.2.0",
15
15
  "@motionpicture/gmo-service": "5.2.0",
@@ -117,5 +117,5 @@
117
117
  "postversion": "git push origin --tags",
118
118
  "prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
119
119
  },
120
- "version": "21.2.0-alpha.93"
120
+ "version": "21.2.0-alpha.95"
121
121
  }