@chevre/domain 21.21.0 → 21.22.0-alpha.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.
@@ -0,0 +1,66 @@
1
+ // tslint:disable:no-console
2
+ import * as mongoose from 'mongoose';
3
+
4
+ import { chevre } from '../../../lib/index';
5
+
6
+ // const project = { id: String(process.env.PROJECT_ID) };
7
+ enum ROLE_NAME {
8
+ Customer = 'customer',
9
+ POS = 'pos'
10
+ }
11
+
12
+ // tslint:disable-next-line:max-func-body-length
13
+ async function main() {
14
+ await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
15
+
16
+ const memberRepo = await chevre.repository.Member.createInstance(mongoose.connection);
17
+ const makesOfferRepo = await chevre.repository.ProjectMakesOffer.createInstance(mongoose.connection);
18
+
19
+ const cursor = memberRepo.getCursor(
20
+ {
21
+ 'member.hasRole.roleName': { $in: [ROLE_NAME.Customer, ROLE_NAME.POS] }
22
+ // 'member.id': { $eq: '3eo6okferrsdpfd9j2ce1iv9k7' }
23
+ },
24
+ {
25
+ // _id: 1,
26
+ }
27
+ );
28
+ console.log('members found');
29
+
30
+ let i = 0;
31
+ let updateCount = 0;
32
+ await cursor.eachAsync(async (doc) => {
33
+ i += 1;
34
+ const iamMember: chevre.factory.iam.IMember = doc.toObject();
35
+
36
+ const existingOffers = await makesOfferRepo.search({
37
+ offeredBy: { id: { $eq: iamMember.project.id } },
38
+ availableAtOrFrom: { id: { $eq: iamMember.member.id } }
39
+ });
40
+ const alreadyMigrated = existingOffers.length === 1;
41
+
42
+ if (alreadyMigrated) {
43
+ console.log(
44
+ 'already exist...', iamMember.project.id, iamMember.member.id, iamMember.member.typeOf, iamMember.member.name, i);
45
+ } else {
46
+ console.log(
47
+ 'updating project...',
48
+ iamMember.project.id, iamMember.member.id, iamMember.member.typeOf, iamMember.member.name, i);
49
+ await makesOfferRepo.create({
50
+ availableAtOrFrom: { id: iamMember.member.id },
51
+ offeredBy: { id: iamMember.project.id }
52
+ });
53
+ updateCount += 1;
54
+ console.log(
55
+ 'updated.',
56
+ iamMember.project.id, iamMember.member.id, iamMember.member.typeOf, iamMember.member.name, i);
57
+ }
58
+ });
59
+
60
+ console.log(i, 'members checked');
61
+ console.log(updateCount, 'members updated');
62
+ }
63
+
64
+ main()
65
+ .then()
66
+ .catch(console.error);
@@ -41,6 +41,7 @@ async function main() {
41
41
  validateEligibleCustomerType: false
42
42
  })({
43
43
  member: await chevre.repository.Member.createInstance(mongoose.connection),
44
+ projectMakesOffer: await chevre.repository.ProjectMakesOffer.createInstance(mongoose.connection),
44
45
  seller: await chevre.repository.Seller.createInstance(mongoose.connection),
45
46
  transaction: await chevre.repository.Transaction.createInstance(mongoose.connection)
46
47
  });
@@ -1,10 +1,12 @@
1
1
  import type { MongoRepository as MemberRepo } from '../../../repo/member';
2
+ import type { MongoRepository as ProjectMakesOfferRepo } from '../../../repo/projectMakesOffer';
2
3
  import type { MongoRepository as SellerRepo } from '../../../repo/seller';
3
4
  import type { MongoRepository as TransactionRepo } from '../../../repo/transaction';
4
5
  import * as factory from '../../../factory';
5
6
  import { placeOrder as PlaceOrderFactory } from '../../../factory/transaction';
6
7
  interface IStartOperationRepos {
7
8
  member: MemberRepo;
9
+ projectMakesOffer: ProjectMakesOfferRepo;
8
10
  seller: SellerRepo;
9
11
  transaction: TransactionRepo;
10
12
  }
@@ -22,9 +22,9 @@ function start(params) {
22
22
  return (repos) => __awaiter(this, void 0, void 0, function* () {
23
23
  var _a;
24
24
  const { passport, customerType } = yield (0, validation_1.validateWaiterPassport)(params);
25
- const { memeberOfPayload, makesOfferFromClient, seller } = yield (0, validateStartRequest_1.validateStartRequest)(Object.assign({ project: { id: params.project.id }, seller: { id: params.seller.id }, clientUser: params.object.clientUser, memberOfToken: params.agent.memberOfToken }, (params.validateEligibleCustomerType === true
25
+ const { memeberOfPayload, sellerMakesOffer, seller } = yield (0, validateStartRequest_1.validateStartRequest)(Object.assign({ project: { id: params.project.id }, seller: { id: params.seller.id }, clientUser: params.object.clientUser, memberOfToken: params.agent.memberOfToken }, (params.validateEligibleCustomerType === true
26
26
  && typeof (passport === null || passport === void 0 ? void 0 : passport.scope) === 'string') ? { customerType } : undefined))(repos);
27
- const expiresInSeconds = (_a = makesOfferFromClient === null || makesOfferFromClient === void 0 ? void 0 : makesOfferFromClient.eligibleTransactionDuration) === null || _a === void 0 ? void 0 : _a.maxValue;
27
+ const expiresInSeconds = (_a = sellerMakesOffer.eligibleTransactionDuration) === null || _a === void 0 ? void 0 : _a.maxValue;
28
28
  if (typeof expiresInSeconds !== 'number') {
29
29
  throw new factory.errors.NotFound('eligibleTransactionDuration.maxValue');
30
30
  }
@@ -1,6 +1,7 @@
1
- import * as factory from '../../../../factory';
2
1
  import type { MongoRepository as MemberRepo } from '../../../../repo/member';
2
+ import type { MongoRepository as ProjectMakesOfferRepo } from '../../../../repo/projectMakesOffer';
3
3
  import type { MongoRepository as SellerRepo } from '../../../../repo/seller';
4
+ import * as factory from '../../../../factory';
4
5
  type ISeller = Pick<factory.seller.ISeller, 'id' | 'name' | 'project' | 'typeOf' | 'makesOffer' | 'additionalProperty'>;
5
6
  declare function validateStartRequest(params: {
6
7
  project: {
@@ -17,10 +18,11 @@ declare function validateStartRequest(params: {
17
18
  memberOfToken?: string;
18
19
  }): (repos: {
19
20
  member: MemberRepo;
21
+ projectMakesOffer: ProjectMakesOfferRepo;
20
22
  seller: SellerRepo;
21
23
  }) => Promise<{
22
24
  seller: ISeller;
23
- makesOfferFromClient: factory.seller.IMakesOffer;
25
+ sellerMakesOffer: factory.seller.IMakesOffer;
24
26
  memeberOfPayload?: import("@chevre/factory/lib/transaction/placeOrder").IMemberOfPayload | undefined;
25
27
  }>;
26
28
  export { validateStartRequest };
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.validateStartRequest = void 0;
13
13
  const jwt = require("jsonwebtoken");
14
14
  const factory = require("../../../../factory");
15
+ const settings_1 = require("../../../../settings");
15
16
  function verifyMembershipToken(params) {
16
17
  return __awaiter(this, void 0, void 0, function* () {
17
18
  let result;
@@ -52,33 +53,40 @@ function verifyMembershipToken(params) {
52
53
  function validateStartRequest(params) {
53
54
  return (repos) => __awaiter(this, void 0, void 0, function* () {
54
55
  var _a, _b, _c, _d, _e, _f;
55
- const sellers = yield repos.seller.search({
56
+ const clientId = (_a = params.clientUser) === null || _a === void 0 ? void 0 : _a.client_id;
57
+ if (typeof clientId !== 'string' || clientId.length === 0) {
58
+ throw new factory.errors.ArgumentNull('client_id');
59
+ }
60
+ if (settings_1.USE_VALIDATE_PROJECT_MAKES_OFFER) {
61
+ const projectMakesOffer = (yield repos.projectMakesOffer.search({
62
+ limit: 1,
63
+ page: 1,
64
+ offeredBy: { id: { $eq: params.project.id } },
65
+ availableAtOrFrom: { id: { $eq: clientId } }
66
+ })).shift();
67
+ if (projectMakesOffer === undefined) {
68
+ throw new factory.errors.Argument('project', 'project makes no offers');
69
+ }
70
+ }
71
+ const seller = (yield repos.seller.search({
56
72
  limit: 1,
57
73
  page: 1,
58
74
  project: { id: { $eq: params.project.id } },
59
75
  id: { $eq: params.seller.id }
60
- }, ['name', 'project', 'typeOf', 'makesOffer', 'additionalProperty'], []);
61
- const seller = sellers.shift();
76
+ }, ['name', 'project', 'typeOf', 'makesOffer', 'additionalProperty'], [])).shift();
62
77
  if (seller === undefined) {
63
78
  throw new factory.errors.NotFound(factory.organizationType.Corporation);
64
79
  }
65
- const clientId = (_a = params.clientUser) === null || _a === void 0 ? void 0 : _a.client_id;
66
- // tslint:disable-next-line:no-single-line-block-comment
67
- /* istanbul ignore if */
68
- if (typeof clientId !== 'string' || clientId.length === 0) {
69
- throw new factory.errors.ArgumentNull('client_id');
70
- }
71
- const makesOfferFromClient = (_b = seller.makesOffer) === null || _b === void 0 ? void 0 : _b.find((offer) => {
72
- var _a;
73
- return (_a = offer.availableAtOrFrom) === null || _a === void 0 ? void 0 : _a.some((availableApplication) => availableApplication.id === clientId);
80
+ const sellerMakesOffer = (_b = seller.makesOffer) === null || _b === void 0 ? void 0 : _b.find(({ availableAtOrFrom }) => {
81
+ return availableAtOrFrom === null || availableAtOrFrom === void 0 ? void 0 : availableAtOrFrom.some(({ id }) => id === clientId);
74
82
  });
75
- if (makesOfferFromClient === undefined) {
76
- throw new factory.errors.Argument('seller', 'makes no offers');
83
+ if (sellerMakesOffer === undefined) {
84
+ throw new factory.errors.Argument('seller', 'seller makes no offers');
77
85
  }
78
86
  // eligibleCustomerType検証(2023-11-20~)
79
87
  const { customerType } = params;
80
88
  if (typeof customerType === 'string') {
81
- const { eligibleCustomerType } = makesOfferFromClient;
89
+ const { eligibleCustomerType } = sellerMakesOffer;
82
90
  // 適用カスタマータイプが存在すれば検証(存在しなければあらゆるカスタマータイプを受け入れる)
83
91
  if (Array.isArray(eligibleCustomerType)) {
84
92
  const isCustomerTypeEligible = eligibleCustomerType.some(({ codeValue }) => codeValue === customerType);
@@ -108,7 +116,7 @@ function validateStartRequest(params) {
108
116
  memeberOfPayload = yield verifyMembershipToken({ token: params.memberOfToken, secret: verifySecret, issuer: verifyIssuer });
109
117
  }
110
118
  }
111
- return { makesOfferFromClient, memeberOfPayload, seller };
119
+ return { sellerMakesOffer, memeberOfPayload, seller };
112
120
  });
113
121
  }
114
122
  exports.validateStartRequest = validateStartRequest;
@@ -42,6 +42,7 @@ export declare const USE_INFORM_ORDER_IN_TRANSIT: boolean;
42
42
  export declare const USE_SEND_EMAIL_MESSAGE_ON_ORDER_PROCESSING: boolean;
43
43
  export declare const USE_MINIMIZED_PAY_TASK: boolean;
44
44
  export declare const USE_KANA_NAME_IN_ACCEPTED_OFFER: boolean;
45
+ export declare const USE_VALIDATE_PROJECT_MAKES_OFFER: boolean;
45
46
  export declare const MONGO_MAX_TIME_MS: number;
46
47
  export declare const MONGO_READ_PREFERENCE: string;
47
48
  export declare const MONGO_AUTO_INDEX: boolean;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.settings = exports.DELIVER_ORDER_LIMIT = exports.MONGO_AUTO_INDEX = exports.MONGO_READ_PREFERENCE = exports.MONGO_MAX_TIME_MS = exports.USE_KANA_NAME_IN_ACCEPTED_OFFER = exports.USE_MINIMIZED_PAY_TASK = exports.USE_SEND_EMAIL_MESSAGE_ON_ORDER_PROCESSING = exports.USE_INFORM_ORDER_IN_TRANSIT = exports.USE_FETCH_API = exports.USE_OPTIMIZE_TICKET_OFFER = exports.USE_DELETE_EVENT_BY_ORDER = exports.USE_ASSET_TRANSACTION_SYNC_PROCESSING = exports.DEFAULT_TASKS_EXPORT_AGENT_NAME = exports.DEFAULT_SENDER_EMAIL = exports.TRANSACTION_CANCELED_STORAGE_PERIOD_IN_DAYS = exports.TRANSACTION_CONFIRMED_STORAGE_PERIOD_IN_DAYS = exports.ASSET_TRANSACTION_STORAGE_PERIOD_IN_DAYS = exports.MAX_NUM_CREDIT_CARD_PAYMENT_METHOD = exports.ABORTED_TASKS_WITHOUT_REPORT = exports.TRIGGER_WEBHOOK_RETRY_INTERVAL_IN_MS = exports.TRIGGER_WEBHOOK_MAX_RETRY_COUNT = void 0;
3
+ exports.settings = exports.DELIVER_ORDER_LIMIT = exports.MONGO_AUTO_INDEX = exports.MONGO_READ_PREFERENCE = exports.MONGO_MAX_TIME_MS = exports.USE_VALIDATE_PROJECT_MAKES_OFFER = exports.USE_KANA_NAME_IN_ACCEPTED_OFFER = exports.USE_MINIMIZED_PAY_TASK = exports.USE_SEND_EMAIL_MESSAGE_ON_ORDER_PROCESSING = exports.USE_INFORM_ORDER_IN_TRANSIT = exports.USE_FETCH_API = exports.USE_OPTIMIZE_TICKET_OFFER = exports.USE_DELETE_EVENT_BY_ORDER = exports.USE_ASSET_TRANSACTION_SYNC_PROCESSING = exports.DEFAULT_TASKS_EXPORT_AGENT_NAME = exports.DEFAULT_SENDER_EMAIL = exports.TRANSACTION_CANCELED_STORAGE_PERIOD_IN_DAYS = exports.TRANSACTION_CONFIRMED_STORAGE_PERIOD_IN_DAYS = exports.ASSET_TRANSACTION_STORAGE_PERIOD_IN_DAYS = exports.MAX_NUM_CREDIT_CARD_PAYMENT_METHOD = exports.ABORTED_TASKS_WITHOUT_REPORT = exports.TRIGGER_WEBHOOK_RETRY_INTERVAL_IN_MS = exports.TRIGGER_WEBHOOK_MAX_RETRY_COUNT = void 0;
4
4
  const factory = require("./factory");
5
5
  const transactionWebhookUrls = (typeof process.env.INFORM_TRANSACTION_URL === 'string')
6
6
  ? process.env.INFORM_TRANSACTION_URL.split(' ')
@@ -66,8 +66,7 @@ exports.USE_INFORM_ORDER_IN_TRANSIT = process.env.USE_INFORM_ORDER_IN_TRANSIT ==
66
66
  exports.USE_SEND_EMAIL_MESSAGE_ON_ORDER_PROCESSING = process.env.USE_SEND_EMAIL_MESSAGE_ON_ORDER_PROCESSING === '1';
67
67
  exports.USE_MINIMIZED_PAY_TASK = process.env.USE_MINIMIZED_PAY_TASK === '1';
68
68
  exports.USE_KANA_NAME_IN_ACCEPTED_OFFER = process.env.USE_KANA_NAME_IN_ACCEPTED_OFFER === '1';
69
- // export const USE_OPTIMIZED_CONFIRM_RESERVE_COA_TASK = process.env.USE_OPTIMIZED_CONFIRM_RESERVE_COA_TASK === '1';
70
- // export const USE_OPTIMIZED_CONFIRM_RESERVE_COA_TASK_VERIFY = process.env.USE_OPTIMIZED_CONFIRM_RESERVE_COA_TASK_VERIFY === '1';
69
+ exports.USE_VALIDATE_PROJECT_MAKES_OFFER = process.env.USE_VALIDATE_PROJECT_MAKES_OFFER === '1';
71
70
  exports.MONGO_MAX_TIME_MS = (typeof process.env.MONGO_MAX_TIME_MS === 'string')
72
71
  ? Number(process.env.MONGO_MAX_TIME_MS)
73
72
  // tslint:disable-next-line:no-magic-numbers
package/package.json CHANGED
@@ -110,5 +110,5 @@
110
110
  "postversion": "git push origin --tags",
111
111
  "prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
112
112
  },
113
- "version": "21.21.0"
113
+ "version": "21.22.0-alpha.0"
114
114
  }
@@ -1,79 +0,0 @@
1
- // tslint:disable:no-console
2
- import * as mongoose from 'mongoose';
3
-
4
- import { chevre } from '../../../lib/index';
5
-
6
- // const project = { id: String(process.env.PROJECT_ID) };
7
- const POS_CLIENT_ID = String(process.env.POS_CLIENT_ID);
8
- enum ROLE_NAME {
9
- Customer = 'customer',
10
- POS = 'pos'
11
- }
12
-
13
- // tslint:disable-next-line:max-func-body-length
14
- async function main() {
15
- await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
16
-
17
- const memberRepo = await chevre.repository.Member.createInstance(mongoose.connection);
18
-
19
- const cursor = memberRepo.getCursor(
20
- {
21
- 'member.id': { $eq: POS_CLIENT_ID }
22
- },
23
- {
24
- // _id: 1,
25
- }
26
- );
27
- console.log('members found');
28
-
29
- let i = 0;
30
- let updateCount = 0;
31
- await cursor.eachAsync(async (doc) => {
32
- i += 1;
33
- const iamMember: chevre.factory.iam.IMember = doc.toObject();
34
-
35
- const hasCustomerRole = iamMember.member.hasRole.some((role) => role.roleName === ROLE_NAME.Customer);
36
- const alreadyMigrated = iamMember.member.hasRole.some((role) => role.roleName === ROLE_NAME.POS);
37
-
38
- if (alreadyMigrated) {
39
- console.log(
40
- 'already exist...', iamMember.project.id, iamMember.member.id, iamMember.member.typeOf, iamMember.member.hasRole.length, 'roles', i);
41
- } else {
42
- if (!hasCustomerRole) {
43
- console.error(
44
- 'has no customer role!',
45
- iamMember.project.id, iamMember.member.id, iamMember.member.typeOf, iamMember.member.hasRole.length, 'roles', i);
46
- throw new Error('has no customer role!');
47
- }
48
-
49
- const newHasRole: chevre.factory.iam.IMemberRole[] = iamMember.member.hasRole;
50
- newHasRole.push({ roleName: ROLE_NAME.POS, typeOf: chevre.factory.iam.RoleType.OrganizationRole });
51
- console.log(
52
- 'updating reservation...',
53
- iamMember.project.id, iamMember.member.id, iamMember.member.typeOf, newHasRole.length, 'roles', i);
54
- await memberRepo.updateByMemberId({
55
- project: { id: iamMember.project.id },
56
- member: {
57
- id: iamMember.member.id,
58
- memberOf: {
59
- id: iamMember.project.id,
60
- typeOf: chevre.factory.organizationType.Project
61
- },
62
- hasRole: newHasRole
63
- },
64
- $unset: {}
65
- });
66
- updateCount += 1;
67
- console.log(
68
- 'updated.',
69
- iamMember.project.id, iamMember.member.id, iamMember.member.typeOf, newHasRole.length, 'roles', i);
70
- }
71
- });
72
-
73
- console.log(i, 'members checked');
74
- console.log(updateCount, 'members updated');
75
- }
76
-
77
- main()
78
- .then()
79
- .catch(console.error);