@chevre/domain 21.7.0-alpha.9 → 21.7.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 (49) hide show
  1. package/example/src/chevre/countDelayedTasks.ts +1 -1
  2. package/example/src/chevre/createDeleteTransactionTasks.ts +108 -0
  3. package/example/src/chevre/createDeleteTransactionTasksIfNotExist.ts +98 -0
  4. package/example/src/chevre/deleteRunsAtPassedCertainPeriod.ts +28 -0
  5. package/example/src/chevre/deleteTasksByName.ts +1 -1
  6. package/example/src/chevre/migrateAuthorizePaymentActionResult.ts +1 -1
  7. package/example/src/chevre/migrateOwnershipInfos2newUserPool.ts +4 -1
  8. package/example/src/chevre/unsetUnnecessaryFields.ts +1 -1
  9. package/lib/chevre/repo/mongoose/schemas/offer.d.ts +4 -4
  10. package/lib/chevre/repo/mongoose/schemas/offer.js +5 -6
  11. package/lib/chevre/repo/project.d.ts +1 -0
  12. package/lib/chevre/repo/project.js +10 -4
  13. package/lib/chevre/repo/task.d.ts +6 -2
  14. package/lib/chevre/repo/task.js +25 -1
  15. package/lib/chevre/repo/transaction.d.ts +25 -1
  16. package/lib/chevre/repo/transaction.js +6 -1
  17. package/lib/chevre/service/notification.js +13 -6
  18. package/lib/chevre/service/order/onOrderStatusChanged/factory.d.ts +20 -0
  19. package/lib/chevre/service/order/onOrderStatusChanged/factory.js +242 -1
  20. package/lib/chevre/service/order/onOrderStatusChanged.d.ts +2 -1
  21. package/lib/chevre/service/order/onOrderStatusChanged.js +120 -106
  22. package/lib/chevre/service/order/placeOrder.d.ts +1 -3
  23. package/lib/chevre/service/order/placeOrder.js +15 -74
  24. package/lib/chevre/service/order/returnOrder.d.ts +1 -2
  25. package/lib/chevre/service/order/returnOrder.js +15 -97
  26. package/lib/chevre/service/order/sendOrder.d.ts +0 -1
  27. package/lib/chevre/service/order/sendOrder.js +6 -68
  28. package/lib/chevre/service/payment/any/factory.js +2 -1
  29. package/lib/chevre/service/task/confirmRegisterServiceTransaction.d.ts +1 -1
  30. package/lib/chevre/service/task/confirmRegisterServiceTransaction.js +6 -6
  31. package/lib/chevre/service/transaction/moneyTransfer/factory.js +1 -5
  32. package/lib/chevre/service/transaction/moneyTransfer.js +0 -1
  33. package/lib/chevre/service/transaction/placeOrder/exportTasks/factory.js +12 -6
  34. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/registerService.d.ts +4 -0
  35. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/registerService.js +92 -88
  36. package/lib/chevre/service/transaction/placeOrderInProgress.js +0 -2
  37. package/lib/chevre/service/transaction/returnOrder/exportTasks/factory.js +8 -1
  38. package/lib/chevre/service/transaction/returnOrder/potentialActions.js +7 -4
  39. package/lib/chevre/service/transaction/returnOrder.js +0 -1
  40. package/lib/chevre/settings.d.ts +0 -1
  41. package/lib/chevre/settings.js +1 -2
  42. package/package.json +3 -3
  43. package/example/src/chevre/checkOrderMembershipTasks.ts +0 -127
  44. package/example/src/chevre/transaction/callOrderMembershipServiceTask.ts +0 -65
  45. package/example/src/chevre/transaction/orderMembershipService.ts +0 -105
  46. package/lib/chevre/service/task/orderProgramMembership.d.ts +0 -6
  47. package/lib/chevre/service/task/orderProgramMembership.js +0 -98
  48. package/lib/chevre/service/transaction/orderProgramMembership.d.ts +0 -50
  49. package/lib/chevre/service/transaction/orderProgramMembership.js +0 -349
@@ -11,7 +11,7 @@ export async function main() {
11
11
  const count = await taskRepo.countDelayedTasks({
12
12
  delayInSeconds: 60,
13
13
  name: {
14
- $nin: [chevre.factory.taskName.OrderProgramMembership]
14
+ $nin: [<any>'orderProgramMembership']
15
15
  }
16
16
  });
17
17
  console.log('count:', count);
@@ -0,0 +1,108 @@
1
+ // tslint:disable:no-console
2
+ import * as moment from 'moment';
3
+ import * as mongoose from 'mongoose';
4
+
5
+ import { chevre } from '../../../lib/index';
6
+
7
+ const ONE_YEAR_IN_DAYS = 365;
8
+
9
+ // tslint:disable-next-line:max-func-body-length
10
+ async function main() {
11
+ await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
12
+
13
+ const now = new Date();
14
+ const endDateLt: Date = moment(now)
15
+ // tslint:disable-next-line:no-magic-numbers
16
+ .add(-ONE_YEAR_IN_DAYS, 'days')
17
+ .toDate();
18
+ const startDateLt: Date = moment('2022-01-01T00:00:00Z')
19
+ .toDate();
20
+
21
+ const taskRepo = new chevre.repository.Task(mongoose.connection);
22
+ const transactionRepo = new chevre.repository.Transaction(mongoose.connection);
23
+
24
+ const cursor = transactionRepo.getCursor(
25
+ {
26
+ typeOf: { $eq: chevre.factory.transactionType.PlaceOrder },
27
+ startDate: {
28
+ $lt: startDateLt
29
+ }
30
+ // endDate: {
31
+ // $exists: true,
32
+ // $lt: moment(now)
33
+ // // tslint:disable-next-line:no-magic-numbers
34
+ // .add(-365, 'days')
35
+ // .toDate()
36
+ // }
37
+ },
38
+ {
39
+ _id: 1,
40
+ typeOf: 1,
41
+ project: 1,
42
+ startDate: 1,
43
+ endDate: 1,
44
+ object: 1
45
+ }
46
+ );
47
+ console.log('transactions found');
48
+
49
+ let i = 0;
50
+ let updateCount = 0;
51
+ await cursor.eachAsync(async (doc) => {
52
+ i += 1;
53
+ const transaction: Pick<
54
+ chevre.factory.transaction.placeOrder.ITransaction,
55
+ 'id' | 'project' | 'typeOf' | 'startDate' | 'endDate' | 'object'
56
+ > = doc.toObject();
57
+ console.log('checking...', transaction.project.id, transaction.id, transaction.startDate, transaction.endDate, i);
58
+
59
+ const isEndDateBefore = transaction.endDate !== undefined && moment(transaction.endDate)
60
+ .isBefore(endDateLt);
61
+ if (isEndDateBefore) {
62
+ const runsAt: Date = moment(transaction.endDate)
63
+ .add(ONE_YEAR_IN_DAYS, 'days')
64
+ .toDate();
65
+
66
+ updateCount += 1;
67
+ const deleteTransactionTask: chevre.factory.task.deleteTransaction.IAttributes = {
68
+ project: transaction.project,
69
+ name: chevre.factory.taskName.DeleteTransaction,
70
+ status: chevre.factory.taskStatus.Ready,
71
+ runsAt,
72
+ remainingNumberOfTries: 3,
73
+ numberOfTried: 0,
74
+ executionResults: [],
75
+ data: {
76
+ object: {
77
+ specifyingMethod: chevre.factory.task.deleteTransaction.SpecifyingMethod.Id,
78
+ endDate: transaction.endDate,
79
+ id: transaction.id,
80
+ object: {
81
+ ...(typeof transaction.object.confirmationNumber === 'string')
82
+ ? { confirmationNumber: transaction.object.confirmationNumber }
83
+ : undefined,
84
+ ...(typeof transaction.object.orderNumber === 'string')
85
+ ? { orderNumber: transaction.object.orderNumber }
86
+ : undefined
87
+ },
88
+ project: transaction.project,
89
+ startDate: transaction.startDate,
90
+ typeOf: transaction.typeOf
91
+ }
92
+ }
93
+ };
94
+ console.log(
95
+ 'saving task...',
96
+ deleteTransactionTask, transaction.project.id, transaction.id, transaction.startDate, transaction.endDate, i);
97
+ await taskRepo.saveMany([deleteTransactionTask], { emitImmediately: false });
98
+ console.log('task saved', transaction.project.id, transaction.id, transaction.startDate, transaction.endDate, i);
99
+ }
100
+ });
101
+
102
+ console.log(i, 'transactions checked');
103
+ console.log(updateCount, 'transactions updated');
104
+ }
105
+
106
+ main()
107
+ .then()
108
+ .catch(console.error);
@@ -0,0 +1,98 @@
1
+ // tslint:disable:no-console
2
+ import * as moment from 'moment';
3
+ import * as mongoose from 'mongoose';
4
+
5
+ import { chevre } from '../../../lib/index';
6
+
7
+ const ONE_YEAR_IN_DAYS = 365;
8
+ type IDeletingTransaction = Pick<
9
+ chevre.factory.transaction.placeOrder.ITransaction,
10
+ 'id' | 'project' | 'typeOf' | 'startDate' | 'endDate' | 'object'
11
+ >;
12
+
13
+ async function main() {
14
+ await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
15
+
16
+ const now = new Date();
17
+ const endDateLt: Date = moment(now)
18
+ // tslint:disable-next-line:no-magic-numbers
19
+ .add(-ONE_YEAR_IN_DAYS, 'days')
20
+ .toDate();
21
+
22
+ const taskRepo = new chevre.repository.Task(mongoose.connection);
23
+ const transactionRepo = new chevre.repository.Transaction(mongoose.connection);
24
+
25
+ const deletingTransactions = <IDeletingTransaction[]>await transactionRepo.search<chevre.factory.transactionType.PlaceOrder>(
26
+ {
27
+ limit: 100,
28
+ page: 1,
29
+ sort: { startDate: chevre.factory.sortType.Ascending },
30
+ typeOf: chevre.factory.transactionType.PlaceOrder,
31
+ statuses: [
32
+ chevre.factory.transactionStatusType.Canceled,
33
+ chevre.factory.transactionStatusType.Confirmed,
34
+ chevre.factory.transactionStatusType.Expired
35
+ ],
36
+ endThrough: endDateLt,
37
+ inclusion: ['_id', 'project', 'typeOf', 'startDate', 'endDate', 'object'],
38
+ exclusion: []
39
+ }
40
+ );
41
+
42
+ let i = 0;
43
+ let updateCount = 0;
44
+ for (const deletingTransaction of deletingTransactions) {
45
+ i += 1;
46
+ const transaction: IDeletingTransaction = deletingTransaction;
47
+ console.log('checking...', transaction.project.id, transaction.id, transaction.startDate, transaction.endDate, i);
48
+
49
+ const isEndDateBefore = transaction.endDate !== undefined && moment(transaction.endDate)
50
+ .isBefore(endDateLt);
51
+ if (isEndDateBefore) {
52
+ const runsAt: Date = moment(transaction.endDate)
53
+ .add(ONE_YEAR_IN_DAYS, 'days')
54
+ .toDate();
55
+
56
+ updateCount += 1;
57
+ const deleteTransactionTask: chevre.factory.task.deleteTransaction.IAttributes = {
58
+ project: transaction.project,
59
+ name: chevre.factory.taskName.DeleteTransaction,
60
+ status: chevre.factory.taskStatus.Ready,
61
+ runsAt,
62
+ remainingNumberOfTries: 3,
63
+ numberOfTried: 0,
64
+ executionResults: [],
65
+ data: {
66
+ object: {
67
+ specifyingMethod: chevre.factory.task.deleteTransaction.SpecifyingMethod.Id,
68
+ endDate: transaction.endDate,
69
+ id: transaction.id,
70
+ object: {
71
+ ...(typeof transaction.object.confirmationNumber === 'string')
72
+ ? { confirmationNumber: transaction.object.confirmationNumber }
73
+ : undefined,
74
+ ...(typeof transaction.object.orderNumber === 'string')
75
+ ? { orderNumber: transaction.object.orderNumber }
76
+ : undefined
77
+ },
78
+ project: transaction.project,
79
+ startDate: transaction.startDate,
80
+ typeOf: transaction.typeOf
81
+ }
82
+ }
83
+ };
84
+ console.log(
85
+ 'saving task...',
86
+ deleteTransactionTask.runsAt, transaction.project.id, transaction.id, transaction.startDate, transaction.endDate, i);
87
+ await taskRepo.createDeleteTransactionTaskIfNotExist(deleteTransactionTask, { emitImmediately: false });
88
+ console.log('task saved', transaction.project.id, transaction.id, transaction.startDate, transaction.endDate, i);
89
+ }
90
+ }
91
+
92
+ console.log(i, 'transactions checked');
93
+ console.log(updateCount, 'transactions updated');
94
+ }
95
+
96
+ main()
97
+ .then()
98
+ .catch(console.error);
@@ -0,0 +1,28 @@
1
+ // tslint:disable:no-console
2
+ import * as moment from 'moment';
3
+ import * as mongoose from 'mongoose';
4
+
5
+ import { chevre } from '../../../lib/index';
6
+
7
+ const TASK_STORAGE_PERIOD_IN_DAYS = 365;
8
+
9
+ async function main() {
10
+ const now = new Date();
11
+ await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
12
+
13
+ const taskRepo = new chevre.repository.Task(mongoose.connection);
14
+
15
+ const result = await taskRepo.deleteRunsAtPassedCertainPeriod({
16
+ runsAt: {
17
+ $lt: moment(now)
18
+ .add(-TASK_STORAGE_PERIOD_IN_DAYS, 'days')
19
+ .toDate()
20
+ }
21
+ });
22
+
23
+ console.log('deleted', result);
24
+ }
25
+
26
+ main()
27
+ .then()
28
+ .catch(console.error);
@@ -12,7 +12,7 @@ async function main() {
12
12
  const taskRepo = new chevre.repository.Task(mongoose.connection);
13
13
 
14
14
  const result = await taskRepo.deleteByName({
15
- name: chevre.factory.taskName.OrderProgramMembership,
15
+ name: <any>'orderProgramMembership',
16
16
  status: { $eq: chevre.factory.taskStatus.Ready }
17
17
  // runsAt: {
18
18
  // $gte: moment('2023-05-20T00:00:00Z')
@@ -46,7 +46,7 @@ async function main() {
46
46
  'id' | 'project' | 'result' | 'typeOf' | 'startDate' | 'actionStatus'
47
47
  > = doc.toObject();
48
48
 
49
- const oldPaymentMethodType = action.result?.paymentMethod;
49
+ const oldPaymentMethodType = (<any>action).result?.paymentMethod;
50
50
  const paymentMethodType = action.result?.paymentMethodAsObject?.typeOf;
51
51
  const alreadyMigrated = typeof paymentMethodType === 'string' && oldPaymentMethodType === paymentMethodType;
52
52
 
@@ -3,9 +3,12 @@
3
3
  import * as mongoose from 'mongoose';
4
4
 
5
5
  import { chevre } from '../../../lib/index';
6
- import { ISS_PREFIX, USERPOOL_ID_NEW } from './checkOrderMembershipTasks';
7
6
  import { migrateUser } from './migrateCognitoUser';
8
7
 
8
+ // export const USERPOOL_ID_OLD = String(process.env.USERPOOL_ID_OLD);
9
+ export const USERPOOL_ID_NEW = String(process.env.USERPOOL_ID_NEW);
10
+ export const ISS_PREFIX = 'https://cognito-idp.ap-northeast-1.amazonaws.com/';
11
+
9
12
  const project = { id: String(process.env.PROJECT_ID) };
10
13
  const PRODUCT_TYPE = chevre.factory.product.ProductType.EventService;
11
14
 
@@ -14,7 +14,7 @@ async function main() {
14
14
  let updateResult: any;
15
15
  updateResult = await transactionRepo.unsetUnnecessaryFields({
16
16
  filter: {
17
- 'project.id': { $eq: PROJECT_ID },
17
+ // 'project.id': { $eq: PROJECT_ID },
18
18
  typeOf: { $eq: chevre.factory.transactionType.PlaceOrder },
19
19
  status: { $eq: chevre.factory.transactionStatusType.Confirmed },
20
20
  startDate: {
@@ -25,7 +25,7 @@
25
25
  import { Schema } from 'mongoose';
26
26
  declare const modelName = "Offer";
27
27
  /**
28
- * オファースキーマ
28
+ * 単価オファースキーマ
29
29
  */
30
30
  declare const schema: Schema<any, import("mongoose").Model<any, any, any, any, any, any>, {}, {}, {}, {}, {
31
31
  collection: string;
@@ -53,6 +53,7 @@ declare const schema: Schema<any, import("mongoose").Model<any, any, any, any, a
53
53
  }, {
54
54
  additionalProperty: any[];
55
55
  addOn: any[];
56
+ availability: string;
56
57
  availableAtOrFrom: any[];
57
58
  _id?: string | undefined;
58
59
  name?: any;
@@ -68,7 +69,6 @@ declare const schema: Schema<any, import("mongoose").Model<any, any, any, any, a
68
69
  validFrom?: Date | undefined;
69
70
  category?: any;
70
71
  advanceBookingRequirement?: any;
71
- availability?: string | undefined;
72
72
  hasMerchantReturnPolicy?: any;
73
73
  priceSpecification?: any;
74
74
  eligibleCustomerType?: any;
@@ -84,6 +84,7 @@ declare const schema: Schema<any, import("mongoose").Model<any, any, any, any, a
84
84
  }, import("mongoose").Document<unknown, {}, import("mongoose").FlatRecord<{
85
85
  additionalProperty: any[];
86
86
  addOn: any[];
87
+ availability: string;
87
88
  availableAtOrFrom: any[];
88
89
  _id?: string | undefined;
89
90
  name?: any;
@@ -99,7 +100,6 @@ declare const schema: Schema<any, import("mongoose").Model<any, any, any, any, a
99
100
  validFrom?: Date | undefined;
100
101
  category?: any;
101
102
  advanceBookingRequirement?: any;
102
- availability?: string | undefined;
103
103
  hasMerchantReturnPolicy?: any;
104
104
  priceSpecification?: any;
105
105
  eligibleCustomerType?: any;
@@ -115,6 +115,7 @@ declare const schema: Schema<any, import("mongoose").Model<any, any, any, any, a
115
115
  }>> & Omit<import("mongoose").FlatRecord<{
116
116
  additionalProperty: any[];
117
117
  addOn: any[];
118
+ availability: string;
118
119
  availableAtOrFrom: any[];
119
120
  _id?: string | undefined;
120
121
  name?: any;
@@ -130,7 +131,6 @@ declare const schema: Schema<any, import("mongoose").Model<any, any, any, any, a
130
131
  validFrom?: Date | undefined;
131
132
  category?: any;
132
133
  advanceBookingRequirement?: any;
133
- availability?: string | undefined;
134
134
  hasMerchantReturnPolicy?: any;
135
135
  priceSpecification?: any;
136
136
  eligibleCustomerType?: any;
@@ -6,7 +6,7 @@ const writeConcern_1 = require("../writeConcern");
6
6
  const modelName = 'Offer';
7
7
  exports.modelName = modelName;
8
8
  /**
9
- * オファースキーマ
9
+ * 単価オファースキーマ
10
10
  */
11
11
  const schema = new mongoose_1.Schema({
12
12
  project: mongoose_1.SchemaTypes.Mixed,
@@ -22,14 +22,13 @@ const schema = new mongoose_1.Schema({
22
22
  alternateName: mongoose_1.SchemaTypes.Mixed,
23
23
  // acceptedPaymentMethod: SchemaTypes.Mixed, // 削除(2023-02-27~)
24
24
  addOn: [mongoose_1.SchemaTypes.Mixed],
25
- // availableAddOn: SchemaTypes.Mixed, // 削除(2023-02-27~)
26
- availability: String,
27
- // availabilityEnds: Date, // 削除(2023-02-27~)
28
- // availabilityStarts: Date, // 削除(2023-02-27~)
25
+ availability: {
26
+ type: String,
27
+ required: true
28
+ },
29
29
  availableAtOrFrom: [mongoose_1.SchemaTypes.Mixed],
30
30
  hasMerchantReturnPolicy: mongoose_1.SchemaTypes.Mixed,
31
31
  itemOffered: mongoose_1.SchemaTypes.Mixed,
32
- // price: Number, // 削除(2023-02-27~)
33
32
  priceCurrency: String,
34
33
  priceSpecification: mongoose_1.SchemaTypes.Mixed,
35
34
  eligibleCustomerType: mongoose_1.SchemaTypes.Mixed,
@@ -50,6 +50,7 @@ export declare class MongoRepository {
50
50
  logo?: string;
51
51
  name?: string;
52
52
  settings?: {
53
+ sendEmailMessage?: factory.project.ISendEmailMessageSettings;
53
54
  sendgridApiKey?: string;
54
55
  };
55
56
  subscription?: {
@@ -142,13 +142,19 @@ class MongoRepository {
142
142
  });
143
143
  }
144
144
  findByIdAndIUpdate(params) {
145
- var _a, _b;
145
+ var _a, _b, _c, _d, _e;
146
146
  return __awaiter(this, void 0, void 0, function* () {
147
- yield this.projectModel.findOneAndUpdate({ _id: params.id }, Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ updatedAt: new Date() }, (typeof params.alternateName === 'string' && params.alternateName.length > 0)
147
+ yield this.projectModel.findOneAndUpdate({ _id: params.id }, Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ updatedAt: new Date() }, (typeof params.alternateName === 'string' && params.alternateName.length > 0)
148
148
  ? { alternateName: params.alternateName }
149
- : undefined), (typeof params.name === 'string' && params.name.length > 0) ? { name: params.name } : undefined), (typeof params.logo === 'string' && params.logo.length > 0) ? { logo: params.logo } : undefined), (typeof ((_a = params.settings) === null || _a === void 0 ? void 0 : _a.sendgridApiKey) === 'string')
149
+ : undefined), (typeof params.name === 'string' && params.name.length > 0) ? { name: params.name } : undefined), (typeof params.logo === 'string' && params.logo.length > 0) ? { logo: params.logo } : undefined), (typeof ((_c = (_b = (_a = params.settings) === null || _a === void 0 ? void 0 : _a.sendEmailMessage) === null || _b === void 0 ? void 0 : _b.sender) === null || _c === void 0 ? void 0 : _c.email) === 'string')
150
+ ? {
151
+ 'settings.sendEmailMessage': {
152
+ sender: { email: params.settings.sendEmailMessage.sender.email }
153
+ }
154
+ }
155
+ : undefined), (typeof ((_d = params.settings) === null || _d === void 0 ? void 0 : _d.sendgridApiKey) === 'string')
150
156
  ? { 'settings.sendgridApiKey': params.settings.sendgridApiKey }
151
- : undefined), (typeof ((_b = params.subscription) === null || _b === void 0 ? void 0 : _b.useEventServiceAsProduct) === 'boolean')
157
+ : undefined), (typeof ((_e = params.subscription) === null || _e === void 0 ? void 0 : _e.useEventServiceAsProduct) === 'boolean')
152
158
  ? { 'subscription.useEventServiceAsProduct': params.subscription.useEventServiceAsProduct }
153
159
  : undefined), {
154
160
  // ↓customerUserPoolは廃止
@@ -31,6 +31,10 @@ export declare class MongoRepository {
31
31
  id: string;
32
32
  }[]>;
33
33
  createInformTaskIfNotExist(params: factory.task.IAttributes<factory.taskName.TriggerWebhook>, options: IOptionOnCreate): Promise<void>;
34
+ /**
35
+ * 取引削除タスク冪等作成
36
+ */
37
+ createDeleteTransactionTaskIfNotExist(params: factory.task.IAttributes<factory.taskName.DeleteTransaction>, options: IOptionOnCreate): Promise<void>;
34
38
  executeById(params: {
35
39
  id: string;
36
40
  executor: {
@@ -63,7 +67,7 @@ export declare class MongoRepository {
63
67
  */
64
68
  $nin?: factory.taskName[];
65
69
  };
66
- }): Promise<Pick<import("@chevre/factory/lib/task").ITask | import("@chevre/factory/lib/task/confirmMoneyTransfer").ITask | import("@chevre/factory/lib/task/confirmRegisterService").ITask | import("@chevre/factory/lib/task/confirmPayTransaction").ITask | import("@chevre/factory/lib/task/confirmRegisterServiceTransaction").ITask | import("@chevre/factory/lib/task/confirmReserveTransaction").ITask | import("@chevre/factory/lib/task/createEvent").ITask | import("@chevre/factory/lib/task/deleteTransaction").ITask | import("@chevre/factory/lib/task/givePointAward").ITask | import("@chevre/factory/lib/task/onAuthorizationCreated").ITask | import("@chevre/factory/lib/task/onEventChanged").ITask | import("@chevre/factory/lib/task/onResourceUpdated").ITask | import("@chevre/factory/lib/task/orderProgramMembership").ITask | import("@chevre/factory/lib/task/placeOrder").ITask | import("@chevre/factory/lib/task/returnOrder").ITask | import("@chevre/factory/lib/task/returnMoneyTransfer").ITask | import("@chevre/factory/lib/task/returnPayTransaction").ITask | import("@chevre/factory/lib/task/returnPointAward").ITask | import("@chevre/factory/lib/task/returnReserveTransaction").ITask | import("@chevre/factory/lib/task/sendEmailMessage").ITask | import("@chevre/factory/lib/task/sendOrder").ITask | import("@chevre/factory/lib/task/syncScreeningRooms").ITask | import("@chevre/factory/lib/task/triggerWebhook").ITask | import("@chevre/factory/lib/task/useReservation").ITask | import("@chevre/factory/lib/task/voidMoneyTransferTransaction").ITask | import("@chevre/factory/lib/task/voidPayTransaction").ITask | import("@chevre/factory/lib/task/voidRegisterServiceTransaction").ITask | import("@chevre/factory/lib/task/voidReserveTransaction").ITask, "id" | "name" | "status">[]>;
70
+ }): Promise<Pick<import("@chevre/factory/lib/task").ITask | import("@chevre/factory/lib/task/confirmMoneyTransfer").ITask | import("@chevre/factory/lib/task/confirmRegisterService").ITask | import("@chevre/factory/lib/task/confirmPayTransaction").ITask | import("@chevre/factory/lib/task/confirmRegisterServiceTransaction").ITask | import("@chevre/factory/lib/task/confirmReserveTransaction").ITask | import("@chevre/factory/lib/task/createEvent").ITask | import("@chevre/factory/lib/task/deleteTransaction").ITask | import("@chevre/factory/lib/task/givePointAward").ITask | import("@chevre/factory/lib/task/onAuthorizationCreated").ITask | import("@chevre/factory/lib/task/onEventChanged").ITask | import("@chevre/factory/lib/task/onResourceUpdated").ITask | import("@chevre/factory/lib/task/placeOrder").ITask | import("@chevre/factory/lib/task/returnOrder").ITask | import("@chevre/factory/lib/task/returnMoneyTransfer").ITask | import("@chevre/factory/lib/task/returnPayTransaction").ITask | import("@chevre/factory/lib/task/returnPointAward").ITask | import("@chevre/factory/lib/task/returnReserveTransaction").ITask | import("@chevre/factory/lib/task/sendEmailMessage").ITask | import("@chevre/factory/lib/task/sendOrder").ITask | import("@chevre/factory/lib/task/syncScreeningRooms").ITask | import("@chevre/factory/lib/task/triggerWebhook").ITask | import("@chevre/factory/lib/task/useReservation").ITask | import("@chevre/factory/lib/task/voidMoneyTransferTransaction").ITask | import("@chevre/factory/lib/task/voidPayTransaction").ITask | import("@chevre/factory/lib/task/voidRegisterServiceTransaction").ITask | import("@chevre/factory/lib/task/voidReserveTransaction").ITask, "id" | "name" | "status">[]>;
67
71
  retry(params: {
68
72
  intervalInMinutes: number;
69
73
  }): Promise<void>;
@@ -108,7 +112,7 @@ export declare class MongoRepository {
108
112
  runsAt: {
109
113
  $lt: Date;
110
114
  };
111
- }): Promise<void>;
115
+ }): Promise<import("mongodb").DeleteResult>;
112
116
  countDelayedTasks(params: {
113
117
  delayInSeconds: number;
114
118
  name: {
@@ -206,6 +206,30 @@ class MongoRepository {
206
206
  }
207
207
  });
208
208
  }
209
+ /**
210
+ * 取引削除タスク冪等作成
211
+ */
212
+ createDeleteTransactionTaskIfNotExist(params, options) {
213
+ return __awaiter(this, void 0, void 0, function* () {
214
+ if (params.data.object.specifyingMethod !== factory.task.deleteTransaction.SpecifyingMethod.Id) {
215
+ throw new factory.errors.NotImplemented(`only ${factory.task.deleteTransaction.SpecifyingMethod.Id} implemented`);
216
+ }
217
+ const createdTask = yield this.taskModel.findOneAndUpdate({
218
+ 'project.id': { $eq: params.project.id },
219
+ name: { $eq: params.name },
220
+ 'data.object.id': { $exists: true, $eq: params.data.object.id }
221
+ }, { $setOnInsert: params }, { new: true, upsert: true })
222
+ .select({ _id: 1 })
223
+ .exec();
224
+ if (options.emitImmediately) {
225
+ task_2.taskEventEmitter.emitTaskStatusChanged({
226
+ id: createdTask.id,
227
+ name: params.name,
228
+ status: factory.taskStatus.Ready
229
+ });
230
+ }
231
+ });
232
+ }
209
233
  executeById(params) {
210
234
  return __awaiter(this, void 0, void 0, function* () {
211
235
  const doc = yield this.taskModel.findOneAndUpdate({
@@ -427,7 +451,7 @@ class MongoRepository {
427
451
  */
428
452
  deleteRunsAtPassedCertainPeriod(params) {
429
453
  return __awaiter(this, void 0, void 0, function* () {
430
- yield this.taskModel.deleteMany({
454
+ return this.taskModel.deleteMany({
431
455
  runsAt: { $lt: params.runsAt.$lt },
432
456
  status: { $in: [factory.taskStatus.Aborted, factory.taskStatus.Executed] }
433
457
  })
@@ -1,3 +1,27 @@
1
+ /// <reference types="mongoose/types/aggregate" />
2
+ /// <reference types="mongoose/types/callback" />
3
+ /// <reference types="mongoose/types/collection" />
4
+ /// <reference types="mongoose/types/connection" />
5
+ /// <reference types="mongoose/types/cursor" />
6
+ /// <reference types="mongoose/types/document" />
7
+ /// <reference types="mongoose/types/error" />
8
+ /// <reference types="mongoose/types/expressions" />
9
+ /// <reference types="mongoose/types/helpers" />
10
+ /// <reference types="mongoose/types/middlewares" />
11
+ /// <reference types="mongoose/types/indexes" />
12
+ /// <reference types="mongoose/types/models" />
13
+ /// <reference types="mongoose/types/mongooseoptions" />
14
+ /// <reference types="mongoose/types/pipelinestage" />
15
+ /// <reference types="mongoose/types/populate" />
16
+ /// <reference types="mongoose/types/query" />
17
+ /// <reference types="mongoose/types/schemaoptions" />
18
+ /// <reference types="mongoose/types/schematypes" />
19
+ /// <reference types="mongoose/types/session" />
20
+ /// <reference types="mongoose/types/types" />
21
+ /// <reference types="mongoose/types/utility" />
22
+ /// <reference types="mongoose/types/validation" />
23
+ /// <reference types="mongoose/types/virtuals" />
24
+ /// <reference types="mongoose/types/inferschematype" />
1
25
  import { Connection } from 'mongoose';
2
26
  import * as factory from '../factory';
3
27
  interface IAggregationByStatus {
@@ -98,7 +122,6 @@ export declare class MongoRepository {
98
122
  confirm<T extends factory.transactionType>(params: {
99
123
  typeOf: T;
100
124
  id: string;
101
- authorizeActions: factory.action.authorize.IAction<factory.action.authorize.IAttributes<any, any>>[];
102
125
  result: factory.transaction.IResult<T>;
103
126
  potentialActions: factory.transaction.IPotentialActions<T>;
104
127
  }): Promise<void>;
@@ -194,6 +217,7 @@ export declare class MongoRepository {
194
217
  filter: any;
195
218
  $unset: any;
196
219
  }): Promise<import("mongodb").UpdateResult>;
220
+ getCursor(conditions: any, projection: any): import("mongoose").Cursor<any, import("mongoose").QueryOptions<any>>;
197
221
  aggregatePlaceOrder(params: {
198
222
  project?: {
199
223
  id?: {
@@ -438,7 +438,7 @@ class MongoRepository {
438
438
  }, {
439
439
  status: factory.transactionStatusType.Confirmed,
440
440
  endDate: new Date(),
441
- 'object.authorizeActions': params.authorizeActions,
441
+ // 'object.authorizeActions': params.authorizeActions,
442
442
  result: params.result,
443
443
  potentialActions: params.potentialActions // resultを更新
444
444
  }, {
@@ -776,6 +776,11 @@ class MongoRepository {
776
776
  .exec();
777
777
  });
778
778
  }
779
+ getCursor(conditions, projection) {
780
+ return this.transactionModel.find(conditions, projection)
781
+ .sort({ startDate: factory.sortType.Descending })
782
+ .cursor();
783
+ }
779
784
  aggregatePlaceOrder(params) {
780
785
  return __awaiter(this, void 0, void 0, function* () {
781
786
  const statuses = yield Promise.all([
@@ -24,8 +24,9 @@ const debug = createDebug('chevre-domain:service');
24
24
  * https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/errors.html
25
25
  */
26
26
  function sendEmailMessage(params) {
27
+ // tslint:disable-next-line:max-func-body-length
27
28
  return (repos) => __awaiter(this, void 0, void 0, function* () {
28
- var _a, _b;
29
+ var _a, _b, _c, _d, _e;
29
30
  const project = yield repos.project.findById({
30
31
  id: params.project.id,
31
32
  inclusion: ['_id', 'settings'],
@@ -45,6 +46,15 @@ function sendEmailMessage(params) {
45
46
  }
46
47
  sgMail.setApiKey(apiKey);
47
48
  const emailMessage = params.object;
49
+ const emailMessageFrom = {
50
+ name: emailMessage.sender.name,
51
+ email: emailMessage.sender.email
52
+ };
53
+ // プロジェクト設定対応(2023-08-21~)
54
+ const senderEmailByProjectSettings = (_d = (_c = (_b = project.settings) === null || _b === void 0 ? void 0 : _b.sendEmailMessage) === null || _c === void 0 ? void 0 : _c.sender) === null || _d === void 0 ? void 0 : _d.email;
55
+ if (typeof senderEmailByProjectSettings === 'string' && senderEmailByProjectSettings.length > 0) {
56
+ emailMessageFrom.email = senderEmailByProjectSettings;
57
+ }
48
58
  let subject;
49
59
  // 互換性維持対応として、String型に対応
50
60
  if (typeof emailMessage.about === 'string') {
@@ -52,7 +62,7 @@ function sendEmailMessage(params) {
52
62
  subject = String(emailMessage.about);
53
63
  }
54
64
  }
55
- else if (typeof ((_b = emailMessage.about) === null || _b === void 0 ? void 0 : _b.name) === 'string') {
65
+ else if (typeof ((_e = emailMessage.about) === null || _e === void 0 ? void 0 : _e.name) === 'string') {
56
66
  if (emailMessage.about.name.length > 0) {
57
67
  subject = emailMessage.about.name;
58
68
  }
@@ -69,10 +79,7 @@ function sendEmailMessage(params) {
69
79
  name: emailMessage.toRecipient.name,
70
80
  email: emailMessage.toRecipient.email
71
81
  }];
72
- const msg = Object.assign(Object.assign(Object.assign({ to: emailDatas, from: {
73
- name: emailMessage.sender.name,
74
- email: emailMessage.sender.email
75
- } }, (typeof subject === 'string') ? { subject } : undefined), (String(emailMessage.text).length > 0) ? { text: String(emailMessage.text) } : undefined), {
82
+ const msg = Object.assign(Object.assign(Object.assign({ to: emailDatas, from: emailMessageFrom }, (typeof subject === 'string') ? { subject } : undefined), (String(emailMessage.text).length > 0) ? { text: String(emailMessage.text) } : undefined), {
76
83
  // html: '<strong>and easy to do anywhere, even with Node.js</strong>',
77
84
  // categories: ['Transactional', 'My category'],
78
85
  // 送信予定を追加することもできるが、タスクの実行予定日時でコントロールする想定
@@ -20,4 +20,24 @@ export declare function createConfirmReservationActionObject4COAByOrder(params:
20
20
  export declare function createConfirmRegisterServiceActionObjectByOrder(params: {
21
21
  order: factory.order.IOrder;
22
22
  }): factory.action.interact.confirm.registerService.IObject[];
23
+ export type IExternalOrder = Pick<factory.order.IOrder, 'project' | 'typeOf' | 'seller' | 'customer' | 'confirmationNumber' | 'orderNumber' | 'price' | 'priceCurrency' | 'orderDate' | 'name' | 'orderStatus' | 'orderedItem' | 'paymentMethods'>;
24
+ /**
25
+ * 注文作成後のアクション
26
+ */
27
+ export declare function createOnPlaceOrderTasksByTransaction(params: {
28
+ object: factory.order.IOrder | IExternalOrder;
29
+ potentialActions?: factory.action.trade.order.IPotentialActions;
30
+ }): factory.task.IAttributes<factory.taskName>[];
31
+ /**
32
+ * 注文配送後のアクション
33
+ */
34
+ export declare function createOnOrderSentTasksByTransaction(params: {
35
+ potentialActions?: factory.action.transfer.send.order.IPotentialActions;
36
+ }): (import("@chevre/factory/lib/task").IAttributes | import("@chevre/factory/lib/task/confirmMoneyTransfer").IAttributes | import("@chevre/factory/lib/task/confirmRegisterService").IAttributes | import("@chevre/factory/lib/task/confirmPayTransaction").IAttributes | import("@chevre/factory/lib/task/confirmRegisterServiceTransaction").IAttributes | import("@chevre/factory/lib/task/confirmReserveTransaction").IAttributes | import("@chevre/factory/lib/task/createEvent").IAttributes | import("@chevre/factory/lib/task/deleteTransaction").IAttributes | import("@chevre/factory/lib/task/givePointAward").IAttributes | import("@chevre/factory/lib/task/onAuthorizationCreated").IAttributes | import("@chevre/factory/lib/task/onEventChanged").IAttributes | import("@chevre/factory/lib/task/onResourceUpdated").IAttributes | import("@chevre/factory/lib/task/placeOrder").IAttributes | import("@chevre/factory/lib/task/returnOrder").IAttributes | import("@chevre/factory/lib/task/returnMoneyTransfer").IAttributes | import("@chevre/factory/lib/task/returnPayTransaction").IAttributes | import("@chevre/factory/lib/task/returnPointAward").IAttributes | import("@chevre/factory/lib/task/returnReserveTransaction").IAttributes | import("@chevre/factory/lib/task/sendEmailMessage").IAttributes | import("@chevre/factory/lib/task/sendOrder").IAttributes | import("@chevre/factory/lib/task/syncScreeningRooms").IAttributes | import("@chevre/factory/lib/task/triggerWebhook").IAttributes | import("@chevre/factory/lib/task/useReservation").IAttributes | import("@chevre/factory/lib/task/voidMoneyTransferTransaction").IAttributes | import("@chevre/factory/lib/task/voidPayTransaction").IAttributes | import("@chevre/factory/lib/task/voidRegisterServiceTransaction").IAttributes | import("@chevre/factory/lib/task/voidReserveTransaction").IAttributes)[];
37
+ /**
38
+ * 注文返品後のアクション
39
+ */
40
+ export declare function createOnOrderReturnedTasksByTransaction(params: {
41
+ potentialActions?: factory.action.transfer.returnAction.order.IPotentialActions;
42
+ }): (import("@chevre/factory/lib/task").IAttributes | import("@chevre/factory/lib/task/confirmMoneyTransfer").IAttributes | import("@chevre/factory/lib/task/confirmRegisterService").IAttributes | import("@chevre/factory/lib/task/confirmPayTransaction").IAttributes | import("@chevre/factory/lib/task/confirmRegisterServiceTransaction").IAttributes | import("@chevre/factory/lib/task/confirmReserveTransaction").IAttributes | import("@chevre/factory/lib/task/createEvent").IAttributes | import("@chevre/factory/lib/task/deleteTransaction").IAttributes | import("@chevre/factory/lib/task/givePointAward").IAttributes | import("@chevre/factory/lib/task/onAuthorizationCreated").IAttributes | import("@chevre/factory/lib/task/onEventChanged").IAttributes | import("@chevre/factory/lib/task/onResourceUpdated").IAttributes | import("@chevre/factory/lib/task/placeOrder").IAttributes | import("@chevre/factory/lib/task/returnOrder").IAttributes | import("@chevre/factory/lib/task/returnMoneyTransfer").IAttributes | import("@chevre/factory/lib/task/returnPayTransaction").IAttributes | import("@chevre/factory/lib/task/returnPointAward").IAttributes | import("@chevre/factory/lib/task/returnReserveTransaction").IAttributes | import("@chevre/factory/lib/task/sendEmailMessage").IAttributes | import("@chevre/factory/lib/task/sendOrder").IAttributes | import("@chevre/factory/lib/task/syncScreeningRooms").IAttributes | import("@chevre/factory/lib/task/triggerWebhook").IAttributes | import("@chevre/factory/lib/task/useReservation").IAttributes | import("@chevre/factory/lib/task/voidMoneyTransferTransaction").IAttributes | import("@chevre/factory/lib/task/voidPayTransaction").IAttributes | import("@chevre/factory/lib/task/voidRegisterServiceTransaction").IAttributes | import("@chevre/factory/lib/task/voidReserveTransaction").IAttributes)[];
23
43
  export {};