@chevre/domain 21.4.0-alpha.3 → 21.4.0-alpha.30

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 (93) hide show
  1. package/example/src/chevre/cleanActions.ts +23 -0
  2. package/example/src/chevre/cleanEventsByMovieTheater.ts +32 -0
  3. package/example/src/chevre/createDeleteTransactionTasksOfDeletedPeople.ts +126 -0
  4. package/example/src/chevre/createManyEventsIfNotExist.ts +6 -0
  5. package/example/src/chevre/iam/searchMemberOfIdsByMemberId.ts +31 -0
  6. package/example/src/chevre/iam/searchProjectIdsByMemberId.ts +32 -0
  7. package/example/src/chevre/migrateEventOrganizer.ts +125 -0
  8. package/example/src/chevre/migrateIAMMemberMemberOf.ts +59 -0
  9. package/example/src/chevre/migrateReservationProvider.ts +119 -0
  10. package/example/src/chevre/migrateScreeningRoomOrganizer.ts +91 -0
  11. package/example/src/chevre/processReserve.ts +0 -1
  12. package/example/src/chevre/searchEvents.ts +1 -9
  13. package/example/src/chevre/searchPermissions.ts +7 -15
  14. package/lib/chevre/factory/event.d.ts +1 -1
  15. package/lib/chevre/repo/action.d.ts +6 -0
  16. package/lib/chevre/repo/action.js +13 -0
  17. package/lib/chevre/repo/assetTransaction.d.ts +4 -1
  18. package/lib/chevre/repo/assetTransaction.js +6 -12
  19. package/lib/chevre/repo/event.d.ts +25 -4
  20. package/lib/chevre/repo/event.js +122 -60
  21. package/lib/chevre/repo/member.d.ts +76 -1
  22. package/lib/chevre/repo/member.js +81 -20
  23. package/lib/chevre/repo/mongoose/schemas/event.d.ts +7 -4
  24. package/lib/chevre/repo/mongoose/schemas/event.js +15 -2
  25. package/lib/chevre/repo/mongoose/schemas/member.d.ts +7 -7
  26. package/lib/chevre/repo/mongoose/schemas/member.js +12 -6
  27. package/lib/chevre/repo/mongoose/schemas/place.d.ts +6 -6
  28. package/lib/chevre/repo/mongoose/schemas/place.js +9 -2
  29. package/lib/chevre/repo/mongoose/schemas/product.d.ts +3 -3
  30. package/lib/chevre/repo/mongoose/schemas/reservation.d.ts +6 -3
  31. package/lib/chevre/repo/mongoose/schemas/reservation.js +10 -4
  32. package/lib/chevre/repo/order.d.ts +21 -0
  33. package/lib/chevre/repo/order.js +54 -62
  34. package/lib/chevre/repo/place.d.ts +57 -16
  35. package/lib/chevre/repo/place.js +112 -167
  36. package/lib/chevre/repo/product.d.ts +2 -4
  37. package/lib/chevre/repo/product.js +52 -7
  38. package/lib/chevre/repo/reservation.d.ts +33 -21
  39. package/lib/chevre/repo/reservation.js +97 -79
  40. package/lib/chevre/repo/seller.d.ts +18 -5
  41. package/lib/chevre/repo/seller.js +53 -46
  42. package/lib/chevre/repo/task.d.ts +1 -1
  43. package/lib/chevre/service/aggregation/event/aggregateScreeningEvent.d.ts +2 -2
  44. package/lib/chevre/service/aggregation/event/aggregateScreeningEvent.js +3 -2
  45. package/lib/chevre/service/aggregation/event/aggregateUseActionsOnEvent.js +1 -1
  46. package/lib/chevre/service/assetTransaction/pay/account/validation.js +9 -1
  47. package/lib/chevre/service/assetTransaction/pay.js +9 -1
  48. package/lib/chevre/service/assetTransaction/registerService.js +2 -2
  49. package/lib/chevre/service/assetTransaction/reserve/factory.d.ts +10 -4
  50. package/lib/chevre/service/assetTransaction/reserve/factory.js +21 -40
  51. package/lib/chevre/service/assetTransaction/reserve.d.ts +0 -1
  52. package/lib/chevre/service/assetTransaction/reserve.js +7 -22
  53. package/lib/chevre/service/event/createEvent.d.ts +11 -0
  54. package/lib/chevre/service/event/createEvent.js +112 -0
  55. package/lib/chevre/service/event.d.ts +2 -0
  56. package/lib/chevre/service/event.js +26 -26
  57. package/lib/chevre/service/iam.d.ts +5 -0
  58. package/lib/chevre/service/iam.js +7 -19
  59. package/lib/chevre/service/moneyTransfer.js +1 -1
  60. package/lib/chevre/service/offer/event/authorize.d.ts +0 -1
  61. package/lib/chevre/service/offer/event/authorize.js +6 -2
  62. package/lib/chevre/service/offer/event/searchEventTicketOffers.js +16 -2
  63. package/lib/chevre/service/offer/eventServiceByCOA/factory.d.ts +1 -1
  64. package/lib/chevre/service/offer/product/searchProductOffers.js +1 -1
  65. package/lib/chevre/service/order/returnOrder.js +8 -1
  66. package/lib/chevre/service/order/sendOrder.js +8 -1
  67. package/lib/chevre/service/payment/creditCard.js +9 -1
  68. package/lib/chevre/service/payment/movieTicket/factory.d.ts +2 -1
  69. package/lib/chevre/service/payment/movieTicket/validation.js +9 -1
  70. package/lib/chevre/service/payment/movieTicket.js +19 -2
  71. package/lib/chevre/service/payment/paymentCard.js +1 -3
  72. package/lib/chevre/service/reserve/cancelReservation.js +15 -28
  73. package/lib/chevre/service/reserve/confirmReservation.js +14 -30
  74. package/lib/chevre/service/reserve/verifyToken4reservation.d.ts +3 -0
  75. package/lib/chevre/service/reserve/verifyToken4reservation.js +3 -1
  76. package/lib/chevre/service/task/{syncScreeningRooms.d.ts → createEvent.d.ts} +1 -1
  77. package/lib/chevre/service/task/{syncScreeningRooms.js → createEvent.js} +11 -3
  78. package/lib/chevre/service/task/onAuthorizationCreated.js +1 -0
  79. package/lib/chevre/service/task/returnPayTransaction.js +1 -0
  80. package/lib/chevre/service/transaction/moneyTransfer.js +9 -1
  81. package/lib/chevre/service/transaction/orderProgramMembership/findCreditCard.js +1 -1
  82. package/lib/chevre/service/transaction/placeOrderInProgress.js +9 -6
  83. package/lib/chevre/service/transaction/returnOrder.js +9 -3
  84. package/package.json +3 -3
  85. package/example/src/chevre/findByOrderNumberAndReservationId.ts +0 -20
  86. package/example/src/chevre/findScreeningRoomsByBranchCode.ts +0 -27
  87. package/example/src/chevre/migrateEventOffersItemOfferedAvailableChannel.ts +0 -90
  88. package/example/src/chevre/migrateEventOffersItemOfferedTypeOf.ts +0 -75
  89. package/example/src/chevre/migrateSSKTEventCOAEndpoint.ts +0 -64
  90. package/example/src/chevre/migrateScreeningEventSeriesVersion.ts +0 -79
  91. package/example/src/chevre/searchScreeningRooms.ts +0 -33
  92. package/example/src/chevre/syncScreeningRooms.ts +0 -21
  93. package/example/src/chevre/syncScreeningRoomsAll.ts +0 -41
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.createEvent = void 0;
13
+ const factory = require("../../factory");
14
+ function createEvent(params) {
15
+ // tslint:disable-next-line:max-func-body-length
16
+ return (repos) => __awaiter(this, void 0, void 0, function* () {
17
+ var _a, _b;
18
+ const actionAttributes = params;
19
+ const action = yield repos.action.start(actionAttributes);
20
+ let eventIds = [];
21
+ let eventType;
22
+ try {
23
+ if (actionAttributes.object.length > 0) {
24
+ if (((_a = actionAttributes.instrument) === null || _a === void 0 ? void 0 : _a.createScreeningEventSeriesIfNotExistByWorkPerformed) === true) {
25
+ const createScreeningEventSeriesOnAllLocation = ((_b = actionAttributes.instrument) === null || _b === void 0 ? void 0 : _b.createScreeningEventSeriesOnAllLocation) === true;
26
+ let creatingEventParams = actionAttributes.object.map((p) => {
27
+ if (p.typeOf !== factory.eventType.ScreeningEventSeries) {
28
+ throw new factory.errors.Argument('typeOf', `must be ${factory.eventType.ScreeningEventSeries}`);
29
+ }
30
+ return { attributes: p };
31
+ });
32
+ // 全施設対応(2023-07-21~)
33
+ if (createScreeningEventSeriesOnAllLocation) {
34
+ if (creatingEventParams.length !== 1) {
35
+ throw new factory.errors.NotImplemented('creatingEventAttributes.length must be 1');
36
+ }
37
+ const firstCreatingEventParams = creatingEventParams[0];
38
+ const movieTheaters = yield repos.place.searchMovieTheaters({
39
+ project: { id: { $eq: actionAttributes.project.id } }
40
+ }, ['_id', 'branchCode', 'kanaName', 'name'], []);
41
+ creatingEventParams = movieTheaters.map((movieTheater) => {
42
+ const location = {
43
+ branchCode: movieTheater.branchCode,
44
+ id: movieTheater.id,
45
+ kanaName: movieTheater.kanaName,
46
+ name: movieTheater.name,
47
+ typeOf: factory.placeType.MovieTheater
48
+ };
49
+ return {
50
+ attributes: Object.assign(Object.assign({}, firstCreatingEventParams.attributes), { location })
51
+ };
52
+ });
53
+ }
54
+ const bulkWriteResult = yield repos.event.createScreeningEventSeriesIfNotExistByWorkPerformed(creatingEventParams);
55
+ let upsertedIds;
56
+ if (bulkWriteResult !== undefined) {
57
+ upsertedIds = bulkWriteResult.getUpsertedIds()
58
+ .map((doc) => doc._id.toString());
59
+ }
60
+ eventIds = (Array.isArray(upsertedIds)) ? upsertedIds : [];
61
+ eventType = factory.eventType.ScreeningEventSeries;
62
+ }
63
+ else {
64
+ // no op
65
+ throw new factory.errors.NotImplemented('only createScreeningEventSeriesIfNotExistByWorkPerformed implemented');
66
+ }
67
+ }
68
+ }
69
+ catch (error) {
70
+ // actionにエラー結果を追加
71
+ try {
72
+ const actionError = Object.assign(Object.assign({}, error), { message: error.message, name: error.name });
73
+ yield repos.action.giveUp({ typeOf: action.typeOf, id: action.id, error: actionError });
74
+ }
75
+ catch (__) {
76
+ // 失敗したら仕方ない
77
+ }
78
+ throw error;
79
+ }
80
+ // アクション完了
81
+ yield repos.action.complete({
82
+ typeOf: action.typeOf,
83
+ id: action.id,
84
+ result: (Array.isArray(eventIds))
85
+ ? eventIds.map((eventId) => {
86
+ return { id: eventId };
87
+ })
88
+ : undefined
89
+ });
90
+ if (Array.isArray(eventIds) && eventIds.length > 0 && typeof eventType === 'string') {
91
+ // 非同期に変更(2023-06-08~)
92
+ const onEventChangedTask = {
93
+ project: actionAttributes.project,
94
+ name: factory.taskName.OnEventChanged,
95
+ status: factory.taskStatus.Ready,
96
+ runsAt: new Date(),
97
+ remainingNumberOfTries: 3,
98
+ numberOfTried: 0,
99
+ executionResults: [],
100
+ data: {
101
+ id: eventIds,
102
+ project: { id: actionAttributes.project.id },
103
+ typeOf: eventType,
104
+ isNew: true,
105
+ useInform: true
106
+ }
107
+ };
108
+ yield repos.task.saveMany([onEventChangedTask], { emitImmediately: true });
109
+ }
110
+ });
111
+ }
112
+ exports.createEvent = createEvent;
@@ -6,6 +6,7 @@ import { MongoRepository as ProjectRepo } from '../repo/project';
6
6
  import { MongoRepository as SellerRepo } from '../repo/seller';
7
7
  import { MongoRepository as TaskRepo } from '../repo/task';
8
8
  import * as factory from '../factory';
9
+ import { createEvent } from './event/createEvent';
9
10
  /**
10
11
  * Googleで作品画像を検索する
11
12
  */
@@ -71,3 +72,4 @@ export declare function updateEvent4ttts(params: {
71
72
  project: ProjectRepo;
72
73
  task: TaskRepo;
73
74
  }) => Promise<void>;
75
+ export { createEvent };
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.updateEvent4ttts = exports.createScreeningEventIdFromCOA = exports.importFromCOA = void 0;
12
+ exports.createEvent = exports.updateEvent4ttts = exports.createScreeningEventIdFromCOA = exports.importFromCOA = void 0;
13
13
  /**
14
14
  * マスターデータ同期サービス
15
15
  */
@@ -21,6 +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 createEvent_1 = require("./event/createEvent");
25
+ Object.defineProperty(exports, "createEvent", { enumerable: true, get: function () { return createEvent_1.createEvent; } });
24
26
  const offer_1 = require("./offer");
25
27
  const debug = createDebug('chevre-domain:service:event');
26
28
  const coaAuthClient = new COA.auth.RefreshToken({
@@ -92,6 +94,7 @@ function importFromCOA(params) {
92
94
  const sellersWithSameBranchCode = yield repos.seller.search({
93
95
  limit: 1,
94
96
  page: 1,
97
+ project: { id: { $eq: project.id } },
95
98
  branchCode: { $eq: params.locationBranchCode }
96
99
  }, ['_id'], []);
97
100
  const seller = sellersWithSameBranchCode.shift();
@@ -119,6 +122,7 @@ function importFromCOA(params) {
119
122
  throw new factory.errors.NotFound(factory.placeType.MovieTheater);
120
123
  }
121
124
  const screeningRooms = yield repos.place.searchScreeningRooms({
125
+ project: { id: { $eq: project.id } },
122
126
  containedInPlace: { branchCode: { $eq: movieTheater.branchCode } }
123
127
  });
124
128
  const targetImportFrom = moment(`${moment(params.importFrom)
@@ -133,7 +137,8 @@ function importFromCOA(params) {
133
137
  locationBranchCode: params.locationBranchCode,
134
138
  movieTheater,
135
139
  project: project,
136
- saveScreeningEventSeries: params.saveScreeningEventSeries
140
+ saveScreeningEventSeries: params.saveScreeningEventSeries,
141
+ seller: { id: seller.id }
137
142
  })(repos);
138
143
  savedScreeningEventSeriesCount = savedEventsCount;
139
144
  try {
@@ -145,7 +150,8 @@ function importFromCOA(params) {
145
150
  screeningEventSerieses: screeningEventSerieses,
146
151
  project: project,
147
152
  targetImportFrom: targetImportFrom.toDate(),
148
- targetImportThrough: targetImportThrough.toDate()
153
+ targetImportThrough: targetImportThrough.toDate(),
154
+ seller: { id: seller.id }
149
155
  })(repos);
150
156
  savedScreeningEventsCount = screeningEvents.length;
151
157
  // COAから削除されたイベントをキャンセル済ステータスへ変更
@@ -234,7 +240,8 @@ function saveScreeningEventSeries(params) {
234
240
  eizouKubuns: eizouKubuns,
235
241
  joueihousikiKubuns: joueihousikiKubuns,
236
242
  jimakufukikaeKubuns: jimakufukikaeKubuns,
237
- availablePaymentMethodTypes
243
+ availablePaymentMethodTypes,
244
+ seller: params.seller
238
245
  });
239
246
  });
240
247
  let savedEventsCount = 0;
@@ -362,7 +369,8 @@ function createScreeningEvents(params) {
362
369
  screenRoom: screenRoom,
363
370
  superEvent: screeningEventSeries,
364
371
  serviceKubuns: serviceKubuns,
365
- acousticKubuns: acousticKubuns
372
+ acousticKubuns: acousticKubuns,
373
+ seller: params.seller
366
374
  });
367
375
  screeningEvents.push(screeningEvent);
368
376
  });
@@ -373,16 +381,6 @@ function cancelDeletedEvents(params) {
373
381
  return (repos) => __awaiter(this, void 0, void 0, function* () {
374
382
  // distinctでidのみ取得(2023-01-25~)
375
383
  // COAから削除されたイベントをキャンセル済ステータスへ変更
376
- // const ids = await repos.event.search<factory.eventType.ScreeningEvent>({
377
- // project: { id: { $eq: params.project.id } },
378
- // typeOf: factory.eventType.ScreeningEvent,
379
- // superEvent: {
380
- // locationBranchCodes: [params.locationBranchCode]
381
- // },
382
- // startFrom: params.targetImportFrom,
383
- // startThrough: params.targetImportThrough
384
- // })
385
- // .then((events) => events.map((e) => e.id));
386
384
  const ids = yield repos.event.searchIds({
387
385
  project: { id: { $eq: params.project.id } },
388
386
  typeOf: factory.eventType.ScreeningEvent,
@@ -397,7 +395,10 @@ function cancelDeletedEvents(params) {
397
395
  debug(`cancelling ${cancelledIds.length} events...`);
398
396
  for (const cancelledId of cancelledIds) {
399
397
  try {
400
- yield repos.event.cancel({ id: cancelledId });
398
+ yield repos.event.cancel({
399
+ id: cancelledId,
400
+ project: { id: params.project.id }
401
+ });
401
402
  }
402
403
  catch (error) {
403
404
  // tslint:disable-next-line:no-single-line-block-comment
@@ -493,7 +494,8 @@ function createScreeningEventFromCOA(params) {
493
494
  attendeeCount: 0,
494
495
  maximumAttendeeCapacity: params.screenRoom.maximumAttendeeCapacity,
495
496
  remainingAttendeeCapacity: params.screenRoom.maximumAttendeeCapacity,
496
- additionalProperty
497
+ additionalProperty,
498
+ organizer: { id: params.seller.id }
497
499
  };
498
500
  }
499
501
  function createScreeningEventAdditionalPropertyFromCOA(params) {
@@ -579,12 +581,8 @@ function createScreeningEventSeriesFromCOA(params) {
579
581
  kanaName: params.movieTheater.kanaName,
580
582
  typeOf: params.movieTheater.typeOf
581
583
  },
582
- // 不要なので廃止(2023-01-12~)
583
- // organizer: {
584
- // typeOf: factory.organizationType.Corporation,
585
- // identifier: params.movieTheater.id,
586
- // name: params.movieTheater.name
587
- // },
584
+ // 必須化(2023-07-12~)
585
+ organizer: { id: params.seller.id },
588
586
  videoFormat: params.eizouKubuns.filter((kubun) => kubun.kubunCode === params.filmFromCOA.kbnEizou)[0],
589
587
  soundFormat: [],
590
588
  workPerformed: {
@@ -674,7 +672,7 @@ function createMovieTheaterFromCOA(project, seller, theaterFromCOA, screensFromC
674
672
  },
675
673
  kanaName: theaterFromCOA.theaterNameKana,
676
674
  containsPlace: screensFromCOA.map((screenFromCOA) => {
677
- return createScreeningRoomFromCOA(project, screenFromCOA);
675
+ return createScreeningRoomFromCOA(project, seller, screenFromCOA);
678
676
  }),
679
677
  typeOf: factory.placeType.MovieTheater,
680
678
  telephone: theaterFromCOA.theaterTelNum,
@@ -716,7 +714,7 @@ function createMovieTheaterFromCOA(project, seller, theaterFromCOA, screensFromC
716
714
  */
717
715
  // tslint:disable-next-line:no-single-line-block-comment
718
716
  /* istanbul ignore next */
719
- function createScreeningRoomFromCOA(project, screenFromCOA) {
717
+ function createScreeningRoomFromCOA(project, seller, screenFromCOA) {
720
718
  const sections = [];
721
719
  const sectionCodes = [];
722
720
  screenFromCOA.listSeat.forEach((seat) => {
@@ -755,7 +753,9 @@ function createScreeningRoomFromCOA(project, screenFromCOA) {
755
753
  en: screenFromCOA.screenNameEng
756
754
  },
757
755
  typeOf: factory.placeType.ScreeningRoom,
758
- maximumAttendeeCapacity: sections[0].containsPlace.length
756
+ maximumAttendeeCapacity: sections[0].containsPlace.length,
757
+ // 必須化(2023-07-14~)
758
+ parentOrganization: { id: seller.id, typeOf: factory.organizationType.Corporation }
759
759
  };
760
760
  }
761
761
  function updateEvent4ttts(params) {
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import { MongoRepository as MemberRepo } from '../repo/member';
5
5
  import { MongoRepository as RoleRepo } from '../repo/role';
6
+ import * as factory from '../factory';
6
7
  export type IPermission = string;
7
8
  /**
8
9
  * プロジェクトメンバーの権限を検索する
@@ -13,6 +14,10 @@ export declare function searchPermissions(params: {
13
14
  };
14
15
  member: {
15
16
  id: string;
17
+ memberOf: {
18
+ id: string;
19
+ typeOf: factory.organizationType.Corporation | factory.organizationType.Project;
20
+ };
16
21
  };
17
22
  }): (repos: {
18
23
  member: MemberRepo;
@@ -18,30 +18,18 @@ function searchPermissions(params) {
18
18
  let permissions = [];
19
19
  const hasRole = yield repos.member.aggregateRoleNames({
20
20
  project: { id: { $eq: params.project.id } },
21
- member: { id: { $eq: params.member.id } }
21
+ member: {
22
+ id: { $eq: params.member.id },
23
+ memberOf: {
24
+ id: { $eq: params.member.memberOf.id },
25
+ typeOf: { $eq: params.member.memberOf.typeOf }
26
+ }
27
+ }
22
28
  });
23
29
  if (hasRole.length > 0) {
24
30
  permissions = yield repos.role.aggregatePermissions({ roleName: { $in: hasRole.map((r) => r.roleName) } });
25
31
  }
26
32
  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 };
45
33
  });
46
34
  }
47
35
  exports.searchPermissions = searchPermissions;
@@ -322,7 +322,7 @@ function getIssuedThroughIdByAction(params) {
322
322
  function createPermitServiceCredentials(params) {
323
323
  return (repos) => __awaiter(this, void 0, void 0, function* () {
324
324
  var _a, _b, _c, _d, _e, _f, _g;
325
- const paymentCardService = yield repos.product.findById({ id: params.issuedThrough.id });
325
+ const paymentCardService = yield repos.product.findById({ id: params.issuedThrough.id }, ['availableChannel'], []);
326
326
  const permitServiceEndpoint = (_a = paymentCardService.availableChannel) === null || _a === void 0 ? void 0 : _a.serviceUrl;
327
327
  const permitServiceAuthorizeServerDomain = (_c = (_b = paymentCardService.availableChannel) === null || _b === void 0 ? void 0 : _b.credentials) === null || _c === void 0 ? void 0 : _c.authorizeServerDomain;
328
328
  const permitServiceClientId = (_e = (_d = paymentCardService.availableChannel) === null || _d === void 0 ? void 0 : _d.credentials) === null || _e === void 0 ? void 0 : _e.clientId;
@@ -57,7 +57,6 @@ declare function authorize(params: {
57
57
  */
58
58
  id: string;
59
59
  };
60
- disablePendingReservations: boolean;
61
60
  useHoldStockByTransactionNumber: boolean;
62
61
  stockHoldUntilDaysAfterEventEnd: number;
63
62
  }): IAuthorizeOperation<IAuthorizeOfferAction>;
@@ -67,7 +67,8 @@ function authorize(params) {
67
67
  unitPriceOffers,
68
68
  validateEvent: params.validateEvent === true,
69
69
  validateEventOfferPeriod: params.validateEventOfferPeriod === true,
70
- disablePendingReservations: params.disablePendingReservations,
70
+ // 完全廃止(2023-07-19~)
71
+ // disablePendingReservations: params.disablePendingReservations,
71
72
  useHoldStockByTransactionNumber: params.useHoldStockByTransactionNumber,
72
73
  stockHoldUntilDaysAfterEventEnd: params.stockHoldUntilDaysAfterEventEnd
73
74
  })(repos);
@@ -165,7 +166,10 @@ function processStartReserve4chevre(params) {
165
166
  // requestBody = startParams;
166
167
  const startParamObject = yield validateObjectWithoutDetail(startParams)(repos);
167
168
  // 予約取引開始
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);
169
+ 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,
170
+ // 完全廃止(2023-07-19~)
171
+ // disablePendingReservations: params.disablePendingReservations,
172
+ useHoldStockByTransactionNumber: params.useHoldStockByTransactionNumber, stockHoldUntilDaysAfterEventEnd: params.stockHoldUntilDaysAfterEventEnd }))(repos);
169
173
  responseBody = startReserveTransactionResult.transaction;
170
174
  // 予約取引からオファー情報を生成する
171
175
  acceptedOffers4result = (0, factory_1.responseBody2acceptedOffers4result)({
@@ -18,7 +18,7 @@ function searchTicketOffersByItemOffered(params) {
18
18
  var _a, _b, _c, _d;
19
19
  let catalogId;
20
20
  if (typeof ((_a = params.itemOffered) === null || _a === void 0 ? void 0 : _a.id) === 'string') {
21
- const eventService = yield repos.product.findById({ id: (_b = params.itemOffered) === null || _b === void 0 ? void 0 : _b.id });
21
+ const eventService = yield repos.product.findById({ id: (_b = params.itemOffered) === null || _b === void 0 ? void 0 : _b.id }, ['hasOfferCatalog'], []);
22
22
  if (typeof ((_c = eventService.hasOfferCatalog) === null || _c === void 0 ? void 0 : _c.id) === 'string') {
23
23
  catalogId = eventService.hasOfferCatalog.id;
24
24
  }
@@ -53,7 +53,21 @@ function searchEventTicketOffersByEvent(params) {
53
53
  let videoFormatTypes = [];
54
54
  if (event.typeOf === factory.eventType.ScreeningEvent) {
55
55
  // 取得属性最適化(2023-01-25~)
56
- const superEvent = yield repos.event.findById({ id: event.superEvent.id }, { soundFormat: 1, videoFormat: 1 });
56
+ // const superEvent: Pick<factory.event.IEvent<factory.eventType.ScreeningEventSeries>, 'soundFormat' | 'videoFormat'> =
57
+ // await repos.event.findById<factory.eventType.ScreeningEventSeries>(
58
+ // { id: event.superEvent.id },
59
+ // { soundFormat: 1, videoFormat: 1 }
60
+ // );
61
+ const superEvents = yield repos.event.search({
62
+ limit: 1,
63
+ page: 1,
64
+ id: { $eq: event.superEvent.id },
65
+ typeOf: factory.eventType.ScreeningEventSeries
66
+ }, { soundFormat: 1, videoFormat: 1 });
67
+ const superEvent = superEvents.shift();
68
+ if (superEvent === undefined) {
69
+ throw new factory.errors.NotFound(factory.eventType.ScreeningEventSeries);
70
+ }
57
71
  soundFormatTypes = (Array.isArray(superEvent.soundFormat)) ? superEvent.soundFormat.map((f) => f.typeOf) : [];
58
72
  videoFormatTypes = (Array.isArray(superEvent.videoFormat)) ? superEvent.videoFormat.map((f) => f.typeOf) : [];
59
73
  }
@@ -4,7 +4,7 @@ export import WebAPIIdentifier = factory.service.webAPI.Identifier;
4
4
  export type IAcceptedOffer4COA = factory.action.authorize.offer.seatReservation.IAcceptedOffer<factory.service.webAPI.Identifier.COA>;
5
5
  export declare function createAuthorizeSeatReservationActionAttributes(params: {
6
6
  acceptedOffers: factory.action.authorize.offer.seatReservation.IAcceptedOffer<factory.service.webAPI.Identifier.COA>[];
7
- event: factory.event.IEvent<factory.eventType.ScreeningEvent>;
7
+ event: IMinimizedIndividualEvent<factory.eventType.ScreeningEvent>;
8
8
  transaction: factory.transaction.ITransaction<factory.transactionType.PlaceOrder>;
9
9
  }): factory.action.authorize.offer.seatReservation.IAttributes<WebAPIIdentifier.COA>;
10
10
  /**
@@ -18,7 +18,7 @@ function searchProductOffers(params) {
18
18
  return (repos) => __awaiter(this, void 0, void 0, function* () {
19
19
  var _a;
20
20
  // プロダクト検索
21
- const productWithOffers = yield repos.product.findById({ id: params.itemOffered.id });
21
+ const productWithOffers = yield repos.product.findById({ id: params.itemOffered.id }, ['hasOfferCatalog'], []);
22
22
  const offerCatalogId = (_a = productWithOffers.hasOfferCatalog) === null || _a === void 0 ? void 0 : _a.id;
23
23
  if (typeof offerCatalogId !== 'string') {
24
24
  return [];
@@ -14,6 +14,7 @@ const order_1 = require("../../factory/order");
14
14
  const factory_1 = require("../delivery/factory");
15
15
  const onOrderStatusChanged_1 = require("./onOrderStatusChanged");
16
16
  const factory = require("../../factory");
17
+ // tslint:disable-next-line:max-func-body-length
17
18
  function returnOrder(params) {
18
19
  return (repos) => __awaiter(this, void 0, void 0, function* () {
19
20
  const orderNumber = params.object.orderNumber;
@@ -21,7 +22,12 @@ function returnOrder(params) {
21
22
  ? params.object.dateReturned
22
23
  : new Date();
23
24
  const returner = params.agent;
24
- let order = yield repos.order.findByOrderNumber({ orderNumber, inclusion: [], exclusion: [] });
25
+ let order = yield repos.order.findByOrderNumber({
26
+ orderNumber,
27
+ project: { id: params.project.id },
28
+ inclusion: [],
29
+ exclusion: []
30
+ });
25
31
  // プロジェクト条件検証
26
32
  if (order.project.id !== params.project.id) {
27
33
  throw new factory.errors.NotFound('Order');
@@ -59,6 +65,7 @@ function returnOrder(params) {
59
65
  returnedOwnershipInfos = yield processReturnOrder(order, dateReturned)({ ownershipInfo: repos.ownershipInfo });
60
66
  // 注文ステータス変更
61
67
  order = yield repos.order.returnOrder({
68
+ project: { id: order.project.id },
62
69
  orderNumber,
63
70
  dateReturned,
64
71
  returner
@@ -31,7 +31,12 @@ function sendOrder(params) {
31
31
  orderNumber
32
32
  })({ transaction: repos.transaction });
33
33
  // 注文取得
34
- let order = yield repos.order.findByOrderNumber({ orderNumber, inclusion: [], exclusion: [] });
34
+ let order = yield repos.order.findByOrderNumber({
35
+ orderNumber,
36
+ project: { id: params.project.id },
37
+ inclusion: [],
38
+ exclusion: []
39
+ });
35
40
  // プロジェクト条件検証
36
41
  if (order.project.id !== params.project.id) {
37
42
  throw new factory.errors.NotFound('Order');
@@ -69,6 +74,7 @@ function sendOrder(params) {
69
74
  return repos.ownershipInfo.createIfNotExistByIdentifier(ownershipInfo);
70
75
  })));
71
76
  order = yield repos.order.changeStatus({
77
+ project: { id: order.project.id },
72
78
  orderNumber,
73
79
  orderStatus: factory.orderStatus.OrderDelivered,
74
80
  previousOrderStatus: factory.orderStatus.OrderProcessing
@@ -98,6 +104,7 @@ function sendOrder(params) {
98
104
  // すでにOrderReturnedだった場合、OrderDelivered->OrderReturnedの処理自体は成功しているので、後処理を続行する
99
105
  const currentOrder = yield repos.order.findByOrderNumber({
100
106
  orderNumber: params.object.orderNumber,
107
+ project: { id: params.project.id },
101
108
  inclusion: ['orderStatus'],
102
109
  exclusion: []
103
110
  });
@@ -521,7 +521,15 @@ function processChangeTransaction(params) {
521
521
  function getGMOInfoFromSeller(params) {
522
522
  return (repos) => __awaiter(this, void 0, void 0, function* () {
523
523
  var _a, _b, _c, _d;
524
- const seller = yield repos.seller.findById({ id: String(params.seller.id) }, ['paymentAccepted', 'project'], []);
524
+ const sellers = yield repos.seller.search({
525
+ limit: 1,
526
+ page: 1,
527
+ id: { $eq: String(params.seller.id) }
528
+ }, ['paymentAccepted', 'project'], []);
529
+ const seller = sellers.shift();
530
+ if (seller === undefined) {
531
+ throw new factory.errors.NotFound(factory.organizationType.Corporation);
532
+ }
525
533
  const paymentAccepted = (_a = seller.paymentAccepted) === null || _a === void 0 ? void 0 : _a.some((a) => a.paymentMethodType === params.paymentMethodType);
526
534
  if (paymentAccepted !== true) {
527
535
  throw new factory.errors.Argument('transaction', 'payment not accepted');
@@ -1,10 +1,11 @@
1
1
  import * as surfrock from '@surfrock/sdk';
2
2
  import * as factory from '../../../factory';
3
+ import { IMinimizedIndividualEvent } from '../../../factory/event';
3
4
  export declare function createSeatInfoSyncIn(params: {
4
5
  paymentMethodType: string;
5
6
  paymentMethodId: string;
6
7
  movieTickets: factory.action.trade.pay.IMovieTicket[];
7
- event: factory.event.screeningEvent.IEvent;
8
+ event: IMinimizedIndividualEvent<factory.eventType.ScreeningEvent>;
8
9
  purpose: factory.action.trade.pay.IPurpose;
9
10
  seller: Pick<factory.seller.ISeller, 'paymentAccepted'>;
10
11
  credentials: {
@@ -52,7 +52,15 @@ function validateMovieTicket(params, paymentServiceId, useCheckMovieTicketBefore
52
52
  if (typeof sellerId !== 'string') {
53
53
  throw new factory.errors.ArgumentNull('recipient.id');
54
54
  }
55
- const seller = yield repos.seller.findById({ id: sellerId }, ['paymentAccepted', 'project'], []);
55
+ const sellers = yield repos.seller.search({
56
+ limit: 1,
57
+ page: 1,
58
+ id: { $eq: sellerId }
59
+ }, ['paymentAccepted', 'project'], []);
60
+ const seller = sellers.shift();
61
+ if (seller === undefined) {
62
+ throw new factory.errors.NotFound(factory.organizationType.Corporation);
63
+ }
56
64
  const paymentAccepted = (_d = seller.paymentAccepted) === null || _d === void 0 ? void 0 : _d.some((a) => a.paymentMethodType === paymentMethodType);
57
65
  if (paymentAccepted !== true) {
58
66
  throw new factory.errors.Argument('recipient', 'payment not accepted');
@@ -27,6 +27,7 @@ const onRefund_1 = require("./any/onRefund");
27
27
  /**
28
28
  * MovieTicket認証
29
29
  */
30
+ // tslint:disable-next-line:max-func-body-length
30
31
  function checkMovieTicket(params) {
31
32
  return (repos) => __awaiter(this, void 0, void 0, function* () {
32
33
  var _a, _b, _c, _d, _e, _f;
@@ -58,7 +59,15 @@ function checkMovieTicket(params) {
58
59
  id: eventIds[0]
59
60
  });
60
61
  // ショップ情報取得
61
- const seller = yield repos.seller.findById({ id: (_e = params.object[0]) === null || _e === void 0 ? void 0 : _e.seller.id }, ['paymentAccepted', 'project'], []);
62
+ const sellers = yield repos.seller.search({
63
+ limit: 1,
64
+ page: 1,
65
+ id: { $eq: (_e = params.object[0]) === null || _e === void 0 ? void 0 : _e.seller.id }
66
+ }, ['paymentAccepted', 'project'], []);
67
+ const seller = sellers.shift();
68
+ if (seller === undefined) {
69
+ throw new factory.errors.NotFound(factory.organizationType.Corporation);
70
+ }
62
71
  const paymentAccepted = (_f = seller.paymentAccepted) === null || _f === void 0 ? void 0 : _f.some((a) => a.paymentMethodType === paymentMethodType);
63
72
  if (paymentAccepted !== true) {
64
73
  throw new factory.errors.Argument('transactionId', 'payment not accepted');
@@ -302,7 +311,15 @@ function payActionParams2seatInfoSyncIn(params) {
302
311
  // イベント取得属性最適化(2023-01-23~)
303
312
  // const event = await repos.event.findById<factory.eventType.ScreeningEvent>({ id: eventIds[0] });
304
313
  const event = yield repos.event.findMinimizedIndividualEventById({ id: eventIds[0] });
305
- const seller = yield repos.seller.findById({ id: String((_d = params.recipient) === null || _d === void 0 ? void 0 : _d.id) }, ['paymentAccepted', 'project'], []);
314
+ const sellers = yield repos.seller.search({
315
+ limit: 1,
316
+ page: 1,
317
+ id: { $eq: String((_d = params.recipient) === null || _d === void 0 ? void 0 : _d.id) }
318
+ }, ['paymentAccepted', 'project'], []);
319
+ const seller = sellers.shift();
320
+ if (seller === undefined) {
321
+ throw new factory.errors.NotFound(factory.organizationType.Corporation);
322
+ }
306
323
  // 全購入管理番号のMovieTicketをマージ
307
324
  const movieTickets = params.object.reduce((a, b) => [...a, ...(Array.isArray(b.movieTickets)) ? b.movieTickets : []], []);
308
325
  const sellerCredentials = yield (0, getCredentials_1.getCredentials)({ paymentMethodType, seller, paymentServiceId })(repos);
@@ -75,9 +75,7 @@ function validatePaymentMethod(params, paymentServiceId) {
75
75
  throw new factory.errors.ArgumentNull('object.paymentMethod.typeOf');
76
76
  }
77
77
  // プロダクトから通貨区分を取得
78
- const paymentCatdProduct = yield repos.product.findById({
79
- id: paymentServiceId
80
- });
78
+ const paymentCatdProduct = yield repos.product.findById({ id: paymentServiceId }, ['serviceOutput'], []);
81
79
  const currency = (_e = (_d = paymentCatdProduct.serviceOutput) === null || _d === void 0 ? void 0 : _d.amount) === null || _e === void 0 ? void 0 : _e.currency;
82
80
  if (typeof currency !== 'string') {
83
81
  throw new factory.errors.NotFound('product.serviceOutput.amount.currency');