@chevre/domain 23.1.0-alpha.9 → 23.2.0-alpha.0

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 (100) hide show
  1. package/example/src/chevre/{eventOffer/adminEventOffers.ts → acceptedPaymentMethodOffer/adminAcceptedPaymentMethodOffers.ts} +12 -11
  2. package/example/src/chevre/actions/checkAcceptPayActions.ts +60 -0
  3. package/example/src/chevre/assetTransaction/checkPayTransactionsTicketToken.ts +67 -0
  4. package/example/src/chevre/event/importEventSeriesFromCOAByTitle.ts +83 -0
  5. package/example/src/chevre/event/importEventsFromCOAByTitle.ts +148 -0
  6. package/example/src/chevre/eventSeries/migrateEventSeriesUnacceptedPaymentMethod.ts +93 -0
  7. package/example/src/chevre/importEventsFromCOA.ts +5 -5
  8. package/example/src/chevre/pendingReservation/findEventSeatOffersBySection.ts +46 -0
  9. package/example/src/chevre/place/checkSectionCount.ts +27 -0
  10. package/example/src/chevre/place/findSectionsByRoom.ts +50 -0
  11. package/example/src/chevre/project/unsetProjectSettings.ts +73 -0
  12. package/example/src/chevre/reIndex.ts +0 -1
  13. package/example/src/chevre/roles/{addAdminSellerEventIfNotExists.ts → addAdminSellerEventOfferIfNotExists.ts} +1 -1
  14. package/example/src/chevre/stockHolder/findSeatsBySection.ts +59 -0
  15. package/example/src/chevre/stockHolder/searchSeats.ts +2 -2
  16. package/lib/chevre/repo/acceptedPaymentMethod.d.ts +41 -0
  17. package/lib/chevre/repo/acceptedPaymentMethod.js +180 -0
  18. package/lib/chevre/repo/authorization.d.ts +3 -2
  19. package/lib/chevre/repo/authorization.js +13 -5
  20. package/lib/chevre/repo/event.d.ts +1 -35
  21. package/lib/chevre/repo/event.js +2 -102
  22. package/lib/chevre/repo/eventOffer.js +3 -3
  23. package/lib/chevre/repo/mongoose/schemas/acceptedPaymentMethod.d.ts +10 -0
  24. package/lib/chevre/repo/mongoose/schemas/acceptedPaymentMethod.js +97 -0
  25. package/lib/chevre/repo/mongoose/schemas/eventOffer.js +9 -0
  26. package/lib/chevre/repo/note.js +4 -2
  27. package/lib/chevre/repo/pendingReservation.js +28 -71
  28. package/lib/chevre/repo/place/seat.d.ts +24 -0
  29. package/lib/chevre/repo/place/seat.js +103 -21
  30. package/lib/chevre/repo/place/section.d.ts +20 -0
  31. package/lib/chevre/repo/place/section.js +47 -0
  32. package/lib/chevre/repo/ticket.d.ts +7 -1
  33. package/lib/chevre/repo/ticket.js +14 -1
  34. package/lib/chevre/repository.d.ts +5 -0
  35. package/lib/chevre/repository.js +15 -2
  36. package/lib/chevre/service/aggregation/event/importFromCOA.js +2 -2
  37. package/lib/chevre/service/assetTransaction/pay/factory.d.ts +1 -1
  38. package/lib/chevre/service/assetTransaction/pay/factory.js +8 -3
  39. package/lib/chevre/service/assetTransaction/pay/validateAcceptedPaymentMethodIfNeeded.d.ts +16 -0
  40. package/lib/chevre/service/assetTransaction/pay/validateAcceptedPaymentMethodIfNeeded.js +94 -0
  41. package/lib/chevre/service/assetTransaction/pay.d.ts +6 -1
  42. package/lib/chevre/service/assetTransaction/pay.js +6 -1
  43. package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/fixExtendedEventOffer.d.ts +1 -2
  44. package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/fixExtendedEventOffer.js +7 -7
  45. package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/validateIssuedOfferIfExists.d.ts +6 -2
  46. package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/validateIssuedOfferIfExists.js +30 -30
  47. package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/validateMemberTierIfExists.d.ts +0 -1
  48. package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/validateMemberTierIfExists.js +7 -51
  49. package/lib/chevre/service/assetTransaction/reserve/validateStartRequest/verifyTicketTokenAsNeeded.js +6 -8
  50. package/lib/chevre/service/assetTransaction/reserve/validateStartRequest.d.ts +29 -1
  51. package/lib/chevre/service/assetTransaction/reserve/validateStartRequest.js +9 -9
  52. package/lib/chevre/service/event/factory.d.ts +22 -0
  53. package/lib/chevre/service/event/factory.js +2 -0
  54. package/lib/chevre/service/event/processUpdateMovieTheater.d.ts +24 -0
  55. package/lib/chevre/service/event/processUpdateMovieTheater.js +190 -0
  56. package/lib/chevre/service/event/saveScreeningEventSeries.d.ts +63 -0
  57. package/lib/chevre/service/event/saveScreeningEventSeries.js +277 -0
  58. package/lib/chevre/service/event/saveScreeningEvents.d.ts +46 -0
  59. package/lib/chevre/service/event/saveScreeningEvents.js +321 -0
  60. package/lib/chevre/service/event.d.ts +4 -34
  61. package/lib/chevre/service/event.js +12 -698
  62. package/lib/chevre/service/eventOld.d.ts +60 -0
  63. package/lib/chevre/service/eventOld.js +864 -0
  64. package/lib/chevre/service/offer/event/authorize/processStartReserve4chevre/requestedProgramMembershipUsed2permit.js +1 -1
  65. package/lib/chevre/service/offer/event/issueEventOfferTicket.d.ts +48 -0
  66. package/lib/chevre/service/offer/event/issueEventOfferTicket.js +123 -0
  67. package/lib/chevre/service/offer/event.d.ts +2 -1
  68. package/lib/chevre/service/offer/event.js +3 -1
  69. package/lib/chevre/service/offer.d.ts +31 -1
  70. package/lib/chevre/service/offer.js +104 -34
  71. package/lib/chevre/service/payment/any/authorize/fixTransactionNumber.d.ts +9 -0
  72. package/lib/chevre/service/payment/any/authorize/fixTransactionNumber.js +22 -11
  73. package/lib/chevre/service/payment/any/authorize/handlePrePublishedPaymentMethodIdOnAuthorizing.d.ts +19 -2
  74. package/lib/chevre/service/payment/any/authorize/handlePrePublishedPaymentMethodIdOnAuthorizing.js +87 -9
  75. package/lib/chevre/service/payment/any/factory.d.ts +20 -3
  76. package/lib/chevre/service/payment/any/factory.js +26 -6
  77. package/lib/chevre/service/payment/any/publishPaymentUrl/fixTransactionNumberOnPublishPaymentUrl.d.ts +4 -0
  78. package/lib/chevre/service/payment/any/publishPaymentUrl/fixTransactionNumberOnPublishPaymentUrl.js +15 -11
  79. package/lib/chevre/service/payment/any/verifyTicketTokenAsNeeded.d.ts +6 -3
  80. package/lib/chevre/service/payment/any/verifyTicketTokenAsNeeded.js +8 -22
  81. package/lib/chevre/service/payment/any.d.ts +5 -1
  82. package/lib/chevre/service/payment/any.js +22 -13
  83. package/lib/chevre/service/payment/factory.js +0 -5
  84. package/lib/chevre/service/payment/movieTicket/authorize.js +0 -5
  85. package/lib/chevre/service/task/authorizePayment.js +2 -0
  86. package/lib/chevre/service/task/publishPaymentUrl.js +4 -0
  87. package/lib/chevre/service/transaction/placeOrder/confirm/publishCode.js +1 -1
  88. package/lib/chevre/service/transaction/placeOrder/confirm/validation/factory.d.ts +9 -0
  89. package/lib/chevre/service/transaction/placeOrder/confirm/validation/factory.js +2 -0
  90. package/lib/chevre/service/transaction/placeOrder/confirm/validation/validateInvoiceReferencesOrder.d.ts +8 -0
  91. package/lib/chevre/service/transaction/placeOrder/confirm/validation/validateInvoiceReferencesOrder.js +45 -0
  92. package/lib/chevre/service/transaction/placeOrder/confirm/validation/validatePrice.d.ts +3 -0
  93. package/lib/chevre/service/transaction/placeOrder/confirm/validation/validatePrice.js +38 -0
  94. package/lib/chevre/service/transaction/placeOrder/confirm/validation.d.ts +2 -8
  95. package/lib/chevre/service/transaction/placeOrder/confirm/validation.js +5 -35
  96. package/package.json +3 -3
  97. package/example/src/chevre/checkReplaceActions.ts +0 -65
  98. package/example/src/chevre/upsertManyEventsByAdditionalProperty.ts +0 -193
  99. package/lib/chevre/service/code.d.ts +0 -8
  100. package/lib/chevre/service/code.js +0 -7
@@ -0,0 +1,46 @@
1
+ import type * as COA from '@motionpicture/coa-service';
2
+ import type { CategoryCodeRepo } from '../../repo/categoryCode';
3
+ import type { CreativeWorkRepo } from '../../repo/creativeWork';
4
+ import type { EventRepo } from '../../repo/event';
5
+ import type { EventSeriesRepo } from '../../repo/eventSeries';
6
+ import * as factory from '../../factory';
7
+ type IMovieTheater = Pick<factory.place.movieTheater.IPlace, 'id' | 'typeOf' | 'branchCode' | 'name' | 'kanaName'>;
8
+ declare function saveScreeningEvents(params: {
9
+ movieTheater: IMovieTheater;
10
+ screeningRooms: Pick<factory.place.screeningRoom.IPlace, 'typeOf' | 'branchCode' | 'name' | 'maximumAttendeeCapacity'>[];
11
+ screeningEventSerieses?: factory.eventSeries.IEvent[];
12
+ project: {
13
+ id: string;
14
+ typeOf: factory.organizationType.Project;
15
+ };
16
+ targetImportFrom: Date;
17
+ targetImportThrough: Date;
18
+ seller: {
19
+ id: string;
20
+ };
21
+ instrument: factory.action.update.replace.IInstrumentAsCOAAPI;
22
+ }, options: {
23
+ filterSchedulesFromCOA?: {
24
+ titleCode: string;
25
+ titleBranchNum: string;
26
+ roomCode: string;
27
+ };
28
+ }): (repos: {
29
+ categoryCode: CategoryCodeRepo;
30
+ creativeWork: CreativeWorkRepo;
31
+ event: EventRepo;
32
+ eventSeries: EventSeriesRepo;
33
+ masterService: COA.service.Master;
34
+ }) => Promise<factory.event.screeningEvent.IEvent[]>;
35
+ /**
36
+ * COA情報からイベントIDを作成する
37
+ */
38
+ declare function createScreeningEventIdFromCOA(params: {
39
+ theaterCode: string;
40
+ titleCode: string;
41
+ titleBranchNum: string;
42
+ dateJouei: string;
43
+ screenCode: string;
44
+ timeBegin: string;
45
+ }): string;
46
+ export { createScreeningEventIdFromCOA, saveScreeningEvents };
@@ -0,0 +1,321 @@
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.createScreeningEventIdFromCOA = createScreeningEventIdFromCOA;
13
+ exports.saveScreeningEvents = saveScreeningEvents;
14
+ const createDebug = require("debug");
15
+ // import { google } from 'googleapis';
16
+ const moment = require("moment-timezone");
17
+ const factory = require("../../factory");
18
+ const saveScreeningEventSeries_1 = require("./saveScreeningEventSeries");
19
+ const debug = createDebug('chevre-domain:service:event');
20
+ function saveScreeningEvents(params, options) {
21
+ return (repos) => __awaiter(this, void 0, void 0, function* () {
22
+ const screeningEvents = yield createScreeningEvents(params, options)(repos);
23
+ // 永続化
24
+ debug(`storing ${screeningEvents.length} screeningEvents...`);
25
+ const saveParams = [];
26
+ for (const screeningEvent of screeningEvents) {
27
+ try {
28
+ const attributes = screeningEvent;
29
+ saveParams.push({
30
+ id: screeningEvent.id,
31
+ attributes: attributes,
32
+ upsert: true
33
+ });
34
+ }
35
+ catch (error) {
36
+ // no op
37
+ }
38
+ }
39
+ yield repos.event.saveManyEvents(saveParams);
40
+ debug(`${screeningEvents.length} screeningEvents stored.`);
41
+ return screeningEvents;
42
+ });
43
+ }
44
+ function createScreeningEvents(params, options) {
45
+ // tslint:disable-next-line:max-func-body-length
46
+ return (repos) => __awaiter(this, void 0, void 0, function* () {
47
+ const { filterSchedulesFromCOA } = options;
48
+ // let filteredByTitle: boolean = false;
49
+ const project = params.project;
50
+ if (typeof params.instrument.begin !== 'string') {
51
+ throw new factory.errors.ArgumentNull('instrument.begin');
52
+ }
53
+ if (typeof params.instrument.end !== 'string') {
54
+ throw new factory.errors.ArgumentNull('instrument.end');
55
+ }
56
+ // COAからイベント取得;
57
+ let schedulesFromCOA = yield repos.masterService.schedule({
58
+ theaterCode: params.instrument.theaterCode,
59
+ begin: params.instrument.begin, // COAは日本時間で判断
60
+ end: params.instrument.end // COAは日本時間で判断
61
+ });
62
+ if (typeof (filterSchedulesFromCOA === null || filterSchedulesFromCOA === void 0 ? void 0 : filterSchedulesFromCOA.titleBranchNum) === 'string'
63
+ && typeof (filterSchedulesFromCOA === null || filterSchedulesFromCOA === void 0 ? void 0 : filterSchedulesFromCOA.titleBranchNum) === 'string'
64
+ && typeof (filterSchedulesFromCOA === null || filterSchedulesFromCOA === void 0 ? void 0 : filterSchedulesFromCOA.roomCode) === 'string') {
65
+ schedulesFromCOA = schedulesFromCOA.filter((scheduleFromCOA) => {
66
+ return scheduleFromCOA.titleBranchNum === filterSchedulesFromCOA.titleBranchNum
67
+ && scheduleFromCOA.titleCode === filterSchedulesFromCOA.titleCode
68
+ && scheduleFromCOA.screenCode === filterSchedulesFromCOA.roomCode;
69
+ });
70
+ // filteredByTitle = true;
71
+ debug('schedulesFromCOAd filtered by title.', JSON.stringify(schedulesFromCOA));
72
+ }
73
+ debug(schedulesFromCOA.length, 'schedulesFromCOA processing...');
74
+ // COAから区分マスター抽出
75
+ const serviceKubuns = yield repos.masterService.kubunName({
76
+ theaterCode: params.instrument.theaterCode,
77
+ kubunClass: '009'
78
+ });
79
+ const acousticKubuns = yield repos.masterService.kubunName({
80
+ theaterCode: params.instrument.theaterCode,
81
+ kubunClass: '046'
82
+ });
83
+ let screeningEventSerieses;
84
+ if (Array.isArray(params.screeningEventSerieses)) {
85
+ screeningEventSerieses = params.screeningEventSerieses;
86
+ }
87
+ else {
88
+ // 指定がなければDBから検索する(2024-09-09~)
89
+ const importingEventSeriesIds = [...new Set(schedulesFromCOA.map((scheduleFromCOA) => {
90
+ return (0, saveScreeningEventSeries_1.createScreeningEventSeriesId)({
91
+ theaterCode: params.instrument.theaterCode,
92
+ titleCode: scheduleFromCOA.titleCode,
93
+ titleBranchNum: scheduleFromCOA.titleBranchNum
94
+ });
95
+ }))];
96
+ debug('searching eventSeries... importingEventSeriesIds:', importingEventSeriesIds);
97
+ if (importingEventSeriesIds.length > 0) {
98
+ screeningEventSerieses = yield repos.eventSeries.projectEventSeriesFields({
99
+ id: { $in: importingEventSeriesIds },
100
+ project: { id: { $eq: params.project.id } }
101
+ }, [
102
+ 'project', 'typeOf', 'eventStatus', 'identifier',
103
+ 'name', 'kanaName', 'alternativeHeadline', 'location',
104
+ 'organizer', 'videoFormat', 'soundFormat', 'workPerformed',
105
+ 'duration', 'endDate', 'startDate', 'coaInfo',
106
+ 'offers', 'additionalProperty'
107
+ ]);
108
+ debug(screeningEventSerieses.length, 'screeningEventSerieses for importing events found.');
109
+ // 万が一未インポートの施設コンテンツがあれば強制的にインポート(2024-09-09~)
110
+ if (screeningEventSerieses.length < importingEventSeriesIds.length) {
111
+ const saveScreeningEventSeriesResult = yield (0, saveScreeningEventSeries_1.saveScreeningEventSeries)({
112
+ locationBranchCode: params.instrument.theaterCode,
113
+ movieTheater: params.movieTheater,
114
+ project: params.project,
115
+ saveScreeningEventSeries: true,
116
+ saveScreeningEventSeriesPeriodInMonth: 0, // importingIds指定するので0でok
117
+ seller: { id: params.seller.id },
118
+ importingIds: importingEventSeriesIds
119
+ }, {})(repos);
120
+ screeningEventSerieses = saveScreeningEventSeriesResult.screeningEventSerieses;
121
+ }
122
+ }
123
+ else {
124
+ screeningEventSerieses = [];
125
+ }
126
+ }
127
+ // イベントごとに永続化トライ
128
+ const screeningEvents = [];
129
+ schedulesFromCOA.forEach((scheduleFromCOA) => {
130
+ const screeningEventSeriesId = (0, saveScreeningEventSeries_1.createScreeningEventSeriesId)({
131
+ theaterCode: params.instrument.theaterCode,
132
+ titleCode: scheduleFromCOA.titleCode,
133
+ titleBranchNum: scheduleFromCOA.titleBranchNum
134
+ });
135
+ // ルーム存在チェック
136
+ const screenRoom = params.screeningRooms.find((place) => place.branchCode === scheduleFromCOA.screenCode);
137
+ // const screenRoom = <factory.place.screeningRoom.IPlace | undefined>movieTheater.containsPlace.find(
138
+ // (place) => place.branchCode === scheduleFromCOA.screenCode
139
+ // );
140
+ if (screenRoom === undefined) {
141
+ // tslint:disable-next-line:no-console
142
+ console.error('screenRoom not found.', scheduleFromCOA.screenCode);
143
+ return;
144
+ }
145
+ // イベントシリーズ取得
146
+ const screeningEventSeries = screeningEventSerieses.find((e) => e.id === screeningEventSeriesId);
147
+ if (screeningEventSeries === undefined) {
148
+ // tslint:disable-next-line:no-console
149
+ console.error('screeningEventSeries not found.', screeningEventSeriesId);
150
+ return;
151
+ }
152
+ const screeningEvent = createScreeningEventFromCOA({
153
+ project: project,
154
+ performanceFromCOA: scheduleFromCOA,
155
+ screenRoom: screenRoom,
156
+ superEvent: screeningEventSeries,
157
+ serviceKubuns: serviceKubuns,
158
+ acousticKubuns: acousticKubuns,
159
+ seller: params.seller
160
+ });
161
+ // インポート期間で確実に絞る(2024-04-25~)
162
+ const isStartDateInTarget = moment(screeningEvent.startDate)
163
+ .isBetween(params.targetImportFrom, params.targetImportThrough, 'second', '[]');
164
+ if (isStartDateInTarget) {
165
+ screeningEvents.push(screeningEvent);
166
+ }
167
+ });
168
+ debug('createScreeningEvents processed', params.targetImportFrom, params.targetImportThrough, params.instrument.begin, params.instrument.end, 'schedulesFromCOA.length:', schedulesFromCOA.length, 'screeningEvents.length:', screeningEvents.length);
169
+ return screeningEvents;
170
+ });
171
+ }
172
+ function minimizeSuperEvent(params) {
173
+ const { workPerformed, videoFormat, startDate, soundFormat, name, location, kanaName, identifier, endDate, duration, coaInfo, alternativeHeadline,
174
+ // additionalProperty,
175
+ typeOf, id
176
+ // project,
177
+ // organizer,
178
+ // offers,
179
+ // eventStatus
180
+ } = params.superEvent;
181
+ return {
182
+ workPerformed, videoFormat, startDate, soundFormat,
183
+ name, location, kanaName, identifier,
184
+ endDate, duration, coaInfo, alternativeHeadline,
185
+ // additionalProperty,
186
+ typeOf, id
187
+ };
188
+ }
189
+ /**
190
+ * コアデータからイベントを作成する
191
+ */
192
+ function createScreeningEventFromCOA(params) {
193
+ const id = createScreeningEventIdFromCOA({
194
+ theaterCode: params.superEvent.location.branchCode,
195
+ titleCode: params.superEvent.workPerformed.identifier,
196
+ titleBranchNum: params.performanceFromCOA.titleBranchNum,
197
+ dateJouei: params.performanceFromCOA.dateJouei,
198
+ screenCode: params.performanceFromCOA.screenCode,
199
+ timeBegin: params.performanceFromCOA.timeBegin
200
+ });
201
+ // COA情報を整形して開始日時と終了日時を作成('2500'のような日またぎの時刻入力に対応)
202
+ const DAY = 2400;
203
+ let timeBegin = params.performanceFromCOA.timeBegin;
204
+ let timeEnd = params.performanceFromCOA.timeEnd;
205
+ let addDay4startDate = 0;
206
+ let addDay4endDate = 0;
207
+ try {
208
+ addDay4startDate += Math.floor(Number(timeBegin) / DAY);
209
+ // tslint:disable-next-line:no-magic-numbers
210
+ timeBegin = `0000${Number(timeBegin) % DAY}`.slice(-4);
211
+ addDay4endDate += Math.floor(Number(timeEnd) / DAY);
212
+ // tslint:disable-next-line:no-magic-numbers
213
+ timeEnd = `0000${Number(timeEnd) % DAY}`.slice(-4);
214
+ }
215
+ catch (error) {
216
+ // no op
217
+ }
218
+ let endDate = moment(`${params.performanceFromCOA.dateJouei} ${timeEnd} +09:00`, 'YYYYMMDD HHmm Z')
219
+ .add(addDay4endDate, 'days')
220
+ .toDate();
221
+ const startDate = moment(`${params.performanceFromCOA.dateJouei} ${timeBegin} +09:00`, 'YYYYMMDD HHmm Z')
222
+ .add(addDay4startDate, 'days')
223
+ .toDate();
224
+ // startDateの方が大きければ日またぎイベントなので調整
225
+ // tslint:disable-next-line:no-single-line-block-comment
226
+ /* istanbul ignore if */
227
+ if (moment(startDate)
228
+ .isAfter(moment(endDate))) {
229
+ endDate = moment(endDate)
230
+ .add(1, 'day')
231
+ .toDate();
232
+ }
233
+ const offers = {
234
+ typeOf: factory.offerType.Offer,
235
+ offeredThrough: {
236
+ typeOf: 'WebAPI',
237
+ identifier: factory.service.webAPI.Identifier.COA
238
+ },
239
+ eligibleQuantity: {
240
+ typeOf: 'QuantitativeValue',
241
+ unitCode: factory.unitCode.C62,
242
+ maxValue: Number(params.performanceFromCOA.availableNum)
243
+ },
244
+ itemOffered: {
245
+ serviceOutput: {
246
+ reservedTicket: {
247
+ typeOf: 'Ticket',
248
+ ticketedSeat: { typeOf: factory.placeType.Seat } // 必ず指定席
249
+ }
250
+ }
251
+ },
252
+ seller: {
253
+ typeOf: factory.organizationType.Corporation,
254
+ id: params.seller.id,
255
+ // name: params.sellerFromDB.name,
256
+ makesOffer: []
257
+ }
258
+ };
259
+ const { additionalProperty, coaInfo } = createScreeningEventAdditionalPropertyFromCOA(params);
260
+ const superEvent = minimizeSuperEvent({ superEvent: params.superEvent }); // optimize superEvent(2024-09-10~)
261
+ return {
262
+ project: { typeOf: params.project.typeOf, id: params.project.id },
263
+ typeOf: factory.eventType.ScreeningEvent,
264
+ id: id,
265
+ identifier: id,
266
+ name: params.superEvent.name,
267
+ eventStatus: factory.eventStatusType.EventScheduled,
268
+ location: {
269
+ typeOf: params.screenRoom.typeOf,
270
+ branchCode: params.screenRoom.branchCode,
271
+ name: params.screenRoom.name
272
+ },
273
+ endDate: endDate,
274
+ startDate: startDate,
275
+ superEvent,
276
+ coaInfo,
277
+ offers: offers,
278
+ checkInCount: 0,
279
+ attendeeCount: 0,
280
+ maximumAttendeeCapacity: params.screenRoom.maximumAttendeeCapacity,
281
+ remainingAttendeeCapacity: params.screenRoom.maximumAttendeeCapacity,
282
+ additionalProperty,
283
+ organizer: { id: params.seller.id }
284
+ };
285
+ }
286
+ function createScreeningEventAdditionalPropertyFromCOA(params) {
287
+ const coaInfo = {
288
+ theaterCode: params.superEvent.location.branchCode,
289
+ dateJouei: params.performanceFromCOA.dateJouei,
290
+ titleCode: params.performanceFromCOA.titleCode,
291
+ titleBranchNum: params.performanceFromCOA.titleBranchNum,
292
+ timeBegin: params.performanceFromCOA.timeBegin,
293
+ timeEnd: params.performanceFromCOA.timeEnd,
294
+ screenCode: params.performanceFromCOA.screenCode,
295
+ trailerTime: params.performanceFromCOA.trailerTime,
296
+ kbnService: params.serviceKubuns.filter((kubun) => kubun.kubunCode === params.performanceFromCOA.kbnService)[0],
297
+ kbnAcoustic: params.acousticKubuns.filter((kubun) => kubun.kubunCode === params.performanceFromCOA.kbnAcoustic)[0],
298
+ nameServiceDay: params.performanceFromCOA.nameServiceDay,
299
+ availableNum: params.performanceFromCOA.availableNum,
300
+ rsvStartDate: params.performanceFromCOA.rsvStartDate,
301
+ rsvEndDate: params.performanceFromCOA.rsvEndDate,
302
+ flgEarlyBooking: params.performanceFromCOA.flgEarlyBooking
303
+ };
304
+ return {
305
+ coaInfo,
306
+ additionalProperty: [
307
+ { name: 'coaInfo', value: JSON.stringify(coaInfo) }
308
+ ]
309
+ };
310
+ }
311
+ /**
312
+ * COA情報からイベントIDを作成する
313
+ */
314
+ function createScreeningEventIdFromCOA(params) {
315
+ return [
316
+ (0, saveScreeningEventSeries_1.createScreeningEventSeriesId)(params),
317
+ params.dateJouei,
318
+ params.screenCode,
319
+ params.timeBegin
320
+ ].join('');
321
+ }
@@ -10,28 +10,9 @@ import type { EventSeriesRepo } from '../repo/eventSeries';
10
10
  import type { MovieTheaterRepo } from '../repo/place/movieTheater';
11
11
  import type { ScreeningRoomRepo } from '../repo/place/screeningRoom';
12
12
  import type { SellerRepo } from '../repo/seller';
13
- import * as factory from '../factory';
14
- interface IImportFromCOAParams {
15
- project: {
16
- id: string;
17
- typeOf: factory.organizationType.Project;
18
- };
19
- /**
20
- * 施設コード
21
- */
22
- locationBranchCode: string;
23
- importFrom: Date;
24
- importThrough: Date;
25
- /**
26
- * 施設を保管するかどうか
27
- */
28
- saveMovieTheater: boolean;
29
- /**
30
- * 施設コンテンツを保管するかどうか
31
- */
32
- saveScreeningEventSeries: boolean;
33
- saveScreeningEventSeriesPeriodInMonth: number;
34
- }
13
+ import { IImportFromCOAParams } from './event/factory';
14
+ import { saveScreeningEvents } from './event/saveScreeningEvents';
15
+ import { saveScreeningEventSeries } from './event/saveScreeningEventSeries';
35
16
  /**
36
17
  * イベントをインポートする
37
18
  */
@@ -46,15 +27,4 @@ declare function importFromCOA(params: IImportFromCOAParams): (repos: {
46
27
  seller: SellerRepo;
47
28
  masterService: COA.service.Master;
48
29
  }) => Promise<void>;
49
- /**
50
- * COA情報からイベントIDを作成する
51
- */
52
- declare function createScreeningEventIdFromCOA(params: {
53
- theaterCode: string;
54
- titleCode: string;
55
- titleBranchNum: string;
56
- dateJouei: string;
57
- screenCode: string;
58
- timeBegin: string;
59
- }): string;
60
- export { importFromCOA, createScreeningEventIdFromCOA };
30
+ export { importFromCOA, saveScreeningEventSeries, saveScreeningEvents };