@chevre/domain 20.2.0-alpha.47 → 20.2.0-alpha.48
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/lib/chevre/service/assetTransaction/reserve.js +1 -1
- package/lib/chevre/service/offer.d.ts +2 -2
- package/lib/chevre/service/offer.js +52 -43
- package/lib/chevre/service/reserve/potentialActions/onReservationCanceled.js +1 -1
- package/lib/chevre/service/reserve/potentialActions/onReservationCheckedIn.js +1 -1
- package/lib/chevre/service/reserve/potentialActions/onReservationConfirmed.js +1 -1
- package/lib/chevre/service/reserve/potentialActions/onReservationUsed.js +1 -1
- package/package.json +1 -1
|
@@ -581,7 +581,7 @@ function onReservationsCreated(params) {
|
|
|
581
581
|
// 集計タスク
|
|
582
582
|
yield OfferService.createAggregateScreeningEventIfNotExist({
|
|
583
583
|
project: params.event.project,
|
|
584
|
-
reservationFor: { id: params.event.id },
|
|
584
|
+
reservationFor: [{ id: params.event.id }],
|
|
585
585
|
force: false
|
|
586
586
|
})({ task: repos.task });
|
|
587
587
|
});
|
|
@@ -64,7 +64,7 @@ export declare function searchEventSeatOffersWithPaging(params: {
|
|
|
64
64
|
* イベント変更時処理
|
|
65
65
|
*/
|
|
66
66
|
export declare function onEventChanged(params: {
|
|
67
|
-
event: factory.event.IEvent<factory.eventType
|
|
67
|
+
event: factory.event.IEvent<factory.eventType> | factory.event.IEvent<factory.eventType>[];
|
|
68
68
|
isNew: boolean;
|
|
69
69
|
}): (repos: {
|
|
70
70
|
event: EventRepo;
|
|
@@ -77,7 +77,7 @@ export declare function createAggregateScreeningEventIfNotExist(params: {
|
|
|
77
77
|
};
|
|
78
78
|
reservationFor: {
|
|
79
79
|
id: string;
|
|
80
|
-
};
|
|
80
|
+
}[];
|
|
81
81
|
force: boolean;
|
|
82
82
|
}): (repos: {
|
|
83
83
|
task: TaskRepo;
|
|
@@ -212,63 +212,72 @@ exports.searchEventSeatOffersWithPaging = searchEventSeatOffersWithPaging;
|
|
|
212
212
|
*/
|
|
213
213
|
function onEventChanged(params) {
|
|
214
214
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
215
|
-
const
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
215
|
+
const changedEvents = (Array.isArray(params.event)) ? params.event : [params.event];
|
|
216
|
+
if (changedEvents.length > 0) {
|
|
217
|
+
// ScreeningEventであれば集計タスク
|
|
218
|
+
if (changedEvents[0].typeOf === factory.eventType.ScreeningEvent) {
|
|
219
|
+
yield createAggregateScreeningEventIfNotExist({
|
|
220
|
+
project: { id: changedEvents[0].project.id },
|
|
221
|
+
reservationFor: changedEvents.map((changedEvent) => {
|
|
222
|
+
return { id: changedEvent.id };
|
|
223
|
+
}),
|
|
224
|
+
// 新規作成の場合は強制的に集計
|
|
225
|
+
force: params.isNew
|
|
226
|
+
})(repos);
|
|
227
|
+
}
|
|
224
228
|
}
|
|
225
229
|
});
|
|
226
230
|
}
|
|
227
231
|
exports.onEventChanged = onEventChanged;
|
|
228
232
|
function createAggregateScreeningEventIfNotExist(params) {
|
|
229
233
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
234
|
+
let aggregateTasks = [];
|
|
235
|
+
const runsAt = new Date();
|
|
236
|
+
const remainingNumberOfTries = 2;
|
|
237
|
+
const project = {
|
|
238
|
+
id: params.project.id, typeOf: factory.organizationType.Project
|
|
239
|
+
};
|
|
230
240
|
if (params.force) {
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
status: factory.taskStatus.Ready,
|
|
235
|
-
runsAt: new Date(),
|
|
236
|
-
remainingNumberOfTries: 3,
|
|
237
|
-
numberOfTried: 0,
|
|
238
|
-
executionResults: [],
|
|
239
|
-
data: {
|
|
240
|
-
typeOf: factory.eventType.ScreeningEvent,
|
|
241
|
-
id: params.reservationFor.id
|
|
242
|
-
}
|
|
243
|
-
};
|
|
244
|
-
yield repos.task.save(aggregateTask);
|
|
245
|
-
}
|
|
246
|
-
else {
|
|
247
|
-
// 冗長な作成を避ける
|
|
248
|
-
const readyAggregateScreeningEventTaskDoc = yield repos.task.taskModel.findOne({
|
|
249
|
-
'project.id': { $eq: params.project.id },
|
|
250
|
-
name: { $eq: factory.taskName.AggregateScreeningEvent },
|
|
251
|
-
status: { $eq: factory.taskStatus.Ready },
|
|
252
|
-
'data.id': { $exists: true, $eq: params.reservationFor.id }
|
|
253
|
-
}, { _id: 1 })
|
|
254
|
-
.exec();
|
|
255
|
-
if (readyAggregateScreeningEventTaskDoc === null) {
|
|
256
|
-
const aggregateTask = {
|
|
257
|
-
project: { id: params.project.id, typeOf: factory.organizationType.Project },
|
|
241
|
+
aggregateTasks = params.reservationFor.map((reservationFor) => {
|
|
242
|
+
return {
|
|
243
|
+
project,
|
|
258
244
|
name: factory.taskName.AggregateScreeningEvent,
|
|
259
245
|
status: factory.taskStatus.Ready,
|
|
260
|
-
runsAt
|
|
261
|
-
remainingNumberOfTries
|
|
246
|
+
runsAt,
|
|
247
|
+
remainingNumberOfTries,
|
|
262
248
|
numberOfTried: 0,
|
|
263
249
|
executionResults: [],
|
|
264
|
-
data: {
|
|
265
|
-
typeOf: factory.eventType.ScreeningEvent,
|
|
266
|
-
id: params.reservationFor.id
|
|
267
|
-
}
|
|
250
|
+
data: { typeOf: factory.eventType.ScreeningEvent, id: reservationFor.id }
|
|
268
251
|
};
|
|
269
|
-
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
for (const reservationFor of params.reservationFor) {
|
|
256
|
+
// 冗長な作成を避ける
|
|
257
|
+
const readyAggregateScreeningEventTaskDoc = yield repos.task.taskModel.findOne({
|
|
258
|
+
'project.id': { $eq: project.id },
|
|
259
|
+
name: { $eq: factory.taskName.AggregateScreeningEvent },
|
|
260
|
+
status: { $eq: factory.taskStatus.Ready },
|
|
261
|
+
'data.id': { $exists: true, $eq: reservationFor.id }
|
|
262
|
+
}, { _id: 1 })
|
|
263
|
+
.exec();
|
|
264
|
+
if (readyAggregateScreeningEventTaskDoc === null) {
|
|
265
|
+
aggregateTasks.push({
|
|
266
|
+
project,
|
|
267
|
+
name: factory.taskName.AggregateScreeningEvent,
|
|
268
|
+
status: factory.taskStatus.Ready,
|
|
269
|
+
runsAt,
|
|
270
|
+
remainingNumberOfTries,
|
|
271
|
+
numberOfTried: 0,
|
|
272
|
+
executionResults: [],
|
|
273
|
+
data: { typeOf: factory.eventType.ScreeningEvent, id: reservationFor.id }
|
|
274
|
+
});
|
|
275
|
+
}
|
|
270
276
|
}
|
|
271
277
|
}
|
|
278
|
+
if (aggregateTasks.length > 0) {
|
|
279
|
+
yield repos.task.saveMany(aggregateTasks);
|
|
280
|
+
}
|
|
272
281
|
});
|
|
273
282
|
}
|
|
274
283
|
exports.createAggregateScreeningEventIfNotExist = createAggregateScreeningEventIfNotExist;
|
|
@@ -96,7 +96,7 @@ function onReservationCanceled(canceledReservations, useInformReservation) {
|
|
|
96
96
|
// 冗長な作成を避ける
|
|
97
97
|
yield (0, offer_1.createAggregateScreeningEventIfNotExist)({
|
|
98
98
|
project,
|
|
99
|
-
reservationFor: { id: canceledReservations[0].reservationFor.id },
|
|
99
|
+
reservationFor: [{ id: canceledReservations[0].reservationFor.id }],
|
|
100
100
|
force: false
|
|
101
101
|
})({ task: repos.task });
|
|
102
102
|
}
|
|
@@ -116,7 +116,7 @@ function onReservationCheckedIn(params) {
|
|
|
116
116
|
yield Promise.all(reservationForIds.map((reservationForId) => __awaiter(this, void 0, void 0, function* () {
|
|
117
117
|
yield (0, offer_1.createAggregateScreeningEventIfNotExist)({
|
|
118
118
|
project: { id: params.project.id },
|
|
119
|
-
reservationFor: { id: reservationForId },
|
|
119
|
+
reservationFor: [{ id: reservationForId }],
|
|
120
120
|
force: false
|
|
121
121
|
})({ task: repos.task });
|
|
122
122
|
})));
|
|
@@ -98,7 +98,7 @@ function onReservationConfirmed(confirmedReservations) {
|
|
|
98
98
|
if (Array.isArray(confirmedReservations) && confirmedReservations.length > 0) {
|
|
99
99
|
yield (0, offer_1.createAggregateScreeningEventIfNotExist)({
|
|
100
100
|
project: confirmedReservations[0].project,
|
|
101
|
-
reservationFor: { id: confirmedReservations[0].reservationFor.id },
|
|
101
|
+
reservationFor: [{ id: confirmedReservations[0].reservationFor.id }],
|
|
102
102
|
force: false
|
|
103
103
|
})({ task: repos.task });
|
|
104
104
|
const now = new Date();
|
|
@@ -130,7 +130,7 @@ function onReservationUsed(action, attendedReservation) {
|
|
|
130
130
|
// 冗長な作成を避ける
|
|
131
131
|
yield (0, offer_1.createAggregateScreeningEventIfNotExist)({
|
|
132
132
|
project: attendedReservation.project,
|
|
133
|
-
reservationFor: { id: attendedReservation.reservationFor.id },
|
|
133
|
+
reservationFor: [{ id: attendedReservation.reservationFor.id }],
|
|
134
134
|
force: false
|
|
135
135
|
})({ task: repos.task });
|
|
136
136
|
});
|
package/package.json
CHANGED