@chevre/domain 20.2.0-alpha.46 → 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.
@@ -55,7 +55,7 @@ async function main() {
55
55
  let updateCount = 0;
56
56
  await cursor.eachAsync(async (doc) => {
57
57
  i += 1;
58
- const ownershipInfo = <chevre.factory.ownershipInfo.IOwnershipInfo<chevre.factory.ownershipInfo.IPermit>>doc.toObject();
58
+ const ownershipInfo = <chevre.factory.ownershipInfo.IOwnershipInfo<chevre.factory.ownershipInfo.IPermitAsGood>>doc.toObject();
59
59
 
60
60
  const owner = <chevre.factory.person.IPerson>ownershipInfo.ownedBy;
61
61
  let iss =
@@ -132,7 +132,7 @@ function findAccount(params: {
132
132
  customer: { id: string };
133
133
  now: Date;
134
134
  }) {
135
- return async (): Promise<chevre.factory.ownershipInfo.IPermit | undefined> => {
135
+ return async (): Promise<chevre.factory.ownershipInfo.IPermitAsGood | undefined> => {
136
136
  const ownershipInfoRepo = new chevre.repository.OwnershipInfo(mongoose.connection);
137
137
 
138
138
  // let accountOwnershipInfos = await search({
@@ -171,7 +171,7 @@ function findAccount(params: {
171
171
  // throw new domain.factory.errors.NotFound('accountOwnershipInfos');
172
172
  }
173
173
 
174
- return <chevre.factory.ownershipInfo.IPermit>ownershipInfos[0].typeOfGood;
174
+ return <chevre.factory.ownershipInfo.IPermitAsGood>ownershipInfos[0].typeOfGood;
175
175
  };
176
176
  }
177
177
 
@@ -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
  });
@@ -5,6 +5,7 @@ const moment = require("moment");
5
5
  const factory = require("../../../factory");
6
6
  const MAX_OWNED_THROUGH = '3000-01-01T00:00:00Z';
7
7
  function createProductOwnershipInfo(params) {
8
+ var _a, _b;
8
9
  let ownershipInfo;
9
10
  let ownedThrough;
10
11
  // どういう期間でいくらのオファーなのか
@@ -48,9 +49,14 @@ function createProductOwnershipInfo(params) {
48
49
  throw new factory.errors.NotFound('Order.acceptedOffers.priceSpecification.referenceQuantity.value');
49
50
  }
50
51
  const itemOffered = params.acceptedOffer.itemOffered;
51
- const typeOfGood = Object.assign(Object.assign({ project: itemOffered.project, identifier: itemOffered.identifier, issuedThrough: itemOffered.issuedThrough, typeOf: itemOffered.typeOf }, (itemOffered.validFor !== undefined) ? { validFor: itemOffered.validFor } : undefined), (itemOffered.name !== undefined) ? { name: itemOffered.name } : undefined
52
- // ...(itemOffered.dateIssued !== undefined) ? { dateIssued: itemOffered.dateIssued } : undefined
53
- );
52
+ // 最適化(2023-02-01~)
53
+ const issuedThrough = (typeof ((_a = itemOffered.issuedThrough) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string')
54
+ ? Object.assign({ id: itemOffered.issuedThrough.id, typeOf: itemOffered.issuedThrough.typeOf }, (typeof ((_b = itemOffered.issuedThrough.serviceType) === null || _b === void 0 ? void 0 : _b.typeOf) === 'string')
55
+ ? { serviceType: itemOffered.issuedThrough.serviceType }
56
+ : undefined) : undefined;
57
+ const typeOfGood = Object.assign(Object.assign(Object.assign({
58
+ // project: itemOffered.project, // 最適化(2023-02-01~)
59
+ identifier: itemOffered.identifier, typeOf: itemOffered.typeOf }, (typeof (issuedThrough === null || issuedThrough === void 0 ? void 0 : issuedThrough.typeOf) === 'string') ? { issuedThrough } : undefined), (itemOffered.validFor !== undefined) ? { validFor: itemOffered.validFor } : undefined), (itemOffered.name !== undefined) ? { name: itemOffered.name } : undefined);
54
60
  ownershipInfo = {
55
61
  project: params.project,
56
62
  typeOf: 'OwnershipInfo',
@@ -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 changedEvent = params.event;
216
- // ScreeningEventであれば集計タスク
217
- if (changedEvent.typeOf === factory.eventType.ScreeningEvent) {
218
- yield createAggregateScreeningEventIfNotExist({
219
- project: changedEvent.project,
220
- reservationFor: { id: changedEvent.id },
221
- // 新規作成の場合は強制的に集計
222
- force: params.isNew
223
- })(repos);
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
- const aggregateTask = {
232
- project: { id: params.project.id, typeOf: factory.organizationType.Project },
233
- name: factory.taskName.AggregateScreeningEvent,
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: new Date(),
261
- remainingNumberOfTries: 3,
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
- yield repos.task.save(aggregateTask);
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
  });
@@ -23,4 +23,4 @@ export declare function findPaymentCardPermit(params: {
23
23
  }): (repos: {
24
24
  ownershipInfo: OwnershipInfoRepo;
25
25
  product: ProductRepo;
26
- }) => Promise<factory.ownershipInfo.IPermit>;
26
+ }) => Promise<factory.ownershipInfo.IPermitAsGood>;
package/package.json CHANGED
@@ -9,8 +9,8 @@
9
9
  }
10
10
  ],
11
11
  "dependencies": {
12
- "@chevre/factory": "4.284.0-alpha.3",
13
- "@cinerino/sdk": "3.136.0",
12
+ "@chevre/factory": "4.284.0-alpha.4",
13
+ "@cinerino/sdk": "3.137.0-alpha.2",
14
14
  "@motionpicture/coa-service": "9.2.0",
15
15
  "@motionpicture/gmo-service": "5.2.0",
16
16
  "@sendgrid/mail": "6.4.0",
@@ -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.46"
123
+ "version": "20.2.0-alpha.48"
124
124
  }