@chevre/domain 20.2.0-alpha.36 → 20.2.0-alpha.38

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.
@@ -67,7 +67,10 @@ export declare class MongoRepository {
67
67
  /**
68
68
  * 複数イベントを作成する
69
69
  */
70
- createMany<T extends factory.eventType>(params: factory.event.IAttributes<T>[]): Promise<factory.event.IEvent<T>[]>;
70
+ createMany<T extends factory.eventType>(params: {
71
+ attributes: factory.event.IAttributes<T>[];
72
+ expectsNoContent: boolean;
73
+ }): Promise<factory.event.IEvent<T>[] | void>;
71
74
  /**
72
75
  * 特定の追加特性をキーにして、なければ作成する(複数対応)
73
76
  */
@@ -448,9 +448,12 @@ class MongoRepository {
448
448
  */
449
449
  createMany(params) {
450
450
  return __awaiter(this, void 0, void 0, function* () {
451
- const docs = yield this.eventModel.insertMany(params.map((p) => {
451
+ const docs = yield this.eventModel.insertMany(params.attributes.map((p) => {
452
452
  return Object.assign({ _id: uniqid() }, p);
453
453
  }));
454
+ if (params.expectsNoContent) {
455
+ return;
456
+ }
454
457
  return docs.map((doc) => doc.toObject());
455
458
  });
456
459
  }
@@ -580,7 +580,8 @@ function onReservationsCreated(params) {
580
580
  // 集計タスク
581
581
  yield OfferService.createAggregateScreeningEventIfNotExist({
582
582
  project: params.event.project,
583
- reservationFor: { id: params.event.id }
583
+ reservationFor: { id: params.event.id },
584
+ force: false
584
585
  })({ task: repos.task });
585
586
  });
586
587
  }
@@ -769,7 +769,7 @@ function updateEvent4ttts(params) {
769
769
  }
770
770
  // アクション完了
771
771
  yield repos.action.complete({ typeOf: action.typeOf, id: action.id, result: {} });
772
- yield (0, offer_1.onEventChanged)(event)({
772
+ yield (0, offer_1.onEventChanged)({ event, isNew: false })({
773
773
  event: repos.event,
774
774
  project: repos.project,
775
775
  task: repos.task
@@ -63,7 +63,10 @@ export declare function searchEventSeatOffersWithPaging(params: {
63
63
  /**
64
64
  * イベント変更時処理
65
65
  */
66
- export declare function onEventChanged(params: factory.event.IEvent<factory.eventType>): (repos: {
66
+ export declare function onEventChanged(params: {
67
+ event: factory.event.IEvent<factory.eventType>;
68
+ isNew: boolean;
69
+ }): (repos: {
67
70
  event: EventRepo;
68
71
  project: ProjectRepo;
69
72
  task: TaskRepo;
@@ -75,6 +78,7 @@ export declare function createAggregateScreeningEventIfNotExist(params: {
75
78
  reservationFor: {
76
79
  id: string;
77
80
  };
81
+ force: boolean;
78
82
  }): (repos: {
79
83
  task: TaskRepo;
80
84
  }) => Promise<void>;
@@ -212,43 +212,22 @@ exports.searchEventSeatOffersWithPaging = searchEventSeatOffersWithPaging;
212
212
  */
213
213
  function onEventChanged(params) {
214
214
  return (repos) => __awaiter(this, void 0, void 0, function* () {
215
- const changedEvent = params;
215
+ const changedEvent = params.event;
216
216
  // ScreeningEventであれば集計タスク
217
217
  if (changedEvent.typeOf === factory.eventType.ScreeningEvent) {
218
218
  yield createAggregateScreeningEventIfNotExist({
219
219
  project: changedEvent.project,
220
- reservationFor: { id: changedEvent.id }
220
+ reservationFor: { id: changedEvent.id },
221
+ // 新規作成の場合は強制的に集計
222
+ force: params.isNew
221
223
  })(repos);
222
- // const aggregateTask: factory.task.aggregateScreeningEvent.IAttributes = {
223
- // project: event.project,
224
- // name: factory.taskName.AggregateScreeningEvent,
225
- // status: factory.taskStatus.Ready,
226
- // runsAt: new Date(),
227
- // remainingNumberOfTries: 3,
228
- // numberOfTried: 0,
229
- // executionResults: [],
230
- // data: { id: event.id, typeOf: event.typeOf }
231
- // };
232
- // await repos.task.save(aggregateTask);
233
- }
234
- else {
235
- // イベント通知タスク
236
- // const project = await repos.project.findById({ id: event.project.id });
237
224
  }
238
225
  });
239
226
  }
240
227
  exports.onEventChanged = onEventChanged;
241
228
  function createAggregateScreeningEventIfNotExist(params) {
242
229
  return (repos) => __awaiter(this, void 0, void 0, function* () {
243
- // 冗長な作成を避ける
244
- const readyAggregateScreeningEventTaskDoc = yield repos.task.taskModel.findOne({
245
- 'project.id': { $eq: params.project.id },
246
- name: { $eq: factory.taskName.AggregateScreeningEvent },
247
- status: { $eq: factory.taskStatus.Ready },
248
- 'data.id': { $exists: true, $eq: params.reservationFor.id }
249
- }, { _id: 1 })
250
- .exec();
251
- if (readyAggregateScreeningEventTaskDoc === null) {
230
+ if (params.force) {
252
231
  const aggregateTask = {
253
232
  project: { id: params.project.id, typeOf: factory.organizationType.Project },
254
233
  name: factory.taskName.AggregateScreeningEvent,
@@ -264,6 +243,32 @@ function createAggregateScreeningEventIfNotExist(params) {
264
243
  };
265
244
  yield repos.task.save(aggregateTask);
266
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 },
258
+ name: factory.taskName.AggregateScreeningEvent,
259
+ status: factory.taskStatus.Ready,
260
+ runsAt: new Date(),
261
+ remainingNumberOfTries: 3,
262
+ numberOfTried: 0,
263
+ executionResults: [],
264
+ data: {
265
+ typeOf: factory.eventType.ScreeningEvent,
266
+ id: params.reservationFor.id
267
+ }
268
+ };
269
+ yield repos.task.save(aggregateTask);
270
+ }
271
+ }
267
272
  });
268
273
  }
269
274
  exports.createAggregateScreeningEventIfNotExist = createAggregateScreeningEventIfNotExist;
@@ -96,7 +96,8 @@ 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
+ force: false
100
101
  })({ task: repos.task });
101
102
  }
102
103
  });
@@ -116,7 +116,8 @@ 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
+ force: false
120
121
  })({ task: repos.task });
121
122
  })));
122
123
  }
@@ -98,7 +98,8 @@ 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
+ force: false
102
103
  })({ task: repos.task });
103
104
  const now = new Date();
104
105
  const taskAttributes = [];
@@ -134,7 +134,8 @@ function onReservationUsed(action, attendedReservation) {
134
134
  // 冗長な作成を避ける
135
135
  yield (0, offer_1.createAggregateScreeningEventIfNotExist)({
136
136
  project: attendedReservation.project,
137
- reservationFor: { id: attendedReservation.reservationFor.id }
137
+ reservationFor: { id: attendedReservation.reservationFor.id },
138
+ force: false
138
139
  })({ task: repos.task });
139
140
  });
140
141
  }
package/package.json CHANGED
@@ -120,5 +120,5 @@
120
120
  "postversion": "git push origin --tags",
121
121
  "prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
122
122
  },
123
- "version": "20.2.0-alpha.36"
123
+ "version": "20.2.0-alpha.38"
124
124
  }