@chevre/domain 21.29.0-alpha.2 → 21.29.0-alpha.4

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.
@@ -65,7 +65,7 @@ function createPointAward(params) {
65
65
  return pointAward;
66
66
  }
67
67
  exports.createPointAward = createPointAward;
68
- function createTicketNumber(params) {
68
+ function createTicketIdentifier(params) {
69
69
  var _a;
70
70
  return (typeof ((_a = params.ticketedSeat) === null || _a === void 0 ? void 0 : _a.seatNumber) === 'string')
71
71
  ? util.format('%s:%s:%s', params.reservationFor.id, params.ticketedSeat.seatSection, params.ticketedSeat.seatNumber)
@@ -127,13 +127,12 @@ function createReservedTicket(params) {
127
127
  }
128
128
  const ticketType = createTicketType({ availableOffer: params.availableOffer });
129
129
  const issuedBy = createIssuedBy({ acceptedOffer: params.acceptedOffer, availableOffer: params.availableOffer });
130
- const ticketNumber = createTicketNumber({
130
+ const ticketIdentifier = createTicketIdentifier({
131
131
  id: params.id,
132
132
  reservationFor: params.reservationFor,
133
133
  ticketedSeat
134
134
  });
135
- return Object.assign({ dateIssued: params.dateIssued, issuedBy,
136
- ticketNumber,
135
+ return Object.assign({ dateIssued: params.dateIssued, identifier: ticketIdentifier, issuedBy,
137
136
  ticketType, typeOf: 'Ticket' }, (ticketedSeat !== undefined) ? { ticketedSeat } : {});
138
137
  }
139
138
  exports.createReservedTicket = createReservedTicket;
@@ -215,8 +215,8 @@ function createReservation(params) {
215
215
  name: itemOffered.reservedTicket.ticketType.name,
216
216
  description: itemOffered.reservedTicket.ticketType.description,
217
217
  additionalProperty: itemOffered.reservedTicket.ticketType.additionalProperty
218
- } }, (typeof itemOffered.reservedTicket.ticketNumber === 'string')
219
- ? { ticketNumber: itemOffered.reservedTicket.ticketNumber }
218
+ } }, (typeof itemOffered.reservedTicket.identifier === 'string')
219
+ ? { identifier: itemOffered.reservedTicket.identifier }
220
220
  : undefined), (itemOffered.reservedTicket.ticketedSeat !== undefined)
221
221
  ? { ticketedSeat: itemOffered.reservedTicket.ticketedSeat }
222
222
  : undefined);
@@ -145,6 +145,7 @@ function responseBody2acceptedOffers4result(params) {
145
145
  seatRow: '',
146
146
  seatSection: tmpReserve.seatSection
147
147
  },
148
+ identifier: ticketNumber,
148
149
  // ticketNumber: ticketToken,
149
150
  ticketNumber,
150
151
  ticketToken: ticketToken,
@@ -66,14 +66,14 @@ function creatPayTransactionStartParams(params) {
66
66
  exports.creatPayTransactionStartParams = creatPayTransactionStartParams;
67
67
  function createMovieTicket(params) {
68
68
  var _a;
69
- const ticketNumber = util.format('%s:%s:%s', params.serviceOutput.reservationFor.id, params.serviceOutput.reservedTicket.ticketedSeat.seatSection, params.serviceOutput.reservedTicket.ticketedSeat.seatNumber);
69
+ const ticketIdentifier = util.format('%s:%s:%s', params.serviceOutput.reservationFor.id, params.serviceOutput.reservedTicket.ticketedSeat.seatSection, params.serviceOutput.reservedTicket.ticketedSeat.seatNumber);
70
70
  const serviceOutput = {
71
71
  reservationFor: {
72
72
  typeOf: params.serviceOutput.reservationFor.typeOf,
73
73
  id: params.serviceOutput.reservationFor.id
74
74
  },
75
75
  reservedTicket: {
76
- ticketNumber,
76
+ identifier: ticketIdentifier,
77
77
  ticketedSeat: {
78
78
  typeOf: factory.placeType.Seat,
79
79
  seatNumber: params.serviceOutput.reservedTicket.ticketedSeat.seatNumber,
@@ -260,7 +260,7 @@ function createResult(params) {
260
260
  authorizeEventServiceOfferActions: params.authorizeEventServiceOfferActions
261
261
  });
262
262
  // 注文オファー検証
263
- (0, validation_1.validateNumItems)({
263
+ (0, validation_1.validateAcceptedOffers)({
264
264
  result: params.result,
265
265
  acceptedOffers: params.acceptedOffers
266
266
  });
@@ -195,8 +195,8 @@ function authorizeSeatReservationActions2requiredMovieTickets(params) {
195
195
  serviceOutput: {
196
196
  reservationFor: reservationFor4movieTicket,
197
197
  reservedTicket: {
198
- ticketNumber: (typeof offer.itemOffered.reservedTicket.ticketNumber === 'string')
199
- ? offer.itemOffered.reservedTicket.ticketNumber
198
+ identifier: (typeof offer.itemOffered.reservedTicket.identifier === 'string')
199
+ ? offer.itemOffered.reservedTicket.identifier
200
200
  : offer.itemOffered.id,
201
201
  ticketedSeat: ticketedSeat4MovieTicket
202
202
  }
@@ -12,7 +12,7 @@ export type IOrderURLGenerator = (order: factory.order.IOrder) => string;
12
12
  /**
13
13
  * 注文オファー数検証
14
14
  */
15
- export declare function validateNumItems(params: {
15
+ export declare function validateAcceptedOffers(params: {
16
16
  result: {
17
17
  order: PlaceOrderFactory.IResultOrderParams;
18
18
  };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateEventOffers = exports.validatePaymentMethods = exports.validateOrderedItem = exports.validateNumItems = exports.validateTransaction = void 0;
3
+ exports.validateEventOffers = exports.validatePaymentMethods = exports.validateOrderedItem = exports.validateAcceptedOffers = exports.validateTransaction = void 0;
4
4
  /**
5
5
  * 注文取引バリデーション
6
6
  */
@@ -202,7 +202,7 @@ function validateMonetaryAmount(authorizePaymentActions, authorizeEventServiceOf
202
202
  /**
203
203
  * 注文オファー数検証
204
204
  */
205
- function validateNumItems(params) {
205
+ function validateAcceptedOffers(params) {
206
206
  var _a, _b, _c;
207
207
  if (!Array.isArray(params.acceptedOffers)) {
208
208
  throw new factory.errors.Argument('order.acceptedOffers', 'must be array');
@@ -241,8 +241,26 @@ function validateNumItems(params) {
241
241
  throw new factory.errors.Argument('Transaction', (0, util_1.format)('Number of reservationNumbers must be less than or equal to %s', maxNumCOAReservationNumbers));
242
242
  }
243
243
  }
244
+ // チケット識別子ユニークネス検証(2024-04-15~)
245
+ let ticketNumbers = [];
246
+ params.acceptedOffers.forEach(({ itemOffered }) => {
247
+ if (itemOffered.typeOf === factory.reservationType.BusReservation
248
+ || itemOffered.typeOf === factory.reservationType.EventReservation) {
249
+ if (typeof itemOffered.reservedTicket.ticketNumber === 'string') {
250
+ ticketNumbers.push(itemOffered.reservedTicket.ticketNumber);
251
+ }
252
+ }
253
+ });
254
+ if (ticketNumbers.length > 0) {
255
+ ticketNumbers = [...new Set(ticketNumbers)];
256
+ debug('ticketNumbers unique?', ticketNumbers.join(' '), 'numAcceptedOffers:', numAcceptedOffers);
257
+ // チケット識別子が注文内ユニークなので、注文オファー数に一致するはず
258
+ if (ticketNumbers.length !== numAcceptedOffers) {
259
+ throw new factory.errors.Argument('Transaction', 'ticketNumbers must be unique');
260
+ }
261
+ }
244
262
  }
245
- exports.validateNumItems = validateNumItems;
263
+ exports.validateAcceptedOffers = validateAcceptedOffers;
246
264
  function validateOrderedItem(params) {
247
265
  var _a, _b;
248
266
  if (!Array.isArray(params.order.orderedItem)) {
package/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  ],
11
11
  "dependencies": {
12
12
  "@aws-sdk/credential-providers": "3.433.0",
13
- "@chevre/factory": "4.367.0-alpha.3",
13
+ "@chevre/factory": "4.367.0-alpha.4",
14
14
  "@cinerino/sdk": "5.17.1",
15
15
  "@motionpicture/coa-service": "9.4.0",
16
16
  "@motionpicture/gmo-service": "5.3.0",
@@ -110,5 +110,5 @@
110
110
  "postversion": "git push origin --tags",
111
111
  "prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
112
112
  },
113
- "version": "21.29.0-alpha.2"
113
+ "version": "21.29.0-alpha.4"
114
114
  }