storemw-core-api 1.0.143 → 1.0.145
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.
- package/dist/app.js +1 -0
- package/dist/app.js.map +1 -1
- package/dist/controllers/index.d.ts +2 -0
- package/dist/controllers/index.js +13 -2
- package/dist/controllers/index.js.map +1 -1
- package/dist/controllers/subscription/account/accountSubscribeController.d.ts +9 -0
- package/dist/controllers/subscription/account/accountSubscribeController.js +105 -0
- package/dist/controllers/subscription/account/accountSubscribeController.js.map +1 -0
- package/dist/controllers/subscription/plan/subscribePlanController.d.ts +11 -0
- package/dist/controllers/subscription/plan/subscribePlanController.js +167 -0
- package/dist/controllers/subscription/plan/subscribePlanController.js.map +1 -0
- package/dist/features/auth_token/authTokenRegister.d.ts +5 -0
- package/dist/features/auth_token/authTokenRegister.js +11 -0
- package/dist/features/auth_token/authTokenRegister.js.map +1 -0
- package/dist/features/auth_token/authTokenRegistry.d.ts +2 -0
- package/dist/features/auth_token/authTokenRegistry.js +16 -0
- package/dist/features/auth_token/authTokenRegistry.js.map +1 -0
- package/dist/features/auth_token/authTokenType.d.ts +5 -0
- package/dist/features/auth_token/authTokenType.js +3 -0
- package/dist/features/auth_token/authTokenType.js.map +1 -0
- package/dist/features/index.d.ts +3 -0
- package/dist/features/index.js +5 -1
- package/dist/features/index.js.map +1 -1
- package/dist/middlewares/route/index.d.ts +2 -0
- package/dist/middlewares/route/index.js +13 -2
- package/dist/middlewares/route/index.js.map +1 -1
- package/dist/middlewares/route/validateSubscriptionAccount.d.ts +5 -0
- package/dist/middlewares/route/validateSubscriptionAccount.js +20 -0
- package/dist/middlewares/route/validateSubscriptionAccount.js.map +1 -0
- package/dist/middlewares/route/validateSubscriptionPlan.d.ts +6 -0
- package/dist/middlewares/route/validateSubscriptionPlan.js +24 -0
- package/dist/middlewares/route/validateSubscriptionPlan.js.map +1 -0
- package/dist/models/index.d.ts +5 -1
- package/dist/models/index.js +8 -2
- package/dist/models/index.js.map +1 -1
- package/dist/models/subscription/account/AccountSubscribeModel.d.ts +257 -0
- package/dist/models/subscription/account/AccountSubscribeModel.js +13 -0
- package/dist/models/subscription/account/AccountSubscribeModel.js.map +1 -0
- package/dist/models/subscription/plan/SubscribePlanModel.d.ts +268 -0
- package/dist/models/subscription/plan/SubscribePlanModel.js +13 -0
- package/dist/models/subscription/plan/SubscribePlanModel.js.map +1 -0
- package/dist/routes/index.d.ts +1 -0
- package/dist/routes/index.js +3 -1
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/subscription/subscriptionsAccountRoutes.d.ts +2 -0
- package/dist/routes/subscription/subscriptionsAccountRoutes.js +15 -0
- package/dist/routes/subscription/subscriptionsAccountRoutes.js.map +1 -0
- package/dist/routes/subscription/subscriptionsAccountsRoutes.d.ts +2 -0
- package/dist/routes/subscription/subscriptionsAccountsRoutes.js +11 -0
- package/dist/routes/subscription/subscriptionsAccountsRoutes.js.map +1 -0
- package/dist/routes/subscription/subscriptionsPlanRoutes.d.ts +2 -0
- package/dist/routes/subscription/subscriptionsPlanRoutes.js +15 -0
- package/dist/routes/subscription/subscriptionsPlanRoutes.js.map +1 -0
- package/dist/routes/subscription/subscriptionsPlansRoutes.d.ts +2 -0
- package/dist/routes/subscription/subscriptionsPlansRoutes.js +13 -0
- package/dist/routes/subscription/subscriptionsPlansRoutes.js.map +1 -0
- package/dist/routes/subscription/subscriptionsRoutes.d.ts +2 -0
- package/dist/routes/subscription/subscriptionsRoutes.js +17 -0
- package/dist/routes/subscription/subscriptionsRoutes.js.map +1 -0
- package/dist/schema/middleware/route/index.d.ts +4 -0
- package/dist/schema/middleware/route/index.js +5 -1
- package/dist/schema/middleware/route/index.js.map +1 -1
- package/dist/schema/middleware/route/schemaSubscriptionAccount.d.ts +4 -0
- package/dist/schema/middleware/route/schemaSubscriptionAccount.js +10 -0
- package/dist/schema/middleware/route/schemaSubscriptionAccount.js.map +1 -0
- package/dist/schema/middleware/route/schemaSubscriptionPlan.d.ts +4 -0
- package/dist/schema/middleware/route/schemaSubscriptionPlan.js +10 -0
- package/dist/schema/middleware/route/schemaSubscriptionPlan.js.map +1 -0
- package/dist/schema/payload/index.d.ts +4 -0
- package/dist/schema/payload/index.js +9 -2
- package/dist/schema/payload/index.js.map +1 -1
- package/dist/schema/payload/subscription/schemaAccountSubscribe.d.ts +126 -0
- package/dist/schema/payload/subscription/schemaAccountSubscribe.js +31 -0
- package/dist/schema/payload/subscription/schemaAccountSubscribe.js.map +1 -0
- package/dist/schema/payload/subscription/schemaSubscribePlan.d.ts +276 -0
- package/dist/schema/payload/subscription/schemaSubscribePlan.js +42 -0
- package/dist/schema/payload/subscription/schemaSubscribePlan.js.map +1 -0
- package/dist/services/auth/AuthService.d.ts +8 -7
- package/dist/services/auth/AuthService.js +6 -1
- package/dist/services/auth/AuthService.js.map +1 -1
- package/dist/services/index.d.ts +6 -2
- package/dist/services/index.js +7 -1
- package/dist/services/index.js.map +1 -1
- package/dist/services/others/NumberDateSequenceService.d.ts +1 -1
- package/dist/services/subscription/account/AccountSubscribeService.d.ts +43 -0
- package/dist/services/subscription/account/AccountSubscribeService.js +214 -0
- package/dist/services/subscription/account/AccountSubscribeService.js.map +1 -0
- package/dist/services/subscription/plan/SubscribePlanService.d.ts +65 -0
- package/dist/services/subscription/plan/SubscribePlanService.js +178 -0
- package/dist/services/subscription/plan/SubscribePlanService.js.map +1 -0
- package/package.json +11 -11
- package/prisma/schema.prisma +41 -0
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SubscribePlanService = exports.subscribeCurrencies = exports.subscribePlanBillingCycles = void 0;
|
|
4
|
+
const utils_1 = require("../../../utils");
|
|
5
|
+
const models_1 = require("../../../models");
|
|
6
|
+
const lib_1 = require("../../../lib");
|
|
7
|
+
exports.subscribePlanBillingCycles = {
|
|
8
|
+
monthly: "monthly",
|
|
9
|
+
yearly: "yearly"
|
|
10
|
+
};
|
|
11
|
+
exports.subscribeCurrencies = {
|
|
12
|
+
myr: "myr",
|
|
13
|
+
usd: "usd"
|
|
14
|
+
};
|
|
15
|
+
const getCreatePayload = (data) => {
|
|
16
|
+
return {
|
|
17
|
+
[`${models_1.ModelSubscribePlanFields.name}`]: data.name,
|
|
18
|
+
[`${models_1.ModelSubscribePlanFields.short_description}`]: data.shortDescription,
|
|
19
|
+
[`${models_1.ModelSubscribePlanFields.full_description}`]: data.fullDescription,
|
|
20
|
+
[`${models_1.ModelSubscribePlanFields.price}`]: Number(data.price),
|
|
21
|
+
[`${models_1.ModelSubscribePlanFields.currency}`]: data.currency,
|
|
22
|
+
[`${models_1.ModelSubscribePlanFields.billing_cycle}`]: data.billingCycle,
|
|
23
|
+
[`${models_1.ModelSubscribePlanFields.is_single_subscription}`]: Boolean(data.isSingleSubscription),
|
|
24
|
+
[`${models_1.ModelSubscribePlanFields.status}`]: Boolean(data.status)
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
const getUpdatePayload = (data) => {
|
|
28
|
+
return {
|
|
29
|
+
[`${models_1.ModelSubscribePlanFields.name}`]: data.name,
|
|
30
|
+
[`${models_1.ModelSubscribePlanFields.short_description}`]: data.shortDescription,
|
|
31
|
+
[`${models_1.ModelSubscribePlanFields.full_description}`]: data.fullDescription,
|
|
32
|
+
[`${models_1.ModelSubscribePlanFields.price}`]: Number(data.price),
|
|
33
|
+
[`${models_1.ModelSubscribePlanFields.currency}`]: data.currency,
|
|
34
|
+
[`${models_1.ModelSubscribePlanFields.billing_cycle}`]: data.billingCycle,
|
|
35
|
+
[`${models_1.ModelSubscribePlanFields.is_single_subscription}`]: Boolean(data.isSingleSubscription),
|
|
36
|
+
[`${models_1.ModelSubscribePlanFields.status}`]: Boolean(data.status)
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
let mainSqlSelect = {
|
|
40
|
+
[`subplan.${models_1.ModelSubscribePlanFields.subscribe_plan_id}`]: "subscribe_plan_id",
|
|
41
|
+
[`subplan.${models_1.ModelSubscribePlanFields.short_description}`]: "short_description",
|
|
42
|
+
[`subplan.${models_1.ModelSubscribePlanFields.full_description}`]: "full_description",
|
|
43
|
+
[`subplan.${models_1.ModelSubscribePlanFields.price}::float`]: "price",
|
|
44
|
+
[`subplan.${models_1.ModelSubscribePlanFields.billing_cycle}`]: "billing_cycle",
|
|
45
|
+
[`subplan.${models_1.ModelSubscribePlanFields.currency}`]: "currency",
|
|
46
|
+
[`subplan.${models_1.ModelSubscribePlanFields.is_single_subscription}`]: "is_single_subscription",
|
|
47
|
+
[`subplan.${models_1.ModelSubscribePlanFields.status}`]: "status"
|
|
48
|
+
};
|
|
49
|
+
// let regionSqlSelect = {
|
|
50
|
+
// [`bussarea.${ModelAreaFields.area_name}`]: "area_name",
|
|
51
|
+
// [`bussstate.${ModelStateFields.state_name}`]: "state_name",
|
|
52
|
+
// [`busscoun.${ModelCountryFields.country_name}`]: "country_name"
|
|
53
|
+
// }
|
|
54
|
+
let defaultSqlSelect = {
|
|
55
|
+
[`subplan.${models_1.ModelSubscribePlanFields.createdatetime}`]: "createdatetime",
|
|
56
|
+
[`creator.${models_1.ModelUserFields.login_username}`]: "createusername",
|
|
57
|
+
[`subplan.${models_1.ModelSubscribePlanFields.updatedatetime}`]: "updatedatetime",
|
|
58
|
+
[`updater.${models_1.ModelUserFields.login_username}`]: "updateusername",
|
|
59
|
+
[`subplan.${models_1.ModelSubscribePlanFields.isdelete}`]: "isdelete",
|
|
60
|
+
[`subplan.${models_1.ModelSubscribePlanFields.istrash}`]: "istrash",
|
|
61
|
+
[`subplan.${models_1.ModelSubscribePlanFields.accountid}`]: "accountid",
|
|
62
|
+
};
|
|
63
|
+
const SubscribePlanService = (props) => {
|
|
64
|
+
const { ...rest } = props;
|
|
65
|
+
const subscribePlanModel = (0, models_1.SubscribePlanModel)({ ...rest, isOperator: true });
|
|
66
|
+
const createSubscribePlan = async ({ data }) => {
|
|
67
|
+
const _data = getCreatePayload(data);
|
|
68
|
+
if (!_data) {
|
|
69
|
+
throw new Error(`Invalid create subscribe plan payload: ${JSON.stringify(_data)}`);
|
|
70
|
+
}
|
|
71
|
+
let response = await subscribePlanModel.create({ data: _data });
|
|
72
|
+
return await getSubscribePlan({ id: Number(response?.subscribe_plan_id ?? 0), datatypes: [] });
|
|
73
|
+
};
|
|
74
|
+
const updateSubscribePlan = async ({ subscribePlanId, data }) => {
|
|
75
|
+
const _data = getUpdatePayload(data);
|
|
76
|
+
if (!_data) {
|
|
77
|
+
throw new Error(`Invalid update subscribe plan payload: ${JSON.stringify(_data)}`);
|
|
78
|
+
}
|
|
79
|
+
let response = await subscribePlanModel.update({ where: { [`${models_1.ModelSubscribePlanFields.subscribe_plan_id}`]: subscribePlanId }, data: _data });
|
|
80
|
+
return await getSubscribePlan({ id: Number(subscribePlanId), datatypes: [] });
|
|
81
|
+
};
|
|
82
|
+
const getSubscribePlan = async ({ id, datatypes = [] }) => {
|
|
83
|
+
let { data } = await listSubscribePlans({
|
|
84
|
+
limit: 1,
|
|
85
|
+
offset: 0,
|
|
86
|
+
filters: [{ field: `${models_1.ModelSubscribePlanFields.subscribe_plan_id}`, operator: "=", value: id }],
|
|
87
|
+
sortfield: `${models_1.ModelSubscribePlanFields.subscribe_plan_id}`,
|
|
88
|
+
sortorder: "ASC",
|
|
89
|
+
datatypes
|
|
90
|
+
});
|
|
91
|
+
return data[0] ?? null;
|
|
92
|
+
};
|
|
93
|
+
const listSubscribePlans = async ({ limit, offset, filters = [], sortfield, sortorder, datatypes = [] }) => {
|
|
94
|
+
let data = [];
|
|
95
|
+
let sqlSelect = [
|
|
96
|
+
`COUNT(subplan.*) OVER() as filtered_count`,
|
|
97
|
+
(0, lib_1.buildSqlSelect)(``, mainSqlSelect),
|
|
98
|
+
(0, lib_1.buildSqlSelect)(``, defaultSqlSelect)
|
|
99
|
+
];
|
|
100
|
+
let sqlRelation = [
|
|
101
|
+
// buildSqlRelation("left", "buss", "states", "bussstate", ["buss.state_id = bussstate.state_id", "bussstate.isdelete = false", "bussstate.istrash = false"]),
|
|
102
|
+
(0, lib_1.buildSqlRelation)("left", "subplan", "users", "creator", ["subplan.createuserid = creator.user_id", "creator.isdelete = false", "creator.istrash = false"]),
|
|
103
|
+
(0, lib_1.buildSqlRelation)("left", "subplan", "users", "updater", ["subplan.updateuserid = updater.user_id", "updater.isdelete = false", "updater.istrash = false"])
|
|
104
|
+
];
|
|
105
|
+
let sqlGroupBy = [
|
|
106
|
+
...Object.keys(mainSqlSelect),
|
|
107
|
+
...Object.keys(defaultSqlSelect)
|
|
108
|
+
];
|
|
109
|
+
let filterColumns = {
|
|
110
|
+
...mainSqlSelect,
|
|
111
|
+
...defaultSqlSelect
|
|
112
|
+
};
|
|
113
|
+
let sqlWhere = [
|
|
114
|
+
`subplan.isdelete = false`,
|
|
115
|
+
`subplan.istrash = false`,
|
|
116
|
+
...(filters.length ? [(0, lib_1.buildSqlWhere)(filters, filterColumns)?.where] : []),
|
|
117
|
+
];
|
|
118
|
+
let sqlOrderby = (0, lib_1.buildSqlOrderBy)(sortfield, sortorder);
|
|
119
|
+
let sqlLimitOffset = (0, lib_1.buildSqlLimitOffset)(limit, offset);
|
|
120
|
+
const sqlRaw = (0, lib_1.buildSqlRawSelect)({
|
|
121
|
+
tableName: "subscribe_plans",
|
|
122
|
+
mainAlias: "subplan",
|
|
123
|
+
accountId: rest.accountId,
|
|
124
|
+
sqlSelect,
|
|
125
|
+
sqlRelation,
|
|
126
|
+
sqlWhere,
|
|
127
|
+
sqlGroupBy,
|
|
128
|
+
sqlOrderby,
|
|
129
|
+
sqlLimitOffset
|
|
130
|
+
});
|
|
131
|
+
data = await subscribePlanModel.raw(sqlRaw);
|
|
132
|
+
const response = {
|
|
133
|
+
data: data.map(({ filtered_count, ...rest }) => rest),
|
|
134
|
+
total: data.length ? Number(data[0].filtered_count) : 0
|
|
135
|
+
};
|
|
136
|
+
return response;
|
|
137
|
+
};
|
|
138
|
+
const removeSubscribePlans = async ({ subscribePlanIds }) => {
|
|
139
|
+
if (!subscribePlanIds.length)
|
|
140
|
+
(0, utils_1.throwError)('subscribePlanIds is required');
|
|
141
|
+
const response = await subscribePlanModel.remove({ where: { [`${models_1.ModelSubscribePlanFields.subscribe_plan_id}`]: { in: subscribePlanIds } } });
|
|
142
|
+
return response;
|
|
143
|
+
};
|
|
144
|
+
// const getDataTypes = () => {
|
|
145
|
+
// return Object.values(accountDataTypes);
|
|
146
|
+
// }
|
|
147
|
+
/**
|
|
148
|
+
* Calculate the next end date based on start date and billing cycle
|
|
149
|
+
* @param startDate - the starting date of the subscription
|
|
150
|
+
* @param cycle - either "monthly" or "yearly"
|
|
151
|
+
* @returns the next end date as Date
|
|
152
|
+
*/
|
|
153
|
+
const getNextBillingEndDate = (startDate, cycle) => {
|
|
154
|
+
// const date = startDate instanceof Date ? new Date(startDate) : new Date(startDate);
|
|
155
|
+
const date = new Date(startDate.getTime()); // clone to avoid mutating original
|
|
156
|
+
switch (cycle) {
|
|
157
|
+
case "monthly":
|
|
158
|
+
date.setMonth(date.getMonth() + 1);
|
|
159
|
+
break;
|
|
160
|
+
case "yearly":
|
|
161
|
+
date.setFullYear(date.getFullYear() + 1);
|
|
162
|
+
break;
|
|
163
|
+
default:
|
|
164
|
+
throw new Error(`Unknown billing cycle: ${cycle}`);
|
|
165
|
+
}
|
|
166
|
+
return date;
|
|
167
|
+
};
|
|
168
|
+
return {
|
|
169
|
+
getSubscribePlan,
|
|
170
|
+
createSubscribePlan,
|
|
171
|
+
updateSubscribePlan,
|
|
172
|
+
removeSubscribePlans,
|
|
173
|
+
listSubscribePlans,
|
|
174
|
+
getNextBillingEndDate
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
exports.SubscribePlanService = SubscribePlanService;
|
|
178
|
+
//# sourceMappingURL=SubscribePlanService.js.map
|
|
@@ -0,0 +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 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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "storemw-core-api",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.145",
|
|
4
4
|
"description": "STOREMW Core API",
|
|
5
5
|
"main": "dist/app.js",
|
|
6
6
|
"types": "dist/app.d.ts",
|
|
@@ -119,9 +119,6 @@
|
|
|
119
119
|
"author": "",
|
|
120
120
|
"license": "ISC",
|
|
121
121
|
"dependencies": {
|
|
122
|
-
"@types/jsonwebtoken": "^9.0.9",
|
|
123
|
-
"@types/pg": "^8.11.11",
|
|
124
|
-
"@types/uuid": "^10.0.0",
|
|
125
122
|
"axios": "^1.8.4",
|
|
126
123
|
"basic-auth": "^2.0.1",
|
|
127
124
|
"bcrypt": "^6.0.0",
|
|
@@ -133,24 +130,22 @@
|
|
|
133
130
|
"jsonwebtoken": "^9.0.2",
|
|
134
131
|
"lodash": "^4.17.21",
|
|
135
132
|
"multer": "^2.0.2",
|
|
136
|
-
"nodemailer-express-handlebars": "^7.0.0",
|
|
137
133
|
"path-to-regexp": "^8.3.0",
|
|
138
134
|
"pg": "^8.14.1",
|
|
139
135
|
"pino": "^9.6.0",
|
|
140
136
|
"pino-pretty": "^13.0.0",
|
|
141
137
|
"rotating-file-stream": "^3.2.7",
|
|
142
|
-
"sharp": "^0.34.4",
|
|
143
|
-
"tmp-promise": "^3.0.3",
|
|
144
|
-
"uuid": "^11.1.0",
|
|
145
138
|
"zod": "^3.24.2"
|
|
146
139
|
},
|
|
147
140
|
"peerDependencies": {
|
|
148
141
|
"@prisma/client": "^6.16.3",
|
|
149
142
|
"@types/express": "^4.17.21",
|
|
150
|
-
"express": "^4.21.2"
|
|
151
|
-
"nodemailer": "^6.10.1"
|
|
143
|
+
"express": "^4.21.2"
|
|
152
144
|
},
|
|
153
145
|
"devDependencies": {
|
|
146
|
+
"@types/jsonwebtoken": "^9.0.9",
|
|
147
|
+
"@types/pg": "^8.11.11",
|
|
148
|
+
"@types/uuid": "^10.0.0",
|
|
154
149
|
"@types/basic-auth": "^1.1.8",
|
|
155
150
|
"@types/bcrypt": "^6.0.0",
|
|
156
151
|
"@types/cors": "^2.8.17",
|
|
@@ -172,11 +167,16 @@
|
|
|
172
167
|
"typescript": "^5.8.2"
|
|
173
168
|
},
|
|
174
169
|
"optionalDependencies": {
|
|
170
|
+
"nodemailer": "^6.10.1",
|
|
171
|
+
"nodemailer-express-handlebars": "^7.0.0",
|
|
175
172
|
"@aws-sdk/client-s3": "^3.1000.0",
|
|
176
173
|
"@aws-sdk/s3-request-presigner": "^3.1000.0",
|
|
177
174
|
"@google-cloud/storage": "^7.17.2",
|
|
175
|
+
"sharp": "^0.34.4",
|
|
176
|
+
"tmp-promise": "^3.0.3",
|
|
178
177
|
"ffmpeg-static": "^5.2.0",
|
|
179
178
|
"ffprobe-static": "^3.1.0",
|
|
180
|
-
"fluent-ffmpeg": "^2.1.3"
|
|
179
|
+
"fluent-ffmpeg": "^2.1.3",
|
|
180
|
+
"uuid": "^11.1.0"
|
|
181
181
|
}
|
|
182
182
|
}
|
package/prisma/schema.prisma
CHANGED
|
@@ -2845,3 +2845,44 @@ model agents {
|
|
|
2845
2845
|
|
|
2846
2846
|
@@schema("public")
|
|
2847
2847
|
}
|
|
2848
|
+
|
|
2849
|
+
model subscribe_plans {
|
|
2850
|
+
subscribe_plan_id BigInt @id(map: "subscribe_plan_pkey") @default(autoincrement())
|
|
2851
|
+
createdatetime DateTime? @db.Timestamptz(6)
|
|
2852
|
+
createuserid BigInt @default(0)
|
|
2853
|
+
updatedatetime DateTime? @db.Timestamptz(6)
|
|
2854
|
+
updateuserid BigInt @default(0)
|
|
2855
|
+
isdelete Boolean? @default(false)
|
|
2856
|
+
istrash Boolean? @default(false)
|
|
2857
|
+
accountid BigInt @default(0)
|
|
2858
|
+
name String @db.VarChar(100)
|
|
2859
|
+
short_description String? @db.VarChar(255)
|
|
2860
|
+
full_description String?
|
|
2861
|
+
price Decimal @db.Decimal(10, 2)
|
|
2862
|
+
currency String @default("MYR") @db.Char(3)
|
|
2863
|
+
billing_cycle String @db.VarChar(20)
|
|
2864
|
+
status Boolean? @default(false)
|
|
2865
|
+
is_single_subscription Boolean @default(true)
|
|
2866
|
+
|
|
2867
|
+
@@schema("public")
|
|
2868
|
+
}
|
|
2869
|
+
|
|
2870
|
+
model account_subscriptions {
|
|
2871
|
+
account_subscription_id BigInt @id @default(autoincrement())
|
|
2872
|
+
createdatetime DateTime? @db.Timestamptz(6)
|
|
2873
|
+
createuserid BigInt @default(0)
|
|
2874
|
+
updatedatetime DateTime? @db.Timestamptz(6)
|
|
2875
|
+
updateuserid BigInt @default(0)
|
|
2876
|
+
isdelete Boolean? @default(false)
|
|
2877
|
+
istrash Boolean? @default(false)
|
|
2878
|
+
accountid BigInt @default(0)
|
|
2879
|
+
account_id BigInt @default(0)
|
|
2880
|
+
subscribe_plan_id BigInt @default(0)
|
|
2881
|
+
status Boolean? @default(false)
|
|
2882
|
+
subscription_start_date DateTime? @db.Timestamptz(6)
|
|
2883
|
+
subscription_end_date DateTime? @db.Timestamptz(6)
|
|
2884
|
+
is_cancel Boolean? @default(false)
|
|
2885
|
+
cancel_datetime DateTime? @db.Timestamptz(6)
|
|
2886
|
+
|
|
2887
|
+
@@schema("public")
|
|
2888
|
+
}
|