@chevre/domain 20.4.0-alpha.34 → 20.4.0-alpha.35

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.
@@ -22,7 +22,7 @@ async function main() {
22
22
  const productRepo = new chevre.repository.Product(mongoose.connection);
23
23
 
24
24
  const { ticketOffers } = await chevre.service.offer.event.searchEventTicketOffers({
25
- event: { id: 'ale6qiedi' },
25
+ event: { id: 'ale6qiedq' },
26
26
  onlyValid: true,
27
27
  validateOfferRateLimit: true,
28
28
  addSortIndex: true,
@@ -26,7 +26,7 @@ function searchTicketOffersByItemOffered(params) {
26
26
  if (typeof catalogId !== 'string') {
27
27
  throw new factory.errors.NotFound('itemOffered.hasOfferCatalog');
28
28
  }
29
- const findOffersByOfferCatalogIdResult = yield repos.offer.findOffersByOfferCatalogId({
29
+ const { offers, sortedOfferIds } = yield repos.offer.findOffersByOfferCatalogId({
30
30
  ids: params.ids,
31
31
  offerCatalog: { id: catalogId },
32
32
  availableAtOrFrom: { id: (_d = params.store) === null || _d === void 0 ? void 0 : _d.id },
@@ -38,9 +38,7 @@ function searchTicketOffersByItemOffered(params) {
38
38
  page: params.page,
39
39
  sort: false
40
40
  });
41
- const availableOffers = findOffersByOfferCatalogIdResult.offers;
42
- const sortedOfferIds = findOffersByOfferCatalogIdResult.sortedOfferIds;
43
- return { availableOffers, sortedOfferIds };
41
+ return { availableOffers: offers, sortedOfferIds };
44
42
  });
45
43
  }
46
44
  /**
@@ -74,10 +72,13 @@ function searchEventTicketOffersByEvent(params) {
74
72
  unacceptedPaymentMethod,
75
73
  excludeAppliesToMovieTicket
76
74
  })(repos);
77
- const { soundFormatChargeSpecifications, videoFormatChargeSpecifications, movieTicketTypeChargeSpecs } = yield searchPriceSpecs4event({ project: { id: event.project.id }, soundFormatTypes, videoFormatTypes })(repos);
78
- // 決済カード加算料金が存在しない場合自動補完する(2023-02-21~)
79
- // if (!settings.useOffersAppliedToMovieTicketWithoutChargeSpecification) {
80
- // }
75
+ // 冗長な検索について最適化(2023-03-03~)
76
+ const { soundFormatChargeSpecs, videoFormatChargeSpecs, movieTicketTypeChargeSpecs } = yield searchPriceSpecs4event({
77
+ project: { id: event.project.id },
78
+ soundFormatTypes,
79
+ videoFormatTypes,
80
+ availableOffers
81
+ })(repos);
81
82
  const offers4event = [];
82
83
  // 単価オファーから興行オファーを生成(順に処理)
83
84
  for (const availableOffer of availableOffers) {
@@ -114,8 +115,8 @@ function searchEventTicketOffersByEvent(params) {
114
115
  offers4event.push((0, factory_1.createCompoundPriceSpec4event)({
115
116
  eligibleQuantity: eventOffers.eligibleQuantity,
116
117
  offer: availableOffer,
117
- videoFormatChargeSpecifications,
118
- soundFormatChargeSpecifications,
118
+ videoFormatChargeSpecs,
119
+ soundFormatChargeSpecs,
119
120
  movieTicketTypeChargeSpecs,
120
121
  videoFormatTypes,
121
122
  availability,
@@ -134,7 +135,6 @@ function getUnacceptedPaymentMethodByEvent(params) {
134
135
  const eventOffers = params.event.offers;
135
136
  const unacceptedPaymentMethodByEvent = eventOffers === null || eventOffers === void 0 ? void 0 : eventOffers.unacceptedPaymentMethod;
136
137
  // 施設コンテンツを参照する必要はない(2022-10-31~)
137
- // イベントにunacceptedPaymentMethod設定があれば上書き
138
138
  if (Array.isArray(unacceptedPaymentMethodByEvent)) {
139
139
  unacceptedPaymentMethod = unacceptedPaymentMethodByEvent;
140
140
  }
@@ -142,38 +142,57 @@ function getUnacceptedPaymentMethodByEvent(params) {
142
142
  }
143
143
  function searchPriceSpecs4event(params) {
144
144
  return (repos) => __awaiter(this, void 0, void 0, function* () {
145
- const soundFormatChargeSpecifications = (params.soundFormatTypes.length > 0)
146
- ? yield repos.priceSpecification.search({
147
- project: { id: { $eq: params.project.id } },
148
- typeOf: factory.priceSpecificationType.CategoryCodeChargeSpecification,
149
- appliesToCategoryCode: {
150
- $elemMatch: {
151
- codeValue: { $in: params.soundFormatTypes },
152
- 'inCodeSet.identifier': { $eq: factory.categoryCode.CategorySetIdentifier.SoundFormatType }
153
- }
145
+ let soundFormatChargeSpecs = [];
146
+ let videoFormatChargeSpecs = [];
147
+ let movieTicketTypeChargeSpecs = [];
148
+ const movieTicketServiceTypes = [...new Set(params.availableOffers.reduce((a, b) => {
149
+ if (!Array.isArray(b.priceSpecification.appliesToMovieTicket)) {
150
+ return a;
154
151
  }
155
- })
156
- : [];
157
- const videoFormatChargeSpecifications = (params.videoFormatTypes.length > 0)
158
- ? yield repos.priceSpecification.search({
159
- project: { id: { $eq: params.project.id } },
160
- typeOf: factory.priceSpecificationType.CategoryCodeChargeSpecification,
161
- appliesToCategoryCode: {
162
- $elemMatch: {
163
- codeValue: { $in: params.videoFormatTypes },
164
- 'inCodeSet.identifier': { $eq: factory.categoryCode.CategorySetIdentifier.VideoFormatType }
152
+ return [
153
+ ...a,
154
+ ...b.priceSpecification.appliesToMovieTicket.map((movieTicket) => movieTicket.serviceType)
155
+ ];
156
+ }, []))];
157
+ if (params.soundFormatTypes.length > 0) {
158
+ soundFormatChargeSpecs =
159
+ yield repos.priceSpecification.search({
160
+ project: { id: { $eq: params.project.id } },
161
+ typeOf: factory.priceSpecificationType.CategoryCodeChargeSpecification,
162
+ appliesToCategoryCode: {
163
+ $elemMatch: {
164
+ codeValue: { $in: params.soundFormatTypes },
165
+ 'inCodeSet.identifier': { $eq: factory.categoryCode.CategorySetIdentifier.SoundFormatType }
166
+ }
165
167
  }
166
- }
167
- })
168
- : [];
169
- const movieTicketTypeChargeSpecs = (params.videoFormatTypes.length > 0)
170
- ? yield repos.priceSpecification.search({
171
- project: { id: { $eq: params.project.id } },
172
- typeOf: factory.priceSpecificationType.MovieTicketTypeChargeSpecification,
173
- appliesToVideoFormats: params.videoFormatTypes
174
- })
175
- : [];
176
- return { soundFormatChargeSpecifications, videoFormatChargeSpecifications, movieTicketTypeChargeSpecs };
168
+ });
169
+ }
170
+ if ((params.videoFormatTypes.length > 0)) {
171
+ videoFormatChargeSpecs =
172
+ yield repos.priceSpecification.search({
173
+ project: { id: { $eq: params.project.id } },
174
+ typeOf: factory.priceSpecificationType.CategoryCodeChargeSpecification,
175
+ appliesToCategoryCode: {
176
+ $elemMatch: {
177
+ codeValue: { $in: params.videoFormatTypes },
178
+ 'inCodeSet.identifier': { $eq: factory.categoryCode.CategorySetIdentifier.VideoFormatType }
179
+ }
180
+ }
181
+ });
182
+ // 存在する適用決済カード区分の分だけ検索する(2023-03-03~)
183
+ if (movieTicketServiceTypes.length > 0) {
184
+ movieTicketTypeChargeSpecs =
185
+ yield repos.priceSpecification.search({
186
+ project: { id: { $eq: params.project.id } },
187
+ typeOf: factory.priceSpecificationType.MovieTicketTypeChargeSpecification,
188
+ appliesToVideoFormats: params.videoFormatTypes,
189
+ appliesToMovieTicket: {
190
+ serviceTypes: movieTicketServiceTypes
191
+ }
192
+ });
193
+ }
194
+ }
195
+ return { soundFormatChargeSpecs, videoFormatChargeSpecs, movieTicketTypeChargeSpecs };
177
196
  });
178
197
  }
179
198
  function checkAvailability(params) {
@@ -5,8 +5,8 @@ declare function createCompoundPriceSpec4event(params: {
5
5
  eligibleQuantity: factory.quantitativeValue.IQuantitativeValue<factory.unitCode.C62>;
6
6
  offer: factory.unitPriceOffer.IUnitPriceOffer;
7
7
  movieTicketTypeChargeSpecs: IMovieTicketTypeChargeSpecification[];
8
- videoFormatChargeSpecifications: ICategoryCodeChargeSpecification[];
9
- soundFormatChargeSpecifications: ICategoryCodeChargeSpecification[];
8
+ videoFormatChargeSpecs: ICategoryCodeChargeSpecification[];
9
+ soundFormatChargeSpecs: ICategoryCodeChargeSpecification[];
10
10
  videoFormatTypes: string[];
11
11
  availability?: factory.itemAvailability;
12
12
  addOn: factory.product.ITicketAddOn[] | factory.product.IMinimizedTicketAddOn[];
@@ -23,8 +23,8 @@ function createCompoundPriceSpec4event(params) {
23
23
  // 区分加算料金を適用しないオプションを追加(2023-01-26~)
24
24
  const ignoreCategoryCodeChargeSpec = ((_a = params.offer.settings) === null || _a === void 0 ? void 0 : _a.ignoreCategoryCodeChargeSpec) === true;
25
25
  if (!ignoreCategoryCodeChargeSpec) {
26
- videoFormatChargeSpecComponents = params.videoFormatChargeSpecifications.map(categoryCodeChargePriceSpec2component);
27
- soundFormatChargeSpecComponents = params.soundFormatChargeSpecifications.map(categoryCodeChargePriceSpec2component);
26
+ videoFormatChargeSpecComponents = params.videoFormatChargeSpecs.map(categoryCodeChargePriceSpec2component);
27
+ soundFormatChargeSpecComponents = params.soundFormatChargeSpecs.map(categoryCodeChargePriceSpec2component);
28
28
  }
29
29
  const mvtkPriceComponents = [];
30
30
  // 複数決済カード対応(2022-07-11~)
package/package.json CHANGED
@@ -120,5 +120,5 @@
120
120
  "postversion": "git push origin --tags",
121
121
  "prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
122
122
  },
123
- "version": "20.4.0-alpha.34"
123
+ "version": "20.4.0-alpha.35"
124
124
  }