@chevre/domain 21.2.0-alpha.136 → 21.2.0-alpha.137

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 { chevre } from '../../../lib/index';
6
6
  const PROJECT_ID = process.env.PROJECT_ID;
7
7
 
8
8
  async function main() {
9
- await mongoose.connect(<string>process.env.MONGOLAB_URI);
9
+ await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
10
10
 
11
11
  const productRepo = new chevre.repository.Product(mongoose.connection);
12
12
 
@@ -38,13 +38,7 @@ export declare class MongoRepository {
38
38
  * 施設を保管する
39
39
  */
40
40
  saveMovieTheater(params: factory.place.movieTheater.IPlaceWithoutScreeningRoom): Promise<factory.place.movieTheater.IPlaceWithoutScreeningRoom>;
41
- saveMovieTheaterByBranchCode4coa(params: factory.place.movieTheater.IPlace): Promise<factory.place.movieTheater.IPlace>;
42
- findMovieTheaterByBranchCode(params: {
43
- project: {
44
- id: string;
45
- };
46
- branchCode: string;
47
- }): Promise<factory.place.movieTheater.IPlace>;
41
+ saveMovieTheaterByBranchCode4coa(params: factory.place.movieTheater.IPlace): Promise<void>;
48
42
  /**
49
43
  * 施設検索
50
44
  */
@@ -239,41 +239,42 @@ class MongoRepository {
239
239
  return doc.toObject();
240
240
  });
241
241
  }
242
+ // void化(2023-06-23~)
242
243
  saveMovieTheaterByBranchCode4coa(params) {
243
244
  return __awaiter(this, void 0, void 0, function* () {
244
- return this.placeModel.findOneAndUpdate({
245
- 'project.id': { $eq: params.project.id },
246
- branchCode: { $eq: params.branchCode }
247
- }, params, { new: true })
248
- .exec()
249
- .then((doc) => {
250
- if (doc === null) {
251
- throw new factory.errors.NotFound(`${factory.placeType.MovieTheater} ${params.branchCode}`);
252
- }
253
- return doc.toObject();
254
- });
255
- });
256
- }
257
- findMovieTheaterByBranchCode(params) {
258
- return __awaiter(this, void 0, void 0, function* () {
259
- return this.placeModel.findOne({
245
+ yield this.placeModel.updateOne({
260
246
  typeOf: { $eq: factory.placeType.MovieTheater },
261
247
  'project.id': { $eq: params.project.id },
262
248
  branchCode: { $eq: params.branchCode }
263
- }, {
264
- __v: 0,
265
- createdAt: 0,
266
- updatedAt: 0
267
- })
268
- .exec()
269
- .then((doc) => {
270
- if (doc === null) {
271
- throw new factory.errors.NotFound(`${factory.placeType.MovieTheater} ${params.branchCode}`);
272
- }
273
- return doc.toObject();
274
- });
249
+ }, params)
250
+ .exec();
275
251
  });
276
252
  }
253
+ // 廃止(2023-06-23~)
254
+ // public async findMovieTheaterByBranchCode(params: {
255
+ // project: { id: string };
256
+ // branchCode: string;
257
+ // }): Promise<factory.place.movieTheater.IPlace> {
258
+ // return this.placeModel.findOne(
259
+ // {
260
+ // typeOf: { $eq: factory.placeType.MovieTheater },
261
+ // 'project.id': { $eq: params.project.id },
262
+ // branchCode: { $eq: params.branchCode }
263
+ // },
264
+ // {
265
+ // __v: 0,
266
+ // createdAt: 0,
267
+ // updatedAt: 0
268
+ // }
269
+ // )
270
+ // .exec()
271
+ // .then((doc) => {
272
+ // if (doc === null) {
273
+ // throw new factory.errors.NotFound(`${factory.placeType.MovieTheater} ${params.branchCode}`);
274
+ // }
275
+ // return doc.toObject();
276
+ // });
277
+ // }
277
278
  /**
278
279
  * 施設検索
279
280
  */
@@ -376,6 +377,7 @@ class MongoRepository {
376
377
  return __awaiter(this, void 0, void 0, function* () {
377
378
  // 施設存在確認
378
379
  let doc = yield this.placeModel.findOne({
380
+ typeOf: { $eq: factory.placeType.MovieTheater },
379
381
  'project.id': { $eq: screeningRoom.project.id },
380
382
  branchCode: screeningRoom.containedInPlace.branchCode
381
383
  }, {
@@ -387,6 +389,7 @@ class MongoRepository {
387
389
  }
388
390
  // ルームコードが存在しなければ追加する
389
391
  doc = yield this.placeModel.findOneAndUpdate({
392
+ typeOf: { $eq: factory.placeType.MovieTheater },
390
393
  'project.id': { $eq: screeningRoom.project.id },
391
394
  branchCode: screeningRoom.containedInPlace.branchCode,
392
395
  'containsPlace.branchCode': { $ne: screeningRoom.branchCode }
@@ -419,6 +422,7 @@ class MongoRepository {
419
422
  updateScreeningRoom(screeningRoom, $unset) {
420
423
  return __awaiter(this, void 0, void 0, function* () {
421
424
  const doc = yield this.placeModel.findOneAndUpdate({
425
+ typeOf: { $eq: factory.placeType.MovieTheater },
422
426
  'project.id': { $eq: screeningRoom.project.id },
423
427
  branchCode: screeningRoom.containedInPlace.branchCode,
424
428
  'containsPlace.branchCode': screeningRoom.branchCode
@@ -451,6 +455,7 @@ class MongoRepository {
451
455
  deleteScreeningRoom(screeningRoom) {
452
456
  return __awaiter(this, void 0, void 0, function* () {
453
457
  const doc = yield this.placeModel.findOneAndUpdate({
458
+ typeOf: { $eq: factory.placeType.MovieTheater },
454
459
  'project.id': { $eq: screeningRoom.project.id },
455
460
  branchCode: screeningRoom.containedInPlace.branchCode,
456
461
  'containsPlace.branchCode': screeningRoom.branchCode
@@ -482,6 +487,7 @@ class MongoRepository {
482
487
  }
483
488
  // 施設存在確認
484
489
  let doc = yield this.placeModel.findOne({
490
+ typeOf: { $eq: factory.placeType.MovieTheater },
485
491
  'project.id': { $eq: screeningRoomSection.project.id },
486
492
  branchCode: movieTheater.branchCode,
487
493
  'containsPlace.branchCode': screeningRoom.branchCode
@@ -491,6 +497,7 @@ class MongoRepository {
491
497
  throw new factory.errors.NotFound(factory.placeType.MovieTheater);
492
498
  }
493
499
  doc = yield this.placeModel.findOneAndUpdate({
500
+ typeOf: { $eq: factory.placeType.MovieTheater },
494
501
  'project.id': { $eq: screeningRoomSection.project.id },
495
502
  branchCode: movieTheater.branchCode,
496
503
  'containsPlace.branchCode': screeningRoom.branchCode
@@ -531,6 +538,7 @@ class MongoRepository {
531
538
  throw new factory.errors.ArgumentNull('containedInPlace.containedInPlace.branchCode');
532
539
  }
533
540
  const doc = yield this.placeModel.findOneAndUpdate({
541
+ typeOf: { $eq: factory.placeType.MovieTheater },
534
542
  'project.id': { $eq: screeningRoomSection.project.id },
535
543
  branchCode: movieTheater.branchCode,
536
544
  'containsPlace.branchCode': screeningRoom.branchCode,
@@ -696,6 +704,7 @@ class MongoRepository {
696
704
  deleteScreeningRoomSection(screeningRoomSection) {
697
705
  return __awaiter(this, void 0, void 0, function* () {
698
706
  const doc = yield this.placeModel.findOneAndUpdate({
707
+ typeOf: { $eq: factory.placeType.MovieTheater },
699
708
  'project.id': { $eq: screeningRoomSection.project.id },
700
709
  branchCode: screeningRoomSection.containedInPlace.containedInPlace.branchCode,
701
710
  'containsPlace.branchCode': screeningRoomSection.containedInPlace.branchCode,
@@ -832,7 +841,7 @@ class MongoRepository {
832
841
  typeOf: '$typeOf',
833
842
  branchCode: '$branchCode',
834
843
  name: '$name'
835
- }, openSeatingAllowed: '$containsPlace.openSeatingAllowed', additionalProperty: '$containsPlace.additionalProperty' }, (((_k = searchConditions.$projection) === null || _k === void 0 ? void 0 : _k.sectionCount) === 1)
844
+ }, openSeatingAllowed: '$containsPlace.openSeatingAllowed', additionalProperty: '$containsPlace.additionalProperty', maximumAttendeeCapacity: '$containsPlace.maximumAttendeeCapacity' }, (((_k = searchConditions.$projection) === null || _k === void 0 ? void 0 : _k.sectionCount) === 1)
836
845
  ? {
837
846
  sectionCount: {
838
847
  $cond: {
@@ -930,6 +939,7 @@ class MongoRepository {
930
939
  }
931
940
  // 施設存在確認
932
941
  let doc = yield this.placeModel.findOne({
942
+ typeOf: { $eq: factory.placeType.MovieTheater },
933
943
  'project.id': { $eq: seat.project.id },
934
944
  branchCode: movieTheater.branchCode,
935
945
  'containsPlace.branchCode': screeningRoom.branchCode,
@@ -942,6 +952,7 @@ class MongoRepository {
942
952
  throw new factory.errors.NotFound(factory.placeType.MovieTheater);
943
953
  }
944
954
  doc = yield this.placeModel.findOneAndUpdate({
955
+ typeOf: { $eq: factory.placeType.MovieTheater },
945
956
  'project.id': { $eq: seat.project.id },
946
957
  branchCode: movieTheater.branchCode,
947
958
  'containsPlace.branchCode': screeningRoom.branchCode,
@@ -988,6 +999,7 @@ class MongoRepository {
988
999
  throw new factory.errors.ArgumentNull('containedInPlace.containedInPlace.containedInPlace.branchCode');
989
1000
  }
990
1001
  const doc = yield this.placeModel.findOneAndUpdate({
1002
+ typeOf: { $eq: factory.placeType.MovieTheater },
991
1003
  'project.id': { $eq: seat.project.id },
992
1004
  branchCode: movieTheater.branchCode,
993
1005
  'containsPlace.branchCode': screeningRoom.branchCode,
@@ -1212,6 +1224,7 @@ class MongoRepository {
1212
1224
  deleteSeat(seat) {
1213
1225
  return __awaiter(this, void 0, void 0, function* () {
1214
1226
  const doc = yield this.placeModel.findOneAndUpdate({
1227
+ typeOf: { $eq: factory.placeType.MovieTheater },
1215
1228
  'project.id': { $eq: seat.project.id },
1216
1229
  branchCode: seat.containedInPlace.containedInPlace.containedInPlace.branchCode,
1217
1230
  'containsPlace.branchCode': seat.containedInPlace.containedInPlace.branchCode,
@@ -264,7 +264,7 @@ class StockHolderRepository {
264
264
  const { id } = yield this.initializeHoldReservation({ project: params.project, eventId: params.eventId, startDate: params.startDate });
265
265
  const subReservation = StockHolderRepository.offer2subReservation(params.offer, params.hasTicketedSeat);
266
266
  const reservationNumber = params.holder;
267
- const updateResult = yield this.holdReservationModel.findOneAndUpdate({
267
+ const updateResult = yield this.holdReservationModel.updateOne({
268
268
  _id: { $eq: id },
269
269
  // 'reservationFor.id': { $eq: params.eventId },
270
270
  'reservations.reservationNumber': {
@@ -279,17 +279,15 @@ class StockHolderRepository {
279
279
  $inc: { reservationCount: -1 },
280
280
  $pull: { 'reservations.$[reservationPackage].subReservation': { identifier: { $eq: subReservation.identifier } } }
281
281
  }, {
282
- new: true,
283
282
  arrayFilters: [
284
283
  { 'reservationPackage.reservationNumber': reservationNumber }
285
284
  ]
286
285
  })
287
- .select({ _id: 1 })
288
286
  .exec();
289
287
  // docが存在しなくてもよい
290
288
  debug('unlock processed. updateResult:', updateResult, 'reservationNumber:', reservationNumber, 'identifier:', subReservation.identifier);
291
289
  // subReservationがemptyのreservationsをpull
292
- const pullReservationPackageResult = yield this.holdReservationModel.findOneAndUpdate({
290
+ const pullReservationPackageResult = yield this.holdReservationModel.updateOne({
293
291
  _id: { $eq: id },
294
292
  // 'reservationFor.id': { $eq: params.eventId },
295
293
  'reservations.reservationNumber': { $exists: true, $eq: reservationNumber }
@@ -300,8 +298,7 @@ class StockHolderRepository {
300
298
  subReservation: { $size: 0 }
301
299
  }
302
300
  }
303
- }, { new: true })
304
- .select({ _id: 1 })
301
+ })
305
302
  .exec();
306
303
  debug('unlock processed. pullReservationPackageResult:', pullReservationPackageResult, 'reservationNumber:', reservationNumber, 'identifier:', subReservation.identifier);
307
304
  }
@@ -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;
@@ -22,7 +22,6 @@ const moment = require("moment-timezone");
22
22
  const credentials_1 = require("../credentials");
23
23
  const factory = require("../factory");
24
24
  const offer_1 = require("./offer");
25
- // const customsearch = google.customsearch('v1');
26
25
  const debug = createDebug('chevre-domain:service:event');
27
26
  const coaAuthClient = new COA.auth.RefreshToken({
28
27
  endpoint: credentials_1.credentials.coa.endpoint,
@@ -99,18 +98,29 @@ function importFromCOA(params) {
99
98
  if (typeof (seller === null || seller === void 0 ? void 0 : seller.id) !== 'string') {
100
99
  throw new factory.errors.NotFound('Seller', `Seller with branchCod '${params.locationBranchCode}' not found`);
101
100
  }
102
- // 施設取得
103
- let movieTheater = createMovieTheaterFromCOA(project, { id: seller.id }, yield masterService.theater({ theaterCode: params.locationBranchCode }), yield masterService.screen({ theaterCode: params.locationBranchCode }));
104
101
  // saveMovieTheater:trueの場合のみ、施設保管(2022-10-10~)
105
102
  if (params.saveMovieTheater === true) {
106
- movieTheater = yield repos.place.saveMovieTheaterByBranchCode4coa(movieTheater);
103
+ const savingMovieTheater = createMovieTheaterFromCOA(project, { id: seller.id }, yield masterService.theater({ theaterCode: params.locationBranchCode }), yield masterService.screen({ theaterCode: params.locationBranchCode }));
104
+ yield repos.place.saveMovieTheaterByBranchCode4coa(savingMovieTheater);
105
+ // } else {
106
+ // movieTheater = await repos.place.findMovieTheaterByBranchCode({
107
+ // project: { id: project.id },
108
+ // branchCode: creatingMovieTheater.branchCode
109
+ // });
107
110
  }
108
- else {
109
- movieTheater = yield repos.place.findMovieTheaterByBranchCode({
110
- project: { id: movieTheater.project.id },
111
- branchCode: movieTheater.branchCode
112
- });
111
+ const movieTheaters = yield repos.place.searchMovieTheaters({
112
+ limit: 1,
113
+ page: 1,
114
+ project: { id: { $eq: project.id } },
115
+ branchCode: { $eq: params.locationBranchCode }
116
+ }, ['_id', 'typeOf', 'branchCode', 'name', 'kanaName'], []);
117
+ const movieTheater = movieTheaters.shift();
118
+ if (movieTheater === undefined) {
119
+ throw new factory.errors.NotFound(factory.placeType.MovieTheater);
113
120
  }
121
+ const screeningRooms = yield repos.place.searchScreeningRooms({
122
+ containedInPlace: { branchCode: { $eq: movieTheater.branchCode } }
123
+ });
114
124
  const targetImportFrom = moment(`${moment(params.importFrom)
115
125
  .tz('Asia/Tokyo')
116
126
  .format('YYYY-MM-DD')}T00:00:00+09:00`);
@@ -121,7 +131,7 @@ function importFromCOA(params) {
121
131
  debug('importing screening events...', targetImportFrom, targetImportThrough);
122
132
  const { screeningEventSerieses, savedEventsCount } = yield saveScreeningEventSeries({
123
133
  locationBranchCode: params.locationBranchCode,
124
- movieTheater: movieTheater,
134
+ movieTheater,
125
135
  project: project,
126
136
  saveScreeningEventSeries: params.saveScreeningEventSeries
127
137
  })(repos);
@@ -130,7 +140,8 @@ function importFromCOA(params) {
130
140
  // イベント永続化
131
141
  const screeningEvents = yield saveScreeningEvents({
132
142
  locationBranchCode: params.locationBranchCode,
133
- movieTheater: movieTheater,
143
+ // movieTheater: movieTheater,
144
+ screeningRooms,
134
145
  screeningEventSerieses: screeningEventSerieses,
135
146
  project: project,
136
147
  targetImportFrom: targetImportFrom.toDate(),
@@ -183,7 +194,6 @@ function importFromCOA(params) {
183
194
  exports.importFromCOA = importFromCOA;
184
195
  function saveScreeningEventSeries(params) {
185
196
  return (repos) => __awaiter(this, void 0, void 0, function* () {
186
- const movieTheater = params.movieTheater;
187
197
  const project = params.project;
188
198
  const masterService = new COA.service.Master({
189
199
  endpoint: credentials_1.credentials.coa.endpoint,
@@ -219,7 +229,7 @@ function saveScreeningEventSeries(params) {
219
229
  return createScreeningEventSeriesFromCOA({
220
230
  project: project,
221
231
  filmFromCOA: filmFromCOA,
222
- movieTheater: movieTheater,
232
+ movieTheater: params.movieTheater,
223
233
  eirinKubuns: eirinKubuns,
224
234
  eizouKubuns: eizouKubuns,
225
235
  joueihousikiKubuns: joueihousikiKubuns,
@@ -293,7 +303,7 @@ function saveScreeningEvents(params) {
293
303
  }
294
304
  function createScreeningEvents(params) {
295
305
  return () => __awaiter(this, void 0, void 0, function* () {
296
- const movieTheater = params.movieTheater;
306
+ // const movieTheater = params.movieTheater;
297
307
  const screeningEventSerieses = params.screeningEventSerieses;
298
308
  const project = params.project;
299
309
  const masterService = new COA.service.Master({
@@ -329,8 +339,11 @@ function createScreeningEvents(params) {
329
339
  titleCode: scheduleFromCOA.titleCode,
330
340
  titleBranchNum: scheduleFromCOA.titleBranchNum
331
341
  });
332
- // スクリーン存在チェック
333
- const screenRoom = movieTheater.containsPlace.find((place) => place.branchCode === scheduleFromCOA.screenCode);
342
+ // ルーム存在チェック
343
+ const screenRoom = params.screeningRooms.find((place) => place.branchCode === scheduleFromCOA.screenCode);
344
+ // const screenRoom = <factory.place.screeningRoom.IPlace | undefined>movieTheater.containsPlace.find(
345
+ // (place) => place.branchCode === scheduleFromCOA.screenCode
346
+ // );
334
347
  if (screenRoom === undefined) {
335
348
  // tslint:disable-next-line:no-console
336
349
  console.error('screenRoom not found.', scheduleFromCOA.screenCode);
@@ -20,19 +20,24 @@ function validateMovieTicket(params, paymentServiceId, useCheckMovieTicketBefore
20
20
  var _a, _b, _c, _d;
21
21
  const movieTickets = (_a = params.object.paymentMethod) === null || _a === void 0 ? void 0 : _a.movieTickets;
22
22
  if (!Array.isArray(movieTickets)) {
23
- throw new factory.errors.Argument('object.paymentMethod.movieTickets must be an array');
23
+ throw new factory.errors.Argument('movieTickets', 'object.paymentMethod.movieTickets must be an array');
24
24
  }
25
25
  // イベント1つのみ許可
26
- const eventIds = [...new Set(movieTickets === null || movieTickets === void 0 ? void 0 : movieTickets.map((t) => t.serviceOutput.reservationFor.id))];
26
+ const eventIds = [...new Set(movieTickets.map((t) => t.serviceOutput.reservationFor.id))];
27
27
  if (eventIds.length !== 1) {
28
28
  throw new factory.errors.Argument('movieTickets', 'Number of events must be 1');
29
29
  }
30
- // ムビチケ購入管理番号は1つのみ許可
31
- const movieTicketIdentifiers = [...new Set(movieTickets === null || movieTickets === void 0 ? void 0 : movieTickets.map((t) => t.identifier))];
30
+ // 決済カードidentifierは1つのみ許可
31
+ const movieTicketIdentifiers = [...new Set(movieTickets.map((t) => t.identifier))];
32
32
  if (movieTicketIdentifiers.length !== 1) {
33
33
  throw new factory.errors.Argument('movieTickets', 'Number of movie ticket identifiers must be 1');
34
34
  }
35
35
  const movieTicketIdentifier = movieTicketIdentifiers[0];
36
+ // 決済カードaccessCodeは1つのみ許可(2023-06-23~)
37
+ const accessCodes = [...new Set(movieTickets.map((t) => t.accessCode))];
38
+ if (accessCodes.length !== 1) {
39
+ throw new factory.errors.Argument('movieTickets', 'Number of movie ticket accessCodes must be 1');
40
+ }
36
41
  // ムビチケ系統の決済方法タイプは動的
37
42
  const paymentMethodType = (_b = params.object.paymentMethod) === null || _b === void 0 ? void 0 : _b.typeOf;
38
43
  if (typeof paymentMethodType !== 'string') {
@@ -71,7 +76,7 @@ function validateMovieTicket(params, paymentServiceId, useCheckMovieTicketBefore
71
76
  var _a, _b;
72
77
  const requiredMovieTicketsCountByServiceType = movieTickets.filter((t) => t.serviceType === serviceType).length;
73
78
  let availableMovieTicketsCountByServiceType = 0;
74
- const ykknInfos = (_b = (_a = checkResult.purchaseNumberAuthResult.knyknrNoInfoOut) === null || _a === void 0 ? void 0 : _a.find((knyknrNoInfoOut) => knyknrNoInfoOut.knyknrNo === movieTicketIdentifiers[0])) === null || _b === void 0 ? void 0 : _b.ykknInfo;
79
+ const ykknInfos = (_b = (_a = checkResult.purchaseNumberAuthResult.knyknrNoInfoOut) === null || _a === void 0 ? void 0 : _a.find((knyknrNoInfoOut) => knyknrNoInfoOut.knyknrNo === movieTicketIdentifier)) === null || _b === void 0 ? void 0 : _b.ykknInfo;
75
80
  const ykknInfoOfServiceType = ykknInfos === null || ykknInfos === void 0 ? void 0 : ykknInfos.find((ykknInfo) => ykknInfo.ykknshTyp === serviceType);
76
81
  const ykknKnshbtsmiNum = ykknInfoOfServiceType === null || ykknInfoOfServiceType === void 0 ? void 0 : ykknInfoOfServiceType.ykknKnshbtsmiNum;
77
82
  if (typeof ykknKnshbtsmiNum === 'string') {
package/package.json CHANGED
@@ -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.136"
120
+ "version": "21.2.0-alpha.137"
121
121
  }