storemw-core-api 1.0.144 → 1.0.146

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 (33) hide show
  1. package/dist/controllers/subscription/plan/subscribePlanController.js +4 -0
  2. package/dist/controllers/subscription/plan/subscribePlanController.js.map +1 -1
  3. package/dist/features/auth_token/authTokenType.d.ts +1 -1
  4. package/dist/features/auth_token/authTokenType.js.map +1 -1
  5. package/dist/features/index.d.ts +3 -0
  6. package/dist/features/index.js +5 -1
  7. package/dist/features/index.js.map +1 -1
  8. package/dist/features/user_me/userMeRegister.d.ts +5 -0
  9. package/dist/features/user_me/userMeRegister.js +11 -0
  10. package/dist/features/user_me/userMeRegister.js.map +1 -0
  11. package/dist/features/user_me/userMeRegistry.d.ts +2 -0
  12. package/dist/features/user_me/userMeRegistry.js +32 -0
  13. package/dist/features/user_me/userMeRegistry.js.map +1 -0
  14. package/dist/features/user_me/userMeType.d.ts +8 -0
  15. package/dist/features/user_me/userMeType.js +3 -0
  16. package/dist/features/user_me/userMeType.js.map +1 -0
  17. package/dist/models/subscription/plan/SubscribePlanModel.d.ts +13 -2
  18. package/dist/schema/payload/subscription/schemaSubscribePlan.d.ts +17 -0
  19. package/dist/schema/payload/subscription/schemaSubscribePlan.js +1 -0
  20. package/dist/schema/payload/subscription/schemaSubscribePlan.js.map +1 -1
  21. package/dist/services/auth/AuthService.js +4 -1
  22. package/dist/services/auth/AuthService.js.map +1 -1
  23. package/dist/services/index.d.ts +1 -1
  24. package/dist/services/index.js.map +1 -1
  25. package/dist/services/subscription/account/AccountSubscribeService.js +21 -0
  26. package/dist/services/subscription/account/AccountSubscribeService.js.map +1 -1
  27. package/dist/services/subscription/plan/SubscribePlanService.d.ts +2 -0
  28. package/dist/services/subscription/plan/SubscribePlanService.js +3 -0
  29. package/dist/services/subscription/plan/SubscribePlanService.js.map +1 -1
  30. package/dist/services/user/UserMeService.js +24 -211
  31. package/dist/services/user/UserMeService.js.map +1 -1
  32. package/package.json +1 -1
  33. package/prisma/schema.prisma +16 -15
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;AAAA,2DAAoE;AAA3D,0GAAA,WAAW,OAAA;AAAE,wGAAA,SAAS,OAAA;AAE/B,2EAA8G;AAArG,oHAAA,gBAAgB,OAAA;AAAE,sHAAA,kBAAkB,OAAA;AAAE,mHAAA,eAAe,OAAA;AAE9D,uFAAqF;AAA5E,4HAAA,oBAAoB,OAAA;AAE7B,uFAA2G;AAAlG,4HAAA,oBAAoB,OAAA;AAAE,4HAAA,oBAAoB,OAAA;AAEnD,oEAAkE;AAAzD,gHAAA,cAAc,OAAA;AAEvB,uEAAqE;AAA5D,kHAAA,eAAe,OAAA;AAGxB,0FAAyI;AAAhI,4HAAA,oBAAoB,OAAA;AAAE,2HAAA,mBAAmB,OAAA;AAAE,kIAAA,0BAA0B,OAAA;AAE9E,mGAAiG;AAAxF,kIAAA,uBAAuB,OAAA;AAGhC,2DAAyF;AAAhF,0GAAA,WAAW,OAAA;AAAE,wGAAA,SAAS,OAAA;AAAE,kHAAA,mBAAmB,OAAA;AAGpD,+DAA6D;AAApD,8GAAA,aAAa,OAAA;AAGtB,sGAAsG;AACtG,qNAAqN;AACrN,uFAAuF;AACvF,kLAAkL;AAElL,yEAAwF;AAA/E,sHAAA,iBAAiB,OAAA;AAAE,oHAAA,eAAe,OAAA;AAE3C,iEAA+D;AAAtD,8GAAA,aAAa,OAAA;AAEtB,uEAAqE;AAA5D,kHAAA,eAAe,OAAA;AAExB,2DAAoE;AAA3D,0GAAA,WAAW,OAAA;AAAE,wGAAA,SAAS,OAAA;AAE/B,2DAAyD;AAAhD,0GAAA,WAAW,OAAA;AAEpB,uEAAqE;AAA5D,kHAAA,eAAe,OAAA;AAExB,0FAAsI;AAA7H,8HAAA,qBAAqB,OAAA;AAAE,4HAAA,mBAAmB,OAAA;AAAE,gIAAA,uBAAuB,OAAA;AAE5E,yFAAuF;AAA9E,sIAAA,yBAAyB,OAAA;AAElC,kFAA8I;AAArI,wHAAA,kBAAkB,OAAA;AAAE,sHAAA,gBAAgB,OAAA;AAAE,6HAAA,uBAAuB,OAAA;AAAE,uHAAA,iBAAiB,OAAA;AAEzF,wEAAsE;AAA7D,oHAAA,gBAAgB,OAAA;AAGzB,+FAA+F;AAC/F,wIAAwI;AACxI,8EAA4E;AAAnE,4HAAA,oBAAoB,OAAA","sourcesContent":["export { AuthService, authTypes } from \"@/services/auth/AuthService\"\nexport type { AuthServiceProps, AuthType, AuthTokenResult, AuthJwtToken, AuthGetTokenProps } from \"@/services/auth/AuthService\"\nexport { AccessKeyService, accessKeyUserTypes, accessKeyStatus } from \"@/services/access_key/AccessKeyService\"\nexport type { AccessKeyServiceProps, AccessKeyStatus, AccessKeyUserType, AccessKeyCreateProps, AccessKeyRevokeProps } from \"@/services/access_key/AccessKeyService\"\nexport { AccessControlService } from \"@/services/access_control/AccessControlService\"\nexport type { AccessControlServiceProps, AccessControlScopeOrExtra, AccessControlListOptionsProps } from \"@/services/access_control/AccessControlService\"\nexport { ResetPasswordService, resetPasswordMethods } from \"@/services/reset_password/ResetPasswordService\"\nexport type { ResetPasswordServiceProps, ResetPasswordMethod, ResetPasswordRequestProps, ResetPasswordValidateCodeProps, ResetPasswordPerformProps } from \"@/services/reset_password/ResetPasswordService\"\nexport { AccountService } from \"@/services/account/AccountService\"\nexport type { AccountServiceProps, Account, AccountGetProps, AccountListProps, AccountCreateProps, AccountUpdateProps } from \"@/services/account/AccountService\"\nexport { BusinessService } from \"@/services/business/BusinessService\"\nexport type { BusinessServiceProps, Business, BusinessGetProps, BusinessListProps, BusinessCreateProps, BusinessUpdateProps } from \"@/services/business/BusinessService\"\n\nexport { SubscribePlanService, subscribeCurrencies, subscribePlanBillingCycles } from \"@/services/subscription/plan/SubscribePlanService\"\nexport type { SubscribePlanServiceProps, SubscribePlan, SubscribePlanBillingCycle, SubscribePlanCurrency, SubscribePlanGetProps, SubscribePlanListProps, SubscribePlanCreateProps, SubscribePlanUpdateProps } from \"@/services/subscription/plan/SubscribePlanService\"\nexport { AccountSubscribeService } from \"@/services/subscription/account/AccountSubscribeService\"\nexport type { AccountSubscribeServiceProps, AccountSubscribe, AccountSubscribeGetProps, AccountSubscribeListProps, AccountSubscribeCreateProps, AccountSubscribeCancelProps } from \"@/services/subscription/account/AccountSubscribeService\"\n\nexport { UserService, userTypes, userParentSqlSelect } from \"@/services/user/UserService\"\nexport type { UserServiceProps, UserType, UserGetProps, UserListProps, UserCreateProps, UserUpdateProps, UserRemoveProps, UserReplacePasswordProps } from \"@/services/user/UserService\"\n\nexport { UserMeService } from \"@/services/user/UserMeService\"\nexport type { UserMeServiceProps, UserMeUpdateProps, UserMeChangePasswordProps } from \"@/services/user/UserMeService\"\n\n// export { AdministratorService, administratorDataTypes } from \"@/services/user/AdministratorService\"\n// export type { AdministratorServiceProps, AdministratorGetProps, AdministratorListProps, AdministratorCreateProps, AdministratorUpdateProps, AdministratorRemoveProps } from \"@/services/user/AdministratorService\"\n// export { OperatorService, operatorDataTypes } from \"@/services/user/OperatorService\"\n// export type { OperatorServiceProps, OperatorGetProps, OperatorListProps, OperatorCreateProps, OperatorUpdateProps, OperatorRemoveProps } from \"@/services/user/OperatorService\"\n\nexport { UserBranchService, userBranchTypes } from \"@/services/branch/UserBranchService\"\nexport type { UserBranchServiceProps, UserBranchType, UserBranchGetProps, UserBranchListProps, UserBranchCreateProps, UserBranchUpdateProps, UserBranchRemoveProps } from \"@/services/branch/UserBranchService\"\nexport { RegionService } from \"@/services/region/RegionService\"\nexport type { RegionServiceProps, RegionType, RegionGetProps, RegionCreateProps, RegionListProps, RegionUpdateProps, RegionRemoveProps } from \"@/services/region/RegionService\"\nexport { DocumentService } from \"@/services/document/DocumentService\"\nexport type { DocumentServiceProps, DocumentType, DocumentGetProps, DocumentUpdateProps, DocumentCreateProps, DocumentListProps, DocumentRemoveProps } from \"@/services/document/DocumentService\"\nexport { ItemService, itemTypes } from \"@/services/item/ItemService\"\nexport type { ItemServiceProps, ItemType, ItemGetProps, ItemUpdateProps, ItemCreateProps, ItemListProps, ItemRemoveProps } from \"@/services/item/ItemService\"\nexport { FileService } from \"@/services/file/FileService\"\nexport type { FileImageCompressionOptions, FileVideoCompressionOptions, FileStorageProviderType, FileLocalProviderOptions, FileGoogleCloudProviderOptions, FileAwsS3ProviderOptions, FileCategoryName, FileUploadItem, FileServiceProps, FileGetProps, FileUploadProps, FileCreateProps, FileListProps, FileRemoveProps } from \"@/services/file/FileService\"\nexport { LocationService } from \"@/services/location/LocationService\"\nexport type { LocationServiceProps, LocationType, LocationGetProps, LocationUpdateProps, LocationCreateProps, LocationListProps, LocationRemoveProps } from \"@/services/location/LocationService\"\nexport { InjectionFieldService, injectionFieldTypes, injectionFieldDataTypes } from \"@/services/injection_field/InjectionFieldService\"\nexport type { InjectionFieldModuleRef, InjectionFieldServiceProps, InjectionFieldType, InjectionFieldDataType, InjectionFieldCreateProps, InjectionFieldListProps, InjectionFieldGetProps, InjectionFieldReplaceProps } from \"@/services/injection_field/InjectionFieldService\"\nexport { NumberDateSequenceService } from \"@/services/others/NumberDateSequenceService\"\nexport type { NumberDateSequenceModuleRef, NumberDateSequenceServiceProps, NumberDateSequenceInitProps, NumberDateSequenceCreateProps } from \"@/services/others/NumberDateSequenceService\"\nexport { OneTimeCodeService, oneTimeCodeTypes, oneTimeCodePurposeTypes, oneTimeCodeStatus } from \"@/services/one_time_code/OneTimeCodeService\"\nexport type { OneTimeCodeModuleRef, OneTimeCodeType, OneTimeCodePurposeType, OneTimeCodeStatus, OneTimeCodeServiceProps, OneTimeCodeCreateProps } from \"@/services/one_time_code/OneTimeCodeService\"\nexport { SmtpEmailService } from \"@/services/gateway/SmtpEmailService\"\nexport type { SmtpEmailServiceProps, SmtpEmailSendProps, SmtpEmailTransporterOptions } from \"@/services/gateway/SmtpEmailService\"\n\n// export { ChangePasswordUtilService } from \"@/services/utils/unuse/ChangePasswordUtilService\"\n// export type { ChangePasswordUtilServiceProps, ChangePasswordUtilChangeProps } from \"@/services/utils/unuse/ChangePasswordUtilService\"\nexport { AccessKeyUtilService } from \"@/services/utils/AccessKeyUtilService\"\nexport type { AccessKeyUtilServiceProps, AccessKeyUtilValidateProps, AccessKeyUtilAccountOwnerProps } from \"@/services/utils/AccessKeyUtilService\""]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;AAAA,2DAAoE;AAA3D,0GAAA,WAAW,OAAA;AAAE,wGAAA,SAAS,OAAA;AAE/B,2EAA8G;AAArG,oHAAA,gBAAgB,OAAA;AAAE,sHAAA,kBAAkB,OAAA;AAAE,mHAAA,eAAe,OAAA;AAE9D,uFAAqF;AAA5E,4HAAA,oBAAoB,OAAA;AAE7B,uFAA2G;AAAlG,4HAAA,oBAAoB,OAAA;AAAE,4HAAA,oBAAoB,OAAA;AAEnD,oEAAkE;AAAzD,gHAAA,cAAc,OAAA;AAEvB,uEAAqE;AAA5D,kHAAA,eAAe,OAAA;AAGxB,0FAAyI;AAAhI,4HAAA,oBAAoB,OAAA;AAAE,2HAAA,mBAAmB,OAAA;AAAE,kIAAA,0BAA0B,OAAA;AAE9E,mGAAiG;AAAxF,kIAAA,uBAAuB,OAAA;AAGhC,2DAAyF;AAAhF,0GAAA,WAAW,OAAA;AAAE,wGAAA,SAAS,OAAA;AAAE,kHAAA,mBAAmB,OAAA;AAGpD,+DAA6D;AAApD,8GAAA,aAAa,OAAA;AAGtB,sGAAsG;AACtG,qNAAqN;AACrN,uFAAuF;AACvF,kLAAkL;AAElL,yEAAwF;AAA/E,sHAAA,iBAAiB,OAAA;AAAE,oHAAA,eAAe,OAAA;AAE3C,iEAA+D;AAAtD,8GAAA,aAAa,OAAA;AAEtB,uEAAqE;AAA5D,kHAAA,eAAe,OAAA;AAExB,2DAAoE;AAA3D,0GAAA,WAAW,OAAA;AAAE,wGAAA,SAAS,OAAA;AAE/B,2DAAyD;AAAhD,0GAAA,WAAW,OAAA;AAEpB,uEAAqE;AAA5D,kHAAA,eAAe,OAAA;AAExB,0FAAsI;AAA7H,8HAAA,qBAAqB,OAAA;AAAE,4HAAA,mBAAmB,OAAA;AAAE,gIAAA,uBAAuB,OAAA;AAE5E,yFAAuF;AAA9E,sIAAA,yBAAyB,OAAA;AAElC,kFAA8I;AAArI,wHAAA,kBAAkB,OAAA;AAAE,sHAAA,gBAAgB,OAAA;AAAE,6HAAA,uBAAuB,OAAA;AAAE,uHAAA,iBAAiB,OAAA;AAEzF,wEAAsE;AAA7D,oHAAA,gBAAgB,OAAA;AAGzB,+FAA+F;AAC/F,wIAAwI;AACxI,8EAA4E;AAAnE,4HAAA,oBAAoB,OAAA","sourcesContent":["export { AuthService, authTypes } from \"@/services/auth/AuthService\"\nexport type { AuthServiceProps, AuthType, AuthTokenResult, AuthJwtToken, AuthGetTokenProps } from \"@/services/auth/AuthService\"\nexport { AccessKeyService, accessKeyUserTypes, accessKeyStatus } from \"@/services/access_key/AccessKeyService\"\nexport type { AccessKeyServiceProps, AccessKeyStatus, AccessKeyUserType, AccessKeyCreateProps, AccessKeyRevokeProps } from \"@/services/access_key/AccessKeyService\"\nexport { AccessControlService } from \"@/services/access_control/AccessControlService\"\nexport type { AccessControlServiceProps, AccessControlScopeOrExtra, AccessControlListOptionsProps } from \"@/services/access_control/AccessControlService\"\nexport { ResetPasswordService, resetPasswordMethods } from \"@/services/reset_password/ResetPasswordService\"\nexport type { ResetPasswordServiceProps, ResetPasswordMethod, ResetPasswordRequestProps, ResetPasswordValidateCodeProps, ResetPasswordPerformProps } from \"@/services/reset_password/ResetPasswordService\"\nexport { AccountService } from \"@/services/account/AccountService\"\nexport type { AccountServiceProps, Account, AccountGetProps, AccountListProps, AccountCreateProps, AccountUpdateProps, AccountRemoveProps } from \"@/services/account/AccountService\"\nexport { BusinessService } from \"@/services/business/BusinessService\"\nexport type { BusinessServiceProps, Business, BusinessGetProps, BusinessListProps, BusinessCreateProps, BusinessUpdateProps } from \"@/services/business/BusinessService\"\n\nexport { SubscribePlanService, subscribeCurrencies, subscribePlanBillingCycles } from \"@/services/subscription/plan/SubscribePlanService\"\nexport type { SubscribePlanServiceProps, SubscribePlan, SubscribePlanBillingCycle, SubscribePlanCurrency, SubscribePlanGetProps, SubscribePlanListProps, SubscribePlanCreateProps, SubscribePlanUpdateProps } from \"@/services/subscription/plan/SubscribePlanService\"\nexport { AccountSubscribeService } from \"@/services/subscription/account/AccountSubscribeService\"\nexport type { AccountSubscribeServiceProps, AccountSubscribe, AccountSubscribeGetProps, AccountSubscribeListProps, AccountSubscribeCreateProps, AccountSubscribeCancelProps } from \"@/services/subscription/account/AccountSubscribeService\"\n\nexport { UserService, userTypes, userParentSqlSelect } from \"@/services/user/UserService\"\nexport type { UserServiceProps, UserType, UserGetProps, UserListProps, UserCreateProps, UserUpdateProps, UserRemoveProps, UserReplacePasswordProps } from \"@/services/user/UserService\"\n\nexport { UserMeService } from \"@/services/user/UserMeService\"\nexport type { UserMeServiceProps, UserMeUpdateProps, UserMeChangePasswordProps } from \"@/services/user/UserMeService\"\n\n// export { AdministratorService, administratorDataTypes } from \"@/services/user/AdministratorService\"\n// export type { AdministratorServiceProps, AdministratorGetProps, AdministratorListProps, AdministratorCreateProps, AdministratorUpdateProps, AdministratorRemoveProps } from \"@/services/user/AdministratorService\"\n// export { OperatorService, operatorDataTypes } from \"@/services/user/OperatorService\"\n// export type { OperatorServiceProps, OperatorGetProps, OperatorListProps, OperatorCreateProps, OperatorUpdateProps, OperatorRemoveProps } from \"@/services/user/OperatorService\"\n\nexport { UserBranchService, userBranchTypes } from \"@/services/branch/UserBranchService\"\nexport type { UserBranchServiceProps, UserBranchType, UserBranchGetProps, UserBranchListProps, UserBranchCreateProps, UserBranchUpdateProps, UserBranchRemoveProps } from \"@/services/branch/UserBranchService\"\nexport { RegionService } from \"@/services/region/RegionService\"\nexport type { RegionServiceProps, RegionType, RegionGetProps, RegionCreateProps, RegionListProps, RegionUpdateProps, RegionRemoveProps } from \"@/services/region/RegionService\"\nexport { DocumentService } from \"@/services/document/DocumentService\"\nexport type { DocumentServiceProps, DocumentType, DocumentGetProps, DocumentUpdateProps, DocumentCreateProps, DocumentListProps, DocumentRemoveProps } from \"@/services/document/DocumentService\"\nexport { ItemService, itemTypes } from \"@/services/item/ItemService\"\nexport type { ItemServiceProps, ItemType, ItemGetProps, ItemUpdateProps, ItemCreateProps, ItemListProps, ItemRemoveProps } from \"@/services/item/ItemService\"\nexport { FileService } from \"@/services/file/FileService\"\nexport type { FileImageCompressionOptions, FileVideoCompressionOptions, FileStorageProviderType, FileLocalProviderOptions, FileGoogleCloudProviderOptions, FileAwsS3ProviderOptions, FileCategoryName, FileUploadItem, FileServiceProps, FileGetProps, FileUploadProps, FileCreateProps, FileListProps, FileRemoveProps } from \"@/services/file/FileService\"\nexport { LocationService } from \"@/services/location/LocationService\"\nexport type { LocationServiceProps, LocationType, LocationGetProps, LocationUpdateProps, LocationCreateProps, LocationListProps, LocationRemoveProps } from \"@/services/location/LocationService\"\nexport { InjectionFieldService, injectionFieldTypes, injectionFieldDataTypes } from \"@/services/injection_field/InjectionFieldService\"\nexport type { InjectionFieldModuleRef, InjectionFieldServiceProps, InjectionFieldType, InjectionFieldDataType, InjectionFieldCreateProps, InjectionFieldListProps, InjectionFieldGetProps, InjectionFieldReplaceProps } from \"@/services/injection_field/InjectionFieldService\"\nexport { NumberDateSequenceService } from \"@/services/others/NumberDateSequenceService\"\nexport type { NumberDateSequenceModuleRef, NumberDateSequenceServiceProps, NumberDateSequenceInitProps, NumberDateSequenceCreateProps } from \"@/services/others/NumberDateSequenceService\"\nexport { OneTimeCodeService, oneTimeCodeTypes, oneTimeCodePurposeTypes, oneTimeCodeStatus } from \"@/services/one_time_code/OneTimeCodeService\"\nexport type { OneTimeCodeModuleRef, OneTimeCodeType, OneTimeCodePurposeType, OneTimeCodeStatus, OneTimeCodeServiceProps, OneTimeCodeCreateProps } from \"@/services/one_time_code/OneTimeCodeService\"\nexport { SmtpEmailService } from \"@/services/gateway/SmtpEmailService\"\nexport type { SmtpEmailServiceProps, SmtpEmailSendProps, SmtpEmailTransporterOptions } from \"@/services/gateway/SmtpEmailService\"\n\n// export { ChangePasswordUtilService } from \"@/services/utils/unuse/ChangePasswordUtilService\"\n// export type { ChangePasswordUtilServiceProps, ChangePasswordUtilChangeProps } from \"@/services/utils/unuse/ChangePasswordUtilService\"\nexport { AccessKeyUtilService } from \"@/services/utils/AccessKeyUtilService\"\nexport type { AccessKeyUtilServiceProps, AccessKeyUtilValidateProps, AccessKeyUtilAccountOwnerProps } from \"@/services/utils/AccessKeyUtilService\""]}
@@ -47,6 +47,7 @@ let subscribePlanSqlSelect = {
47
47
  [`subplan.${models_1.ModelSubscribePlanFields.short_description}`]: "subscribe_plan_short_description",
48
48
  [`subplan.${models_1.ModelSubscribePlanFields.full_description}`]: "subscribe_plan_full_description",
49
49
  [`subplan.${models_1.ModelSubscribePlanFields.price}::float`]: "subscribe_plan_price",
50
+ [`subplan.${models_1.ModelSubscribePlanFields.is_single_subscription}`]: "subscribe_plan_is_single_subscription",
50
51
  [`subplan.${models_1.ModelSubscribePlanFields.status}`]: "subscribe_plan_status",
51
52
  };
52
53
  let defaultSqlSelect = {
@@ -81,9 +82,29 @@ const AccountSubscribeService = (props) => {
81
82
  throw new Error(`Invalid subscribe plan id: ${subscribePlanId}`);
82
83
  }
83
84
  const subscribePlanBillingCycle = subscribePlan?.billing_cycle;
85
+ const subscribePlanIsSingleSubscription = Boolean(subscribePlan?.is_single_subscription);
84
86
  if (!subscribePlanBillingCycle) {
85
87
  throw new Error(`Invalid subscribe plan billing cycle: ${subscribePlanId}`);
86
88
  }
89
+ // check the plan is single subscription and check its already subscribed
90
+ if (subscribePlanIsSingleSubscription === true) {
91
+ const { data: existSubscriptions } = await listAccountSubscribes({
92
+ limit: 1,
93
+ offset: 0,
94
+ filters: [
95
+ { field: `account_id`, operator: "=", value: `${accountId}` },
96
+ { field: `subscribe_plan_id`, operator: "=", value: `${subscribePlanId}` },
97
+ { field: `status`, operator: "=", value: true },
98
+ ],
99
+ sortfield: `${models_1.ModelAccountSubscribeFields.account_id}`,
100
+ sortorder: "ASC",
101
+ datatypes: []
102
+ });
103
+ // console.log('existSubscriptions', existSubscriptions)
104
+ if (existSubscriptions.length > 0) {
105
+ throw new Error(`This subscribe plan can only be subscribed once per account. Active Subscription Id: ${existSubscriptions[0]?.account_subscription_id}`);
106
+ }
107
+ }
87
108
  // get end of subscription date
88
109
  const subscribeEndDate = subscribePlanService.getNextBillingEndDate(subscribeStartDate, subscribePlanBillingCycle);
89
110
  const _data = getCreatePayload(data, subscribeStartDate, subscribeEndDate);
@@ -1 +1 @@
1
- {"version":3,"file":"AccountSubscribeService.js","sourceRoot":"","sources":["../../../../src/services/subscription/account/AccountSubscribeService.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, throwError } from \"@/utils\";\n\nimport {\n ModelUserFields,\n AccountSubscribeModel,\n ModelAccountSubscribeFields,\n ModelAreaFields,\n ModelStateFields,\n ModelCountryFields,\n ModelSubscribePlanFields,\n} from \"@/models\";\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n\nimport { DefaultServiceProps } from \"@/utils\";\n\nimport { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy } from \"@/lib\";\n\nimport { SubscribePlanBillingCycle, SubscribePlanService } from \"@/services\"\nimport { AccountModel } from \"@/models\"\n\nexport type AccountSubscribeServiceProps = DefaultServiceProps & {};\n\nexport type AccountSubscribeGetProps = QueryGet & {\n accountSubscriptionId: number,\n};\n\nexport type AccountSubscribeListProps = QueryList & {\n};\n\nexport type AccountSubscribeCancelProps = {\n accountSubscriptionId: BigInt\n};\n\nexport type AccountSubscribe = {\n accountId: number\n subscribePlanId: number\n subscribeStartDate?: Date // optional - if no specify will get current\n}\n\nexport type AccountSubscribeCreateProps = {\n data: AccountSubscribe\n}\n\n// export type AccountSubscribeUpdateProps = {\n// subscribePlanId: number,\n// data: AccountSubscribe\n// }\n\nconst getCreatePayload = (\n data: AccountSubscribeCreateProps[\"data\"],\n startDate: Date,\n endDate: Date\n) => {\n\n return {\n [`${ModelAccountSubscribeFields.account_id}`]: data.accountId,\n [`${ModelAccountSubscribeFields.subscribe_plan_id}`]: data.subscribePlanId,\n [`${ModelAccountSubscribeFields.subscription_start_date}`]: startDate,\n [`${ModelAccountSubscribeFields.subscription_end_date}`]: endDate,\n [`${ModelAccountSubscribeFields.status}`]: true // must active\n }\n\n}\n\n// const getUpdatePayload = (data: AccountSubscribeUpdateProps[\"data\"]) => {\n\n// return {\n// [`${ModelAccountSubscribeFields.name}`]: data.name,\n// [`${ModelAccountSubscribeFields.short_description}`]: data.shortDescription,\n// [`${ModelAccountSubscribeFields.full_description}`]: data.fullDescription,\n// [`${ModelAccountSubscribeFields.price}`]: Number(data.price),\n// [`${ModelAccountSubscribeFields.currency}`]: data.currency,\n\n// [`${ModelAccountSubscribeFields.billing_cycle}`]: data.billingCycle,\n// [`${ModelAccountSubscribeFields.status}`]: Boolean(data.status)\n// }\n\n// }\n\nlet mainSqlSelect = {\n [`accsub.${ModelAccountSubscribeFields.account_subscription_id}`]: \"account_subscription_id\",\n [`accsub.${ModelAccountSubscribeFields.account_id}`]: \"account_id\",\n [`accsub.${ModelAccountSubscribeFields.subscribe_plan_id}`]: \"subscribe_plan_id\",\n [`accsub.${ModelAccountSubscribeFields.subscription_start_date}`]: \"subscription_start_date\",\n [`accsub.${ModelAccountSubscribeFields.subscription_end_date}`]: \"subscription_end_date\",\n [`accsub.${ModelAccountSubscribeFields.status}`]: \"status\",\n [`accsub.${ModelAccountSubscribeFields.is_cancel}`]: \"is_cancel\",\n [`accsub.${ModelAccountSubscribeFields.cancel_datetime}`]: \"cancel_datetime\",\n}\n\nlet subscribePlanSqlSelect = {\n [`subplan.${ModelSubscribePlanFields.name}`]: \"subscribe_plan_name\",\n [`subplan.${ModelSubscribePlanFields.billing_cycle}`]: \"subscribe_plan_billing_cycle\",\n [`subplan.${ModelSubscribePlanFields.currency}`]: \"subscribe_plan_currency\",\n [`subplan.${ModelSubscribePlanFields.short_description}`]: \"subscribe_plan_short_description\",\n [`subplan.${ModelSubscribePlanFields.full_description}`]: \"subscribe_plan_full_description\",\n [`subplan.${ModelSubscribePlanFields.price}::float`]: \"subscribe_plan_price\",\n [`subplan.${ModelSubscribePlanFields.status}`]: \"subscribe_plan_status\",\n}\n\nlet defaultSqlSelect = {\n [`accsub.${ModelAccountSubscribeFields.createdatetime}`]: \"createdatetime\",\n [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n [`accsub.${ModelAccountSubscribeFields.updatedatetime}`]: \"updatedatetime\",\n [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n [`accsub.${ModelAccountSubscribeFields.isdelete}`]: \"isdelete\",\n [`accsub.${ModelAccountSubscribeFields.istrash}`]: \"istrash\",\n [`accsub.${ModelAccountSubscribeFields.accountid}`]: \"accountid\",\n}\n\nexport const AccountSubscribeService = (props: AccountSubscribeServiceProps) => {\n\n const {\n ...rest\n } = props\n\n const accountModel = AccountModel({ ...rest, isOperator: true })\n const accountSubscribeModel = AccountSubscribeModel({ ...rest, isOperator: true })\n const subscribePlanService = SubscribePlanService({ ...rest, isOperator: true })\n\n const createAccountSubscribe = async ({ data }: AccountSubscribeCreateProps) => {\n\n const accountId = data.accountId ?? 0\n const subscribePlanId = data.subscribePlanId ?? 0\n const subscribeStartDate = data.subscribeStartDate ?? new Date()\n\n // validate account\n const account = await accountModel.get({ id: Number(accountId) })\n\n if (!account?.account_id) {\n throw new Error(`Invalid account id: ${accountId}`)\n }\n\n if (account?.status !== true) {\n throw new Error(`Account is inactive: ${accountId}`)\n }\n\n // get the subscribe plan information\n const subscribePlan = await subscribePlanService.getSubscribePlan({ id: Number(subscribePlanId), datatypes: [] })\n\n if (!subscribePlan?.subscribe_plan_id) {\n throw new Error(`Invalid subscribe plan id: ${subscribePlanId}`)\n }\n\n const subscribePlanBillingCycle: SubscribePlanBillingCycle = subscribePlan?.billing_cycle\n\n if (!subscribePlanBillingCycle) {\n throw new Error(`Invalid subscribe plan billing cycle: ${subscribePlanId}`)\n }\n\n // get end of subscription date\n const subscribeEndDate = subscribePlanService.getNextBillingEndDate(subscribeStartDate, subscribePlanBillingCycle)\n\n const _data = getCreatePayload(data, subscribeStartDate, subscribeEndDate)\n\n if (!_data) {\n throw new Error(`Invalid create account subscribe payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await accountSubscribeModel.create({ data: _data })\n\n return await getAccountSubscribe({ accountSubscriptionId: Number(response?.account_subscription_id ?? 0), datatypes: [] })\n }\n\n const getAccountSubscribe = async ({ accountSubscriptionId, datatypes = [] }: AccountSubscribeGetProps) => {\n\n let { data } = await listAccountSubscribes({\n limit: 1,\n offset: 0,\n filters: [{ field: `${ModelAccountSubscribeFields.account_subscription_id}`, operator: \"=\", value: accountSubscriptionId }],\n sortfield: `${ModelAccountSubscribeFields.account_subscription_id}`,\n sortorder: \"ASC\",\n datatypes\n })\n\n return data[0] ?? null;\n\n };\n\n const listAccountSubscribes = async ({ limit, offset, filters = [], sortfield, sortorder, datatypes = [] }: AccountSubscribeListProps) => {\n\n let data = []\n\n let sqlSelect = [\n `COUNT(accsub.*) OVER() as filtered_count`,\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, subscribePlanSqlSelect),\n buildSqlSelect(``, defaultSqlSelect)\n ]\n\n let sqlRelation = [\n buildSqlRelation(\"left\", \"subplan\", \"subscribe_plans\", \"subplan\", [\"accsub.subscribe_plan_id = subplan.subscribe_plan_id\", \"subplan.isdelete = false\", \"subplan.istrash = false\"]),\n buildSqlRelation(\"left\", \"subplan\", \"users\", \"creator\", [\"accsub.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n buildSqlRelation(\"left\", \"subplan\", \"users\", \"updater\", [\"accsub.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"])\n ]\n\n let sqlGroupBy: string[] = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(subscribePlanSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...subscribePlanSqlSelect,\n ...defaultSqlSelect\n }\n\n let sqlWhere = [\n `accsub.isdelete = false`,\n `accsub.istrash = false`,\n ...(filters.length ? [buildSqlWhere(filters, filterColumns)?.where] : []),\n ]\n\n let sqlOrderby = buildSqlOrderBy(sortfield, sortorder)\n let sqlLimitOffset = buildSqlLimitOffset(limit, offset)\n\n const sqlRaw = buildSqlRawSelect({\n tableName: \"account_subscriptions\",\n mainAlias: \"accsub\",\n accountId: rest.accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset\n })\n\n data = await accountSubscribeModel.raw(sqlRaw)\n\n const response = {\n data: data.map(({ filtered_count, ...rest }) => rest),\n total: data.length ? Number(data[0].filtered_count) : 0\n }\n\n return response\n\n };\n\n const cancelAccountSubscribe = async ({ accountSubscriptionId }: AccountSubscribeCancelProps) => {\n\n if (!accountSubscriptionId) throwError('accountSubscriptionId is required');\n\n const { total } = await listAccountSubscribes({\n limit: 1,\n offset: 0,\n filters: [\n { field: `${ModelAccountSubscribeFields.account_subscription_id}`, operator: \"=\", value: `${accountSubscriptionId}` },\n { field: `${ModelAccountSubscribeFields.status}`, operator: \"=\", value: true }\n ],\n sortfield: `${ModelAccountSubscribeFields.account_subscription_id}`,\n sortorder: \"ASC\",\n datatypes: []\n })\n\n if (total <= 0) {\n throw new Error(`Invalid subscription id : ${accountSubscriptionId}`)\n }\n\n const response = await accountSubscribeModel.update({\n id: Number(accountSubscriptionId),\n data: {\n [`${ModelAccountSubscribeFields.status}`]: false,\n [`${ModelAccountSubscribeFields.is_cancel}`]: true,\n [`${ModelAccountSubscribeFields.cancel_datetime}`]: new Date()\n },\n where: {\n [`${ModelAccountSubscribeFields.status}`]: true\n }\n });\n\n return response\n };\n\n return {\n getAccountSubscribe,\n createAccountSubscribe,\n cancelAccountSubscribe,\n listAccountSubscribes\n }\n\n}\n\n"]}
1
+ {"version":3,"file":"AccountSubscribeService.js","sourceRoot":"","sources":["../../../../src/services/subscription/account/AccountSubscribeService.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, throwError } from \"@/utils\";\n\nimport {\n ModelUserFields,\n AccountSubscribeModel,\n ModelAccountSubscribeFields,\n ModelAreaFields,\n ModelStateFields,\n ModelCountryFields,\n ModelSubscribePlanFields,\n} from \"@/models\";\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n\nimport { DefaultServiceProps } from \"@/utils\";\n\nimport { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy } from \"@/lib\";\n\nimport { SubscribePlanBillingCycle, SubscribePlanService } from \"@/services\"\nimport { AccountModel } from \"@/models\"\n\nexport type AccountSubscribeServiceProps = DefaultServiceProps & {};\n\nexport type AccountSubscribeGetProps = QueryGet & {\n accountSubscriptionId: number,\n};\n\nexport type AccountSubscribeListProps = QueryList & {\n};\n\nexport type AccountSubscribeCancelProps = {\n accountSubscriptionId: BigInt\n};\n\nexport type AccountSubscribe = {\n accountId: number\n subscribePlanId: number\n subscribeStartDate?: Date // optional - if no specify will get current\n}\n\nexport type AccountSubscribeCreateProps = {\n data: AccountSubscribe\n}\n\n// export type AccountSubscribeUpdateProps = {\n// subscribePlanId: number,\n// data: AccountSubscribe\n// }\n\nconst getCreatePayload = (\n data: AccountSubscribeCreateProps[\"data\"],\n startDate: Date,\n endDate: Date\n) => {\n\n return {\n [`${ModelAccountSubscribeFields.account_id}`]: data.accountId,\n [`${ModelAccountSubscribeFields.subscribe_plan_id}`]: data.subscribePlanId,\n [`${ModelAccountSubscribeFields.subscription_start_date}`]: startDate,\n [`${ModelAccountSubscribeFields.subscription_end_date}`]: endDate,\n [`${ModelAccountSubscribeFields.status}`]: true // must active\n }\n\n}\n\n// const getUpdatePayload = (data: AccountSubscribeUpdateProps[\"data\"]) => {\n\n// return {\n// [`${ModelAccountSubscribeFields.name}`]: data.name,\n// [`${ModelAccountSubscribeFields.short_description}`]: data.shortDescription,\n// [`${ModelAccountSubscribeFields.full_description}`]: data.fullDescription,\n// [`${ModelAccountSubscribeFields.price}`]: Number(data.price),\n// [`${ModelAccountSubscribeFields.currency}`]: data.currency,\n\n// [`${ModelAccountSubscribeFields.billing_cycle}`]: data.billingCycle,\n// [`${ModelAccountSubscribeFields.status}`]: Boolean(data.status)\n// }\n\n// }\n\nlet mainSqlSelect = {\n [`accsub.${ModelAccountSubscribeFields.account_subscription_id}`]: \"account_subscription_id\",\n [`accsub.${ModelAccountSubscribeFields.account_id}`]: \"account_id\",\n [`accsub.${ModelAccountSubscribeFields.subscribe_plan_id}`]: \"subscribe_plan_id\",\n [`accsub.${ModelAccountSubscribeFields.subscription_start_date}`]: \"subscription_start_date\",\n [`accsub.${ModelAccountSubscribeFields.subscription_end_date}`]: \"subscription_end_date\",\n [`accsub.${ModelAccountSubscribeFields.status}`]: \"status\",\n [`accsub.${ModelAccountSubscribeFields.is_cancel}`]: \"is_cancel\",\n [`accsub.${ModelAccountSubscribeFields.cancel_datetime}`]: \"cancel_datetime\",\n}\n\nlet subscribePlanSqlSelect = {\n [`subplan.${ModelSubscribePlanFields.name}`]: \"subscribe_plan_name\",\n [`subplan.${ModelSubscribePlanFields.billing_cycle}`]: \"subscribe_plan_billing_cycle\",\n [`subplan.${ModelSubscribePlanFields.currency}`]: \"subscribe_plan_currency\",\n [`subplan.${ModelSubscribePlanFields.short_description}`]: \"subscribe_plan_short_description\",\n [`subplan.${ModelSubscribePlanFields.full_description}`]: \"subscribe_plan_full_description\",\n [`subplan.${ModelSubscribePlanFields.price}::float`]: \"subscribe_plan_price\",\n [`subplan.${ModelSubscribePlanFields.is_single_subscription}`]: \"subscribe_plan_is_single_subscription\",\n [`subplan.${ModelSubscribePlanFields.status}`]: \"subscribe_plan_status\",\n}\n\nlet defaultSqlSelect = {\n [`accsub.${ModelAccountSubscribeFields.createdatetime}`]: \"createdatetime\",\n [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n [`accsub.${ModelAccountSubscribeFields.updatedatetime}`]: \"updatedatetime\",\n [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n [`accsub.${ModelAccountSubscribeFields.isdelete}`]: \"isdelete\",\n [`accsub.${ModelAccountSubscribeFields.istrash}`]: \"istrash\",\n [`accsub.${ModelAccountSubscribeFields.accountid}`]: \"accountid\",\n}\n\nexport const AccountSubscribeService = (props: AccountSubscribeServiceProps) => {\n\n const {\n ...rest\n } = props\n\n const accountModel = AccountModel({ ...rest, isOperator: true })\n const accountSubscribeModel = AccountSubscribeModel({ ...rest, isOperator: true })\n const subscribePlanService = SubscribePlanService({ ...rest, isOperator: true })\n\n const createAccountSubscribe = async ({ data }: AccountSubscribeCreateProps) => {\n\n const accountId = data.accountId ?? 0\n const subscribePlanId = data.subscribePlanId ?? 0\n const subscribeStartDate = data.subscribeStartDate ?? new Date()\n\n // validate account\n const account = await accountModel.get({ id: Number(accountId) })\n\n if (!account?.account_id) {\n throw new Error(`Invalid account id: ${accountId}`)\n }\n\n if (account?.status !== true) {\n throw new Error(`Account is inactive: ${accountId}`)\n }\n\n // get the subscribe plan information\n const subscribePlan = await subscribePlanService.getSubscribePlan({ id: Number(subscribePlanId), datatypes: [] })\n\n if (!subscribePlan?.subscribe_plan_id) {\n throw new Error(`Invalid subscribe plan id: ${subscribePlanId}`)\n }\n\n const subscribePlanBillingCycle: SubscribePlanBillingCycle = subscribePlan?.billing_cycle\n const subscribePlanIsSingleSubscription = Boolean(subscribePlan?.is_single_subscription)\n\n if (!subscribePlanBillingCycle) {\n throw new Error(`Invalid subscribe plan billing cycle: ${subscribePlanId}`)\n }\n\n // check the plan is single subscription and check its already subscribed\n if (subscribePlanIsSingleSubscription === true) {\n const { data: existSubscriptions } = await listAccountSubscribes({\n limit: 1,\n offset: 0,\n filters: [\n { field: `account_id`, operator: \"=\", value: `${accountId}` },\n { field: `subscribe_plan_id`, operator: \"=\", value: `${subscribePlanId}` },\n { field: `status`, operator: \"=\", value: true },\n ],\n sortfield: `${ModelAccountSubscribeFields.account_id}`,\n sortorder: \"ASC\",\n datatypes: []\n })\n\n // console.log('existSubscriptions', existSubscriptions)\n if (existSubscriptions.length > 0) {\n throw new Error(`This subscribe plan can only be subscribed once per account. Active Subscription Id: ${existSubscriptions[0]?.account_subscription_id}`)\n }\n }\n\n // get end of subscription date\n const subscribeEndDate = subscribePlanService.getNextBillingEndDate(subscribeStartDate, subscribePlanBillingCycle)\n\n const _data = getCreatePayload(data, subscribeStartDate, subscribeEndDate)\n\n if (!_data) {\n throw new Error(`Invalid create account subscribe payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await accountSubscribeModel.create({ data: _data })\n\n return await getAccountSubscribe({ accountSubscriptionId: Number(response?.account_subscription_id ?? 0), datatypes: [] })\n }\n\n const getAccountSubscribe = async ({ accountSubscriptionId, datatypes = [] }: AccountSubscribeGetProps) => {\n\n let { data } = await listAccountSubscribes({\n limit: 1,\n offset: 0,\n filters: [{ field: `${ModelAccountSubscribeFields.account_subscription_id}`, operator: \"=\", value: accountSubscriptionId }],\n sortfield: `${ModelAccountSubscribeFields.account_subscription_id}`,\n sortorder: \"ASC\",\n datatypes\n })\n\n return data[0] ?? null;\n\n };\n\n const listAccountSubscribes = async ({ limit, offset, filters = [], sortfield, sortorder, datatypes = [] }: AccountSubscribeListProps) => {\n\n let data = []\n\n let sqlSelect = [\n `COUNT(accsub.*) OVER() as filtered_count`,\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, subscribePlanSqlSelect),\n buildSqlSelect(``, defaultSqlSelect)\n ]\n\n let sqlRelation = [\n buildSqlRelation(\"left\", \"subplan\", \"subscribe_plans\", \"subplan\", [\"accsub.subscribe_plan_id = subplan.subscribe_plan_id\", \"subplan.isdelete = false\", \"subplan.istrash = false\"]),\n buildSqlRelation(\"left\", \"subplan\", \"users\", \"creator\", [\"accsub.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n buildSqlRelation(\"left\", \"subplan\", \"users\", \"updater\", [\"accsub.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"])\n ]\n\n let sqlGroupBy: string[] = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(subscribePlanSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...subscribePlanSqlSelect,\n ...defaultSqlSelect\n }\n\n let sqlWhere = [\n `accsub.isdelete = false`,\n `accsub.istrash = false`,\n ...(filters.length ? [buildSqlWhere(filters, filterColumns)?.where] : []),\n ]\n\n let sqlOrderby = buildSqlOrderBy(sortfield, sortorder)\n let sqlLimitOffset = buildSqlLimitOffset(limit, offset)\n\n const sqlRaw = buildSqlRawSelect({\n tableName: \"account_subscriptions\",\n mainAlias: \"accsub\",\n accountId: rest.accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset\n })\n\n data = await accountSubscribeModel.raw(sqlRaw)\n\n const response = {\n data: data.map(({ filtered_count, ...rest }) => rest),\n total: data.length ? Number(data[0].filtered_count) : 0\n }\n\n return response\n\n };\n\n const cancelAccountSubscribe = async ({ accountSubscriptionId }: AccountSubscribeCancelProps) => {\n\n if (!accountSubscriptionId) throwError('accountSubscriptionId is required');\n\n const { total } = await listAccountSubscribes({\n limit: 1,\n offset: 0,\n filters: [\n { field: `${ModelAccountSubscribeFields.account_subscription_id}`, operator: \"=\", value: `${accountSubscriptionId}` },\n { field: `${ModelAccountSubscribeFields.status}`, operator: \"=\", value: true }\n ],\n sortfield: `${ModelAccountSubscribeFields.account_subscription_id}`,\n sortorder: \"ASC\",\n datatypes: []\n })\n\n if (total <= 0) {\n throw new Error(`Invalid subscription id : ${accountSubscriptionId}`)\n }\n\n const response = await accountSubscribeModel.update({\n id: Number(accountSubscriptionId),\n data: {\n [`${ModelAccountSubscribeFields.status}`]: false,\n [`${ModelAccountSubscribeFields.is_cancel}`]: true,\n [`${ModelAccountSubscribeFields.cancel_datetime}`]: new Date()\n },\n where: {\n [`${ModelAccountSubscribeFields.status}`]: true\n }\n });\n\n return response\n };\n\n return {\n getAccountSubscribe,\n createAccountSubscribe,\n cancelAccountSubscribe,\n listAccountSubscribes\n }\n\n}\n\n"]}
@@ -25,6 +25,7 @@ export type SubscribePlan = {
25
25
  price: number;
26
26
  billingCycle: SubscribePlanBillingCycle;
27
27
  currency: SubscribePlanCurrency;
28
+ isSingleSubscription: boolean;
28
29
  status: boolean;
29
30
  };
30
31
  export type SubscribePlanCreateProps = {
@@ -54,6 +55,7 @@ export declare const SubscribePlanService: (props: SubscribePlanServiceProps) =>
54
55
  price: import("@prisma/client/runtime/library").Decimal;
55
56
  currency: string;
56
57
  billing_cycle: string;
58
+ is_single_subscription: boolean;
57
59
  }[]>;
58
60
  listSubscribePlans: ({ limit, offset, filters, sortfield, sortorder, datatypes }: SubscribePlanListProps) => Promise<{
59
61
  data: any[];
@@ -20,6 +20,7 @@ const getCreatePayload = (data) => {
20
20
  [`${models_1.ModelSubscribePlanFields.price}`]: Number(data.price),
21
21
  [`${models_1.ModelSubscribePlanFields.currency}`]: data.currency,
22
22
  [`${models_1.ModelSubscribePlanFields.billing_cycle}`]: data.billingCycle,
23
+ [`${models_1.ModelSubscribePlanFields.is_single_subscription}`]: Boolean(data.isSingleSubscription),
23
24
  [`${models_1.ModelSubscribePlanFields.status}`]: Boolean(data.status)
24
25
  };
25
26
  };
@@ -31,6 +32,7 @@ const getUpdatePayload = (data) => {
31
32
  [`${models_1.ModelSubscribePlanFields.price}`]: Number(data.price),
32
33
  [`${models_1.ModelSubscribePlanFields.currency}`]: data.currency,
33
34
  [`${models_1.ModelSubscribePlanFields.billing_cycle}`]: data.billingCycle,
35
+ [`${models_1.ModelSubscribePlanFields.is_single_subscription}`]: Boolean(data.isSingleSubscription),
34
36
  [`${models_1.ModelSubscribePlanFields.status}`]: Boolean(data.status)
35
37
  };
36
38
  };
@@ -41,6 +43,7 @@ let mainSqlSelect = {
41
43
  [`subplan.${models_1.ModelSubscribePlanFields.price}::float`]: "price",
42
44
  [`subplan.${models_1.ModelSubscribePlanFields.billing_cycle}`]: "billing_cycle",
43
45
  [`subplan.${models_1.ModelSubscribePlanFields.currency}`]: "currency",
46
+ [`subplan.${models_1.ModelSubscribePlanFields.is_single_subscription}`]: "is_single_subscription",
44
47
  [`subplan.${models_1.ModelSubscribePlanFields.status}`]: "status"
45
48
  };
46
49
  // let regionSqlSelect = {
@@ -1 +1 @@
1
- {"version":3,"file":"SubscribePlanService.js","sourceRoot":"","sources":["../../../../src/services/subscription/plan/SubscribePlanService.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, throwError } from \"@/utils\";\n\nimport {\n ModelUserFields,\n SubscribePlanModel,\n ModelSubscribePlanFields,\n ModelAreaFields,\n ModelStateFields,\n ModelCountryFields,\n} from \"@/models\";\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n\nimport { DefaultServiceProps } from \"@/utils\";\n\nimport { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy } from \"@/lib\";\n\nexport type SubscribePlanServiceProps = DefaultServiceProps & {};\n\nexport const subscribePlanBillingCycles = {\n monthly: \"monthly\",\n yearly: \"yearly\"\n}\n\nexport type SubscribePlanBillingCycle = keyof typeof subscribePlanBillingCycles\n\nexport const subscribeCurrencies = {\n myr: \"myr\",\n usd: \"usd\"\n}\n\nexport type SubscribePlanCurrency = keyof typeof subscribeCurrencies\n\nexport type SubscribePlanGetProps = QueryGet & {\n id: number,\n};\n\nexport type SubscribePlanListProps = QueryList & {\n};\n\nexport type SubscribePlanRemoveProps = {\n subscribePlanIds: BigInt[]\n};\n\nexport type SubscribePlan = {\n name: string\n shortDescription: string\n fullDescription: string\n price: number\n billingCycle: SubscribePlanBillingCycle;\n currency: SubscribePlanCurrency;\n status: boolean\n}\n\nexport type SubscribePlanCreateProps = {\n data: SubscribePlan\n}\n\nexport type SubscribePlanUpdateProps = {\n subscribePlanId: number,\n data: SubscribePlan\n}\n\nconst getCreatePayload = (data: SubscribePlanCreateProps[\"data\"]) => {\n\n return {\n [`${ModelSubscribePlanFields.name}`]: data.name,\n [`${ModelSubscribePlanFields.short_description}`]: data.shortDescription,\n [`${ModelSubscribePlanFields.full_description}`]: data.fullDescription,\n [`${ModelSubscribePlanFields.price}`]: Number(data.price),\n [`${ModelSubscribePlanFields.currency}`]: data.currency,\n\n [`${ModelSubscribePlanFields.billing_cycle}`]: data.billingCycle,\n [`${ModelSubscribePlanFields.status}`]: Boolean(data.status)\n }\n\n}\n\nconst getUpdatePayload = (data: SubscribePlanUpdateProps[\"data\"]) => {\n\n return {\n [`${ModelSubscribePlanFields.name}`]: data.name,\n [`${ModelSubscribePlanFields.short_description}`]: data.shortDescription,\n [`${ModelSubscribePlanFields.full_description}`]: data.fullDescription,\n [`${ModelSubscribePlanFields.price}`]: Number(data.price),\n [`${ModelSubscribePlanFields.currency}`]: data.currency,\n\n [`${ModelSubscribePlanFields.billing_cycle}`]: data.billingCycle,\n [`${ModelSubscribePlanFields.status}`]: Boolean(data.status)\n }\n\n}\n\nlet mainSqlSelect = {\n [`subplan.${ModelSubscribePlanFields.subscribe_plan_id}`]: \"subscribe_plan_id\",\n [`subplan.${ModelSubscribePlanFields.short_description}`]: \"short_description\",\n [`subplan.${ModelSubscribePlanFields.full_description}`]: \"full_description\",\n [`subplan.${ModelSubscribePlanFields.price}::float`]: \"price\",\n [`subplan.${ModelSubscribePlanFields.billing_cycle}`]: \"billing_cycle\",\n [`subplan.${ModelSubscribePlanFields.currency}`]: \"currency\",\n [`subplan.${ModelSubscribePlanFields.status}`]: \"status\"\n}\n\n// let regionSqlSelect = {\n// [`bussarea.${ModelAreaFields.area_name}`]: \"area_name\",\n// [`bussstate.${ModelStateFields.state_name}`]: \"state_name\",\n// [`busscoun.${ModelCountryFields.country_name}`]: \"country_name\"\n// }\n\nlet defaultSqlSelect = {\n [`subplan.${ModelSubscribePlanFields.createdatetime}`]: \"createdatetime\",\n [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n [`subplan.${ModelSubscribePlanFields.updatedatetime}`]: \"updatedatetime\",\n [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n [`subplan.${ModelSubscribePlanFields.isdelete}`]: \"isdelete\",\n [`subplan.${ModelSubscribePlanFields.istrash}`]: \"istrash\",\n [`subplan.${ModelSubscribePlanFields.accountid}`]: \"accountid\",\n}\n\nexport const SubscribePlanService = (props: SubscribePlanServiceProps) => {\n\n const {\n ...rest\n } = props\n\n const subscribePlanModel = SubscribePlanModel({ ...rest, isOperator: true })\n\n const createSubscribePlan = async ({ data }: SubscribePlanCreateProps) => {\n\n const _data = getCreatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid create subscribe plan payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await subscribePlanModel.create({ data: _data })\n\n return await getSubscribePlan({ id: Number(response?.subscribe_plan_id ?? 0), datatypes: [] })\n }\n\n const updateSubscribePlan = async ({ subscribePlanId, data }: SubscribePlanUpdateProps) => {\n\n const _data = getUpdatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid update subscribe plan payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await subscribePlanModel.update({ where: { [`${ModelSubscribePlanFields.subscribe_plan_id}`]: subscribePlanId }, data: _data })\n\n return await getSubscribePlan({ id: Number(subscribePlanId), datatypes: [] })\n }\n\n const getSubscribePlan = async ({ id, datatypes = [] }: SubscribePlanGetProps) => {\n\n let { data } = await listSubscribePlans({\n limit: 1,\n offset: 0,\n filters: [{ field: `${ModelSubscribePlanFields.subscribe_plan_id}`, operator: \"=\", value: id }],\n sortfield: `${ModelSubscribePlanFields.subscribe_plan_id}`,\n sortorder: \"ASC\",\n datatypes\n })\n\n return data[0] ?? null;\n\n };\n\n const listSubscribePlans = async ({ limit, offset, filters = [], sortfield, sortorder, datatypes = [] }: SubscribePlanListProps) => {\n\n let data = []\n\n let sqlSelect = [\n `COUNT(subplan.*) OVER() as filtered_count`,\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, defaultSqlSelect)\n ]\n\n let sqlRelation = [\n // buildSqlRelation(\"left\", \"buss\", \"states\", \"bussstate\", [\"buss.state_id = bussstate.state_id\", \"bussstate.isdelete = false\", \"bussstate.istrash = false\"]),\n buildSqlRelation(\"left\", \"subplan\", \"users\", \"creator\", [\"subplan.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n buildSqlRelation(\"left\", \"subplan\", \"users\", \"updater\", [\"subplan.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"])\n ]\n\n let sqlGroupBy: string[] = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...defaultSqlSelect\n }\n\n let sqlWhere = [\n `subplan.isdelete = false`,\n `subplan.istrash = false`,\n ...(filters.length ? [buildSqlWhere(filters, filterColumns)?.where] : []),\n ]\n\n let sqlOrderby = buildSqlOrderBy(sortfield, sortorder)\n let sqlLimitOffset = buildSqlLimitOffset(limit, offset)\n\n const sqlRaw = buildSqlRawSelect({\n tableName: \"subscribe_plans\",\n mainAlias: \"subplan\",\n accountId: rest.accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset\n })\n\n data = await subscribePlanModel.raw(sqlRaw)\n\n const response = {\n data: data.map(({ filtered_count, ...rest }) => rest),\n total: data.length ? Number(data[0].filtered_count) : 0\n }\n\n return response\n\n };\n\n const removeSubscribePlans = async ({ subscribePlanIds }: SubscribePlanRemoveProps) => {\n\n if (!subscribePlanIds.length) throwError('subscribePlanIds is required');\n\n const response = await subscribePlanModel.remove({ where: { [`${ModelSubscribePlanFields.subscribe_plan_id}`]: { in: subscribePlanIds } } });\n\n return response\n };\n\n // const getDataTypes = () => {\n // return Object.values(accountDataTypes);\n // }\n\n /**\n * Calculate the next end date based on start date and billing cycle\n * @param startDate - the starting date of the subscription\n * @param cycle - either \"monthly\" or \"yearly\"\n * @returns the next end date as Date\n */\n const getNextBillingEndDate = (\n startDate: Date,\n cycle: SubscribePlanBillingCycle\n ): Date => {\n\n // const date = startDate instanceof Date ? new Date(startDate) : new Date(startDate);\n const date = new Date(startDate.getTime()); // clone to avoid mutating original\n\n switch (cycle) {\n case \"monthly\":\n date.setMonth(date.getMonth() + 1);\n break;\n case \"yearly\":\n date.setFullYear(date.getFullYear() + 1);\n break;\n default:\n throw new Error(`Unknown billing cycle: ${cycle}`);\n }\n\n return date;\n }\n\n return {\n getSubscribePlan,\n createSubscribePlan,\n updateSubscribePlan,\n removeSubscribePlans,\n listSubscribePlans,\n getNextBillingEndDate\n }\n\n}\n\n"]}
1
+ {"version":3,"file":"SubscribePlanService.js","sourceRoot":"","sources":["../../../../src/services/subscription/plan/SubscribePlanService.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, throwError } from \"@/utils\";\n\nimport {\n ModelUserFields,\n SubscribePlanModel,\n ModelSubscribePlanFields,\n ModelAreaFields,\n ModelStateFields,\n ModelCountryFields,\n} from \"@/models\";\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n\nimport { DefaultServiceProps } from \"@/utils\";\n\nimport { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy } from \"@/lib\";\n\nexport type SubscribePlanServiceProps = DefaultServiceProps & {};\n\nexport const subscribePlanBillingCycles = {\n monthly: \"monthly\",\n yearly: \"yearly\"\n}\n\nexport type SubscribePlanBillingCycle = keyof typeof subscribePlanBillingCycles\n\nexport const subscribeCurrencies = {\n myr: \"myr\",\n usd: \"usd\"\n}\n\nexport type SubscribePlanCurrency = keyof typeof subscribeCurrencies\n\nexport type SubscribePlanGetProps = QueryGet & {\n id: number,\n};\n\nexport type SubscribePlanListProps = QueryList & {\n};\n\nexport type SubscribePlanRemoveProps = {\n subscribePlanIds: BigInt[]\n};\n\nexport type SubscribePlan = {\n name: string\n shortDescription: string\n fullDescription: string\n price: number\n billingCycle: SubscribePlanBillingCycle;\n currency: SubscribePlanCurrency;\n isSingleSubscription: boolean;\n status: boolean\n}\n\nexport type SubscribePlanCreateProps = {\n data: SubscribePlan\n}\n\nexport type SubscribePlanUpdateProps = {\n subscribePlanId: number,\n data: SubscribePlan\n}\n\nconst getCreatePayload = (data: SubscribePlanCreateProps[\"data\"]) => {\n\n return {\n [`${ModelSubscribePlanFields.name}`]: data.name,\n [`${ModelSubscribePlanFields.short_description}`]: data.shortDescription,\n [`${ModelSubscribePlanFields.full_description}`]: data.fullDescription,\n [`${ModelSubscribePlanFields.price}`]: Number(data.price),\n [`${ModelSubscribePlanFields.currency}`]: data.currency,\n\n [`${ModelSubscribePlanFields.billing_cycle}`]: data.billingCycle,\n [`${ModelSubscribePlanFields.is_single_subscription}`]: Boolean(data.isSingleSubscription),\n\n [`${ModelSubscribePlanFields.status}`]: Boolean(data.status)\n }\n\n}\n\nconst getUpdatePayload = (data: SubscribePlanUpdateProps[\"data\"]) => {\n\n return {\n [`${ModelSubscribePlanFields.name}`]: data.name,\n [`${ModelSubscribePlanFields.short_description}`]: data.shortDescription,\n [`${ModelSubscribePlanFields.full_description}`]: data.fullDescription,\n [`${ModelSubscribePlanFields.price}`]: Number(data.price),\n [`${ModelSubscribePlanFields.currency}`]: data.currency,\n\n [`${ModelSubscribePlanFields.billing_cycle}`]: data.billingCycle,\n [`${ModelSubscribePlanFields.is_single_subscription}`]: Boolean(data.isSingleSubscription),\n\n [`${ModelSubscribePlanFields.status}`]: Boolean(data.status)\n }\n\n}\n\nlet mainSqlSelect = {\n [`subplan.${ModelSubscribePlanFields.subscribe_plan_id}`]: \"subscribe_plan_id\",\n [`subplan.${ModelSubscribePlanFields.short_description}`]: \"short_description\",\n [`subplan.${ModelSubscribePlanFields.full_description}`]: \"full_description\",\n [`subplan.${ModelSubscribePlanFields.price}::float`]: \"price\",\n [`subplan.${ModelSubscribePlanFields.billing_cycle}`]: \"billing_cycle\",\n [`subplan.${ModelSubscribePlanFields.currency}`]: \"currency\",\n [`subplan.${ModelSubscribePlanFields.is_single_subscription}`]: \"is_single_subscription\",\n [`subplan.${ModelSubscribePlanFields.status}`]: \"status\"\n}\n\n// let regionSqlSelect = {\n// [`bussarea.${ModelAreaFields.area_name}`]: \"area_name\",\n// [`bussstate.${ModelStateFields.state_name}`]: \"state_name\",\n// [`busscoun.${ModelCountryFields.country_name}`]: \"country_name\"\n// }\n\nlet defaultSqlSelect = {\n [`subplan.${ModelSubscribePlanFields.createdatetime}`]: \"createdatetime\",\n [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n [`subplan.${ModelSubscribePlanFields.updatedatetime}`]: \"updatedatetime\",\n [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n [`subplan.${ModelSubscribePlanFields.isdelete}`]: \"isdelete\",\n [`subplan.${ModelSubscribePlanFields.istrash}`]: \"istrash\",\n [`subplan.${ModelSubscribePlanFields.accountid}`]: \"accountid\",\n}\n\nexport const SubscribePlanService = (props: SubscribePlanServiceProps) => {\n\n const {\n ...rest\n } = props\n\n const subscribePlanModel = SubscribePlanModel({ ...rest, isOperator: true })\n\n const createSubscribePlan = async ({ data }: SubscribePlanCreateProps) => {\n\n const _data = getCreatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid create subscribe plan payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await subscribePlanModel.create({ data: _data })\n\n return await getSubscribePlan({ id: Number(response?.subscribe_plan_id ?? 0), datatypes: [] })\n }\n\n const updateSubscribePlan = async ({ subscribePlanId, data }: SubscribePlanUpdateProps) => {\n\n const _data = getUpdatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid update subscribe plan payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await subscribePlanModel.update({ where: { [`${ModelSubscribePlanFields.subscribe_plan_id}`]: subscribePlanId }, data: _data })\n\n return await getSubscribePlan({ id: Number(subscribePlanId), datatypes: [] })\n }\n\n const getSubscribePlan = async ({ id, datatypes = [] }: SubscribePlanGetProps) => {\n\n let { data } = await listSubscribePlans({\n limit: 1,\n offset: 0,\n filters: [{ field: `${ModelSubscribePlanFields.subscribe_plan_id}`, operator: \"=\", value: id }],\n sortfield: `${ModelSubscribePlanFields.subscribe_plan_id}`,\n sortorder: \"ASC\",\n datatypes\n })\n\n return data[0] ?? null;\n\n };\n\n const listSubscribePlans = async ({ limit, offset, filters = [], sortfield, sortorder, datatypes = [] }: SubscribePlanListProps) => {\n\n let data = []\n\n let sqlSelect = [\n `COUNT(subplan.*) OVER() as filtered_count`,\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, defaultSqlSelect)\n ]\n\n let sqlRelation = [\n // buildSqlRelation(\"left\", \"buss\", \"states\", \"bussstate\", [\"buss.state_id = bussstate.state_id\", \"bussstate.isdelete = false\", \"bussstate.istrash = false\"]),\n buildSqlRelation(\"left\", \"subplan\", \"users\", \"creator\", [\"subplan.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n buildSqlRelation(\"left\", \"subplan\", \"users\", \"updater\", [\"subplan.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"])\n ]\n\n let sqlGroupBy: string[] = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...defaultSqlSelect\n }\n\n let sqlWhere = [\n `subplan.isdelete = false`,\n `subplan.istrash = false`,\n ...(filters.length ? [buildSqlWhere(filters, filterColumns)?.where] : []),\n ]\n\n let sqlOrderby = buildSqlOrderBy(sortfield, sortorder)\n let sqlLimitOffset = buildSqlLimitOffset(limit, offset)\n\n const sqlRaw = buildSqlRawSelect({\n tableName: \"subscribe_plans\",\n mainAlias: \"subplan\",\n accountId: rest.accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset\n })\n\n data = await subscribePlanModel.raw(sqlRaw)\n\n const response = {\n data: data.map(({ filtered_count, ...rest }) => rest),\n total: data.length ? Number(data[0].filtered_count) : 0\n }\n\n return response\n\n };\n\n const removeSubscribePlans = async ({ subscribePlanIds }: SubscribePlanRemoveProps) => {\n\n if (!subscribePlanIds.length) throwError('subscribePlanIds is required');\n\n const response = await subscribePlanModel.remove({ where: { [`${ModelSubscribePlanFields.subscribe_plan_id}`]: { in: subscribePlanIds } } });\n\n return response\n };\n\n // const getDataTypes = () => {\n // return Object.values(accountDataTypes);\n // }\n\n /**\n * Calculate the next end date based on start date and billing cycle\n * @param startDate - the starting date of the subscription\n * @param cycle - either \"monthly\" or \"yearly\"\n * @returns the next end date as Date\n */\n const getNextBillingEndDate = (\n startDate: Date,\n cycle: SubscribePlanBillingCycle\n ): Date => {\n\n // const date = startDate instanceof Date ? new Date(startDate) : new Date(startDate);\n const date = new Date(startDate.getTime()); // clone to avoid mutating original\n\n switch (cycle) {\n case \"monthly\":\n date.setMonth(date.getMonth() + 1);\n break;\n case \"yearly\":\n date.setFullYear(date.getFullYear() + 1);\n break;\n default:\n throw new Error(`Unknown billing cycle: ${cycle}`);\n }\n\n return date;\n }\n\n return {\n getSubscribePlan,\n createSubscribePlan,\n updateSubscribePlan,\n removeSubscribePlans,\n listSubscribePlans,\n getNextBillingEndDate\n }\n\n}\n\n"]}
@@ -2,11 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UserMeService = exports.userTypes = void 0;
4
4
  const models_1 = require("../../models");
5
- // import { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, buildInjectionFieldsSqlSelect } from "../../lib";
6
5
  const utils_1 = require("../../utils");
7
- // import { hashPassword } from "../../utils";
8
6
  const lib_1 = require("../../lib");
9
7
  const services_1 = require("../../services");
8
+ const features_1 = require("../../features");
10
9
  exports.userTypes = {
11
10
  operator: "operator",
12
11
  administrator: "administrator",
@@ -49,214 +48,6 @@ const UserMeService = (props) => {
49
48
  const userId = rest.actionUserId;
50
49
  const userService = (0, services_1.UserService)({ ...rest, userType });
51
50
  const userModel = (0, models_1.UserModel)({ ...rest });
52
- // const userModel = UserModel({ ...rest })
53
- // const userPropService = UserPropService({ ...rest, userPropType: "LOCATION_ID" })
54
- // const customerService = CustomerService({ ...rest })
55
- // const administratorService = AdministratorService({ ...rest })
56
- // const operatorService = OperatorService({ ...rest })
57
- // const workerService = WorkerService({ ...rest })
58
- // const driverService = DriverService({ ...rest })
59
- // const retailerService = RetailerService({ ...rest })
60
- // const memberService = MemberService({ ...rest })
61
- // const agentService = AgentService({ ...rest })
62
- // const validateAuthToken = (token: string) => {
63
- // // retrive core configuration
64
- // const coreConfig = getCoreConfiguration()
65
- // // const authSecretKey = config.AUTH_SECRET_KEY
66
- // const authSecretKey = coreConfig.authSecretKey
67
- // // const jwtData = jwt.verify(token, authSecretKey) as AuthJwtToken; // Verify JWT token
68
- // const jwtData = verifyAuthToken(token, authSecretKey); // Verify JWT token
69
- // }
70
- // const validateAuthAccessKey = async (accessKey: string) => {
71
- // const accessKeyUtilService = AccessKeyUtilService({
72
- // accessKeyUserType: "administrator",
73
- // accountId: 0,
74
- // actionUserId: 0,
75
- // actionUserType: "",
76
- // authToken: "",
77
- // isOperator: true,
78
- // })
79
- // const accessKeyData = await accessKeyUtilService.validateAccessKey({ data: { accessKey } });
80
- // }
81
- // const updateMe = async ({ id, data, userType: overrideUserType }: UserMeUpdateProps) => {
82
- // const _userType = overrideUserType || userType
83
- // // validate the credential contact no
84
- // const userLoginUsername = data.user.loginUsername
85
- // const userLoginPassword = data.user?.loginPassword ?? ""
86
- // const userContactCountryCode = data.user.contact.countryCode
87
- // const userContactPhoneNumber = data.user.contact.phoneNumber
88
- // // validate the contact no only can be digit in text only
89
- // // validate the country code in prefix
90
- // // await validateUserContact(userContactCountryCode, userContactPhoneNumber)
91
- // // validate login username
92
- // // validateLoginUsernameFormat(userLoginUsername)
93
- // // validate login password
94
- // // if (userLoginPassword) {
95
- // // validateLoginPasswordFormat(userLoginPassword)
96
- // // }
97
- // // check the username duplicated?
98
- // const checkUsername = await userModel.list({
99
- // limit: 1,
100
- // offset: 0,
101
- // orderBy: {
102
- // [`${ModelUserFields.user_id}`]: "asc"
103
- // },
104
- // include: [],
105
- // where: {
106
- // [`${ModelUserFields.login_username}`]: data.user.loginUsername,
107
- // [`${ModelUserFields.isdelete}`]: false,
108
- // [`${ModelUserFields.istrash}`]: false,
109
- // [`${ModelUserFields.accountid}`]: rest.accountId,
110
- // },
111
- // })
112
- // // console.log('ch', checkUsername)
113
- // if (checkUsername.length > 0) {
114
- // if (Number(checkUsername[0]?.user_id) !== Number(id)) { // if not self user id
115
- // throwError(`Duplicated username: ${data.user.loginUsername}(${checkUsername[0]?.user_type})`)
116
- // }
117
- // }
118
- // // validation before insertion
119
- // // if (_userType === "member" && "member" in data) {
120
- // // }
121
- // const _data = await getUpdatePayload(
122
- // _userType,
123
- // data,
124
- // {
125
- // countryCode: userContactCountryCode,
126
- // phoneNumber: userContactPhoneNumber
127
- // }
128
- // )
129
- // if (!_data) {
130
- // throw new Error(`Invalid update payload: ${JSON.stringify(_data)}`);
131
- // }
132
- // // update user
133
- // let responseUser = await userModel.update({ id, data: _data })
134
- // let updateUserId = responseUser.user_id
135
- // let response: any = {}
136
- // if (_userType === "customer" && "customer" in data) {
137
- // let dataCustomer: CustomerUpdateProps["data"] = {
138
- // customer: {
139
- // ...data.customer
140
- // }
141
- // }
142
- // await customerService.updateCustomer({ userId: Number(updateUserId), data: dataCustomer })
143
- // response = await customerService.getCustomer({ id: Number(updateUserId), datatypes: [] })
144
- // }
145
- // if (_userType === "operator" && "operator" in data) {
146
- // let dataOperator: OperatorUpdateProps["data"] = {
147
- // operator: {
148
- // ...data.operator
149
- // }
150
- // }
151
- // await operatorService.updateOperator({ userId: Number(updateUserId), data: dataOperator })
152
- // response = await operatorService.getOperator({ id: Number(updateUserId), datatypes: [] })
153
- // }
154
- // if (_userType === "administrator" && "administrator" in data) {
155
- // let dataCustomer: AdministratorUpdateProps["data"] = {
156
- // administrator: {
157
- // ...data.administrator
158
- // }
159
- // }
160
- // await administratorService.updateAdministrator({ userId: Number(updateUserId), data: dataCustomer })
161
- // // replace user prop
162
- // await userPropService.replaceUserProp({
163
- // userPropType: "LOCATION_ID",
164
- // data: {
165
- // userProp: {
166
- // userId: Number(updateUserId),
167
- // locationIds: data.props.locationIds
168
- // }
169
- // }
170
- // })
171
- // response = await administratorService.getAdministrator({ id: Number(updateUserId), datatypes: [] })
172
- // }
173
- // if (_userType === "worker" && "worker" in data) {
174
- // let dataWorker: WorkerUpdateProps["data"] = {
175
- // worker: {
176
- // ...data.worker
177
- // }
178
- // }
179
- // await workerService.updateWorker({ userId: Number(updateUserId), data: dataWorker })
180
- // // replace user prop
181
- // await userPropService.replaceUserProp({
182
- // userPropType: "LOCATION_ID",
183
- // data: {
184
- // userProp: {
185
- // userId: Number(updateUserId),
186
- // locationIds: data.props.locationIds
187
- // }
188
- // }
189
- // })
190
- // response = await workerService.getWorker({ id: Number(updateUserId), datatypes: [] })
191
- // }
192
- // if (_userType === "driver" && "driver" in data) {
193
- // let dataDriver: DriverUpdateProps["data"] = {
194
- // driver: {
195
- // ...data.driver
196
- // }
197
- // }
198
- // await driverService.updateDriver({ userId: Number(updateUserId), data: dataDriver })
199
- // // replace user prop
200
- // await userPropService.replaceUserProp({
201
- // userPropType: "LOCATION_ID",
202
- // data: {
203
- // userProp: {
204
- // userId: Number(updateUserId),
205
- // locationIds: data.props.locationIds
206
- // }
207
- // }
208
- // })
209
- // response = await driverService.getDriver({ id: Number(updateUserId), datatypes: [] })
210
- // }
211
- // if (_userType === "member" && "member" in data) {
212
- // let dataMember: MemberUpdateProps["data"] = {
213
- // member: {
214
- // ...data.member
215
- // }
216
- // }
217
- // await memberService.updateMember({ userId: Number(updateUserId), data: dataMember })
218
- // // replace user prop
219
- // // await userPropService.replaceUserProp({
220
- // // userPropType: "LOCATION_ID",
221
- // // data: {
222
- // // userProp: {
223
- // // userId: Number(updateUserId),
224
- // // locationIds: data.props.locationIds
225
- // // }
226
- // // }
227
- // // })
228
- // response = await memberService.getUserMember({ id: Number(updateUserId), datatypes: [] })
229
- // }
230
- // if (_userType === "agent" && "agent" in data) {
231
- // let dataAgent: AgentUpdateProps["data"] = {
232
- // agent: {
233
- // ...data.agent
234
- // }
235
- // }
236
- // await agentService.updateAgent({ userId: Number(updateUserId), data: dataAgent })
237
- // // replace user prop
238
- // // await userPropService.replaceUserProp({
239
- // // userPropType: "LOCATION_ID",
240
- // // data: {
241
- // // userProp: {
242
- // // userId: Number(updateUserId),
243
- // // locationIds: data.props.locationIds
244
- // // }
245
- // // }
246
- // // })
247
- // response = await agentService.getAgent({ id: Number(updateUserId), datatypes: [] })
248
- // }
249
- // if (_userType === "retailer" && "retailer" in data) {
250
- // let dataRetailer: RetailerUpdateProps["data"] = {
251
- // retailer: {
252
- // ...data.retailer
253
- // }
254
- // }
255
- // await retailerService.updateRetailer({ userId: Number(updateUserId), data: dataRetailer })
256
- // response = await retailerService.getRetailer({ id: Number(updateUserId), datatypes: [] })
257
- // }
258
- // return response
259
- // }
260
51
  const getUserMe = async () => {
261
52
  const id = userId;
262
53
  const data = await userService.getUser({ id: userId, datatypes: [] });
@@ -278,10 +69,24 @@ const UserMeService = (props) => {
278
69
  [`${models_1.ModelUserFields.address}`]: address,
279
70
  }
280
71
  });
281
- return await userService.getUser({ id: Number(userId), datatypes: [] });
72
+ const userMe = await userService.getUser({ id: Number(userId), datatypes: [] });
73
+ // Call the consumer hook, if success
74
+ if (features_1.UserMeHook.onSuccessUpdateMe) {
75
+ await features_1.UserMeHook.onSuccessUpdateMe({
76
+ userMe
77
+ });
78
+ }
79
+ return userMe;
282
80
  };
283
81
  const removeUserMe = async () => {
82
+ const currentMe = await userService.getUser({ id: Number(userId), datatypes: [] });
284
83
  const response = await userService.suspendUsers({ ids: [BigInt(userId)] });
84
+ // Call the consumer hook, if remove
85
+ if (features_1.UserMeHook.onSuccessRemoveMe) {
86
+ await features_1.UserMeHook.onSuccessRemoveMe({
87
+ userMe: currentMe
88
+ });
89
+ }
285
90
  return response;
286
91
  };
287
92
  const changePasswordUserMe = async ({ currentPassword, confirmPassword, newPassword }) => {
@@ -327,6 +132,14 @@ const UserMeService = (props) => {
327
132
  },
328
133
  isOperator: Boolean(userType === "operator")
329
134
  });
135
+ // Call the consumer hook, if change password
136
+ if (features_1.UserMeHook.onSuccessChangePasswordMe) {
137
+ // remove the password
138
+ delete user.password;
139
+ await features_1.UserMeHook.onSuccessChangePasswordMe({
140
+ userMe: user
141
+ });
142
+ }
330
143
  return responseUser;
331
144
  };
332
145
  const allowUserTypes = ["any"];