@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.
- package/example/src/chevre/cleanActions.ts +23 -0
- package/example/src/chevre/cleanEventsByMovieTheater.ts +32 -0
- package/example/src/chevre/createDeleteTransactionTasksOfDeletedPeople.ts +126 -0
- package/example/src/chevre/createManyEventsIfNotExist.ts +6 -0
- package/example/src/chevre/iam/searchMemberOfIdsByMemberId.ts +31 -0
- package/example/src/chevre/iam/searchProjectIdsByMemberId.ts +32 -0
- package/example/src/chevre/migrateEventOrganizer.ts +125 -0
- package/example/src/chevre/migrateIAMMemberMemberOf.ts +59 -0
- package/example/src/chevre/migrateReservationProvider.ts +119 -0
- package/example/src/chevre/migrateScreeningRoomOrganizer.ts +91 -0
- package/example/src/chevre/processReserve.ts +0 -1
- package/example/src/chevre/searchEvents.ts +1 -9
- package/example/src/chevre/searchPermissions.ts +7 -15
- package/lib/chevre/factory/event.d.ts +1 -1
- package/lib/chevre/repo/action.d.ts +6 -0
- package/lib/chevre/repo/action.js +13 -0
- package/lib/chevre/repo/assetTransaction.d.ts +4 -1
- package/lib/chevre/repo/assetTransaction.js +6 -12
- package/lib/chevre/repo/event.d.ts +25 -4
- package/lib/chevre/repo/event.js +122 -60
- package/lib/chevre/repo/member.d.ts +76 -1
- package/lib/chevre/repo/member.js +81 -20
- package/lib/chevre/repo/mongoose/schemas/event.d.ts +7 -4
- package/lib/chevre/repo/mongoose/schemas/event.js +15 -2
- package/lib/chevre/repo/mongoose/schemas/member.d.ts +7 -7
- package/lib/chevre/repo/mongoose/schemas/member.js +12 -6
- package/lib/chevre/repo/mongoose/schemas/place.d.ts +6 -6
- package/lib/chevre/repo/mongoose/schemas/place.js +9 -2
- package/lib/chevre/repo/mongoose/schemas/product.d.ts +3 -3
- package/lib/chevre/repo/mongoose/schemas/reservation.d.ts +6 -3
- package/lib/chevre/repo/mongoose/schemas/reservation.js +10 -4
- package/lib/chevre/repo/order.d.ts +21 -0
- package/lib/chevre/repo/order.js +54 -62
- package/lib/chevre/repo/place.d.ts +57 -16
- package/lib/chevre/repo/place.js +112 -167
- package/lib/chevre/repo/product.d.ts +2 -4
- package/lib/chevre/repo/product.js +52 -7
- package/lib/chevre/repo/reservation.d.ts +33 -21
- package/lib/chevre/repo/reservation.js +97 -79
- package/lib/chevre/repo/seller.d.ts +18 -5
- package/lib/chevre/repo/seller.js +53 -46
- package/lib/chevre/repo/task.d.ts +1 -1
- package/lib/chevre/service/aggregation/event/aggregateScreeningEvent.d.ts +2 -2
- package/lib/chevre/service/aggregation/event/aggregateScreeningEvent.js +3 -2
- package/lib/chevre/service/aggregation/event/aggregateUseActionsOnEvent.js +1 -1
- package/lib/chevre/service/assetTransaction/pay/account/validation.js +9 -1
- package/lib/chevre/service/assetTransaction/pay.js +9 -1
- package/lib/chevre/service/assetTransaction/registerService.js +2 -2
- package/lib/chevre/service/assetTransaction/reserve/factory.d.ts +10 -4
- package/lib/chevre/service/assetTransaction/reserve/factory.js +21 -40
- package/lib/chevre/service/assetTransaction/reserve.d.ts +0 -1
- package/lib/chevre/service/assetTransaction/reserve.js +7 -22
- package/lib/chevre/service/event/createEvent.d.ts +11 -0
- package/lib/chevre/service/event/createEvent.js +112 -0
- package/lib/chevre/service/event.d.ts +2 -0
- package/lib/chevre/service/event.js +26 -26
- package/lib/chevre/service/iam.d.ts +5 -0
- package/lib/chevre/service/iam.js +7 -19
- package/lib/chevre/service/moneyTransfer.js +1 -1
- package/lib/chevre/service/offer/event/authorize.d.ts +0 -1
- package/lib/chevre/service/offer/event/authorize.js +6 -2
- package/lib/chevre/service/offer/event/searchEventTicketOffers.js +16 -2
- package/lib/chevre/service/offer/eventServiceByCOA/factory.d.ts +1 -1
- package/lib/chevre/service/offer/product/searchProductOffers.js +1 -1
- package/lib/chevre/service/order/returnOrder.js +8 -1
- package/lib/chevre/service/order/sendOrder.js +8 -1
- package/lib/chevre/service/payment/creditCard.js +9 -1
- package/lib/chevre/service/payment/movieTicket/factory.d.ts +2 -1
- package/lib/chevre/service/payment/movieTicket/validation.js +9 -1
- package/lib/chevre/service/payment/movieTicket.js +19 -2
- package/lib/chevre/service/payment/paymentCard.js +1 -3
- package/lib/chevre/service/reserve/cancelReservation.js +15 -28
- package/lib/chevre/service/reserve/confirmReservation.js +14 -30
- package/lib/chevre/service/reserve/verifyToken4reservation.d.ts +3 -0
- package/lib/chevre/service/reserve/verifyToken4reservation.js +3 -1
- package/lib/chevre/service/task/{syncScreeningRooms.d.ts → createEvent.d.ts} +1 -1
- package/lib/chevre/service/task/{syncScreeningRooms.js → createEvent.js} +11 -3
- package/lib/chevre/service/task/onAuthorizationCreated.js +1 -0
- package/lib/chevre/service/task/returnPayTransaction.js +1 -0
- package/lib/chevre/service/transaction/moneyTransfer.js +9 -1
- package/lib/chevre/service/transaction/orderProgramMembership/findCreditCard.js +1 -1
- package/lib/chevre/service/transaction/placeOrderInProgress.js +9 -6
- package/lib/chevre/service/transaction/returnOrder.js +9 -3
- package/package.json +3 -3
- package/example/src/chevre/findByOrderNumberAndReservationId.ts +0 -20
- package/example/src/chevre/findScreeningRoomsByBranchCode.ts +0 -27
- package/example/src/chevre/migrateEventOffersItemOfferedAvailableChannel.ts +0 -90
- package/example/src/chevre/migrateEventOffersItemOfferedTypeOf.ts +0 -75
- package/example/src/chevre/migrateSSKTEventCOAEndpoint.ts +0 -64
- package/example/src/chevre/migrateScreeningEventSeriesVersion.ts +0 -79
- package/example/src/chevre/searchScreeningRooms.ts +0 -33
- package/example/src/chevre/syncScreeningRooms.ts +0 -21
- 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({
|
|
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
|
-
//
|
|
583
|
-
|
|
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: {
|
|
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;
|
|
@@ -67,7 +67,8 @@ function authorize(params) {
|
|
|
67
67
|
unitPriceOffers,
|
|
68
68
|
validateEvent: params.validateEvent === true,
|
|
69
69
|
validateEventOfferPeriod: params.validateEventOfferPeriod === true,
|
|
70
|
-
|
|
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,
|
|
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
|
|
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:
|
|
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({
|
|
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({
|
|
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
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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');
|