storemw-core-api 1.0.144 → 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/controllers/subscription/plan/subscribePlanController.js +4 -0
- package/dist/controllers/subscription/plan/subscribePlanController.js.map +1 -1
- package/dist/models/subscription/plan/SubscribePlanModel.d.ts +13 -2
- package/dist/schema/payload/subscription/schemaSubscribePlan.d.ts +17 -0
- package/dist/schema/payload/subscription/schemaSubscribePlan.js +1 -0
- package/dist/schema/payload/subscription/schemaSubscribePlan.js.map +1 -1
- package/dist/services/index.d.ts +1 -1
- package/dist/services/index.js.map +1 -1
- package/dist/services/subscription/account/AccountSubscribeService.js +21 -0
- package/dist/services/subscription/account/AccountSubscribeService.js.map +1 -1
- package/dist/services/subscription/plan/SubscribePlanService.d.ts +2 -0
- package/dist/services/subscription/plan/SubscribePlanService.js +3 -0
- package/dist/services/subscription/plan/SubscribePlanService.js.map +1 -1
- package/package.json +1 -1
- package/prisma/schema.prisma +16 -15
|
@@ -47,6 +47,7 @@ const createSubcribePlan = async (req, res, next) => {
|
|
|
47
47
|
price: reqPayload?.subscribe_plan?.price ?? "",
|
|
48
48
|
billingCycle: reqPayload?.subscribe_plan?.billing_cycle ?? "",
|
|
49
49
|
currency: reqPayload?.subscribe_plan?.currency ?? "",
|
|
50
|
+
isSingleSubscription: reqPayload?.subscribe_plan?.is_single_subscription,
|
|
50
51
|
status: reqPayload?.subscribe_plan?.status
|
|
51
52
|
}
|
|
52
53
|
}
|
|
@@ -59,6 +60,7 @@ const createSubcribePlan = async (req, res, next) => {
|
|
|
59
60
|
price: request.payload.subscribePlan.price,
|
|
60
61
|
billingCycle: request.payload.subscribePlan.billingCycle,
|
|
61
62
|
currency: request.payload.subscribePlan.currency,
|
|
63
|
+
isSingleSubscription: request.payload.subscribePlan.isSingleSubscription,
|
|
62
64
|
status: request.payload.subscribePlan.status
|
|
63
65
|
}
|
|
64
66
|
};
|
|
@@ -95,6 +97,7 @@ const updateSubscribePlan = async (req, res, next) => {
|
|
|
95
97
|
price: reqPayload?.subscribe_plan?.price ?? "",
|
|
96
98
|
billingCycle: reqPayload?.subscribe_plan?.billing_cycle ?? "",
|
|
97
99
|
currency: reqPayload?.subscribe_plan?.currency ?? "",
|
|
100
|
+
isSingleSubscription: reqPayload?.subscribe_plan?.is_single_subscription,
|
|
98
101
|
status: reqPayload?.subscribe_plan?.status
|
|
99
102
|
}
|
|
100
103
|
}
|
|
@@ -108,6 +111,7 @@ const updateSubscribePlan = async (req, res, next) => {
|
|
|
108
111
|
price: request.payload.subscribePlan.price,
|
|
109
112
|
billingCycle: request.payload.subscribePlan.billingCycle,
|
|
110
113
|
currency: request.payload.subscribePlan.currency,
|
|
114
|
+
isSingleSubscription: request.payload.subscribePlan.isSingleSubscription,
|
|
111
115
|
status: request.payload.subscribePlan.status
|
|
112
116
|
}
|
|
113
117
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscribePlanController.js","sourceRoot":"","sources":["../../../../src/controllers/subscription/plan/subscribePlanController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Request, Response, NextFunction } from \"express\";\n\nimport { getDefaultServiceProps, sendSuccess, sendError, HTTP_STATUS } from \"@/utils\"\n\nimport { QueryList } from \"@/schema/middleware/route\";\n\nimport { SubscribePlanService, SubscribePlanCreateProps, SubscribePlanUpdateProps } from \"@/services\"\nimport {\n schemaSubscribePlanCreatePayload,\n schemaSubscribePlanUpdatePayload,\n schemaSubscribePlanDeletePayload\n} from \"@/schema/payload\";\n\nconst getRootName = (toSingular: boolean) => {\n\n let rootName = toSingular ? \"subscribe_plan\" : \"subscribe_plans\";\n\n return rootName\n}\n\n/** subscriptions/plan/:planId : get subscribe plan */\nexport const getSubscribePlan = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n try {\n\n const { planId } = req.params;\n const requestQuery = req.query as unknown as QueryList;\n\n const subscribePlanService = SubscribePlanService({\n ...getDefaultServiceProps(req),\n })\n\n const data = await subscribePlanService.getSubscribePlan({ id: Number(planId), datatypes: requestQuery.datatypes })\n\n return sendSuccess(res, data, \"Retrieved successfully\", getRootName(true));\n\n } catch (error: any) {\n next(error)\n }\n}\n\n/** subscriptions/plan : create subscribe plan */\nexport const createSubcribePlan = async (req: Request, res: Response, next: NextFunction): Promise<void> => {\n try {\n\n // const requestUserType = req.body.scope.target as SubscribePlanServiceProps[\"userType\"]\n\n const subscribePlanService = SubscribePlanService({\n ...getDefaultServiceProps(req),\n })\n\n let response: any = {}\n\n let reqScope = req.body.scope\n let reqPayload = req.body.payload\n\n let request = schemaSubscribePlanCreatePayload.parse({\n scope: {\n target: reqScope.target,\n action: reqScope.action\n },\n payload: {\n subscribePlan: {\n name: reqPayload?.subscribe_plan?.name ?? \"\",\n shortDescription: reqPayload?.subscribe_plan?.short_description ?? \"\",\n fullDescription: reqPayload?.subscribe_plan?.full_description ?? \"\",\n price: reqPayload?.subscribe_plan?.price ?? \"\",\n billingCycle: reqPayload?.subscribe_plan?.billing_cycle ?? \"\",\n currency: reqPayload?.subscribe_plan?.currency ?? \"\",\n status: reqPayload?.subscribe_plan?.status\n }\n }\n })\n\n let payload: SubscribePlanCreateProps = {\n data: {\n name: request.payload.subscribePlan.name,\n shortDescription: request.payload.subscribePlan.shortDescription,\n fullDescription: request.payload.subscribePlan.fullDescription,\n price: request.payload.subscribePlan.price,\n billingCycle: request.payload.subscribePlan.billingCycle,\n currency: request.payload.subscribePlan.currency,\n status: request.payload.subscribePlan.status\n }\n }\n\n response = {\n [`${getRootName(true)}`]: await subscribePlanService.createSubscribePlan(payload)\n }\n\n sendSuccess(res, response, `Subscribe plan created successfully`)\n\n } catch (error: any) {\n next(error)\n }\n};\n\n/** subscriptions/plan/:planId : update subscribe plan */\nexport const updateSubscribePlan = async (req: Request, res: Response, next: NextFunction): Promise<void> => {\n try {\n\n const { planId } = req.params;\n\n const subscribePlanService = SubscribePlanService({\n ...getDefaultServiceProps(req),\n })\n\n let response: any = {}\n\n let reqScope = req.body.scope\n let reqPayload = req.body.payload\n\n\n let request = schemaSubscribePlanUpdatePayload.parse({\n scope: {\n target: reqScope.target,\n action: reqScope.action\n },\n payload: {\n subscribePlan: {\n name: reqPayload?.subscribe_plan?.name ?? \"\",\n shortDescription: reqPayload?.subscribe_plan?.short_description ?? \"\",\n fullDescription: reqPayload?.subscribe_plan?.full_description ?? \"\",\n price: reqPayload?.subscribe_plan?.price ?? \"\",\n billingCycle: reqPayload?.subscribe_plan?.billing_cycle ?? \"\",\n currency: reqPayload?.subscribe_plan?.currency ?? \"\",\n status: reqPayload?.subscribe_plan?.status\n }\n }\n })\n\n let payload: SubscribePlanUpdateProps = {\n subscribePlanId: Number(planId),\n data: {\n name: request.payload.subscribePlan.name,\n shortDescription: request.payload.subscribePlan.shortDescription,\n fullDescription: request.payload.subscribePlan.fullDescription,\n price: request.payload.subscribePlan.price,\n billingCycle: request.payload.subscribePlan.billingCycle,\n currency: request.payload.subscribePlan.currency,\n status: request.payload.subscribePlan.status\n }\n }\n\n response = {\n [`${getRootName(true)}`]: await subscribePlanService.updateSubscribePlan(payload)\n }\n\n sendSuccess(res, response, `Subscribe plan updated successfully`)\n\n } catch (error: any) {\n next(error)\n }\n};\n\n/** subscriptions/plans : list subscribe plans */\nexport const listSubscribePlans = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n\n try {\n\n const requestQuery = req.query as unknown as QueryList;\n\n const subscribePlanService = SubscribePlanService({\n ...getDefaultServiceProps(req),\n })\n\n const { data, total } = await subscribePlanService.listSubscribePlans({\n ...requestQuery\n });\n\n let response = {\n [`${getRootName(false)}`]: data,\n total,\n }\n\n return sendSuccess(res, response, \"Retrieved successfully\");\n\n } catch (error: any) {\n next(error)\n }\n};\n\n/** subscriptions/plans/delete : delete subscribe plans */\nexport const deleteSubscribePlans = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n\n try {\n\n const request = schemaSubscribePlanDeletePayload.parse(req.body)\n\n const subscribePlanService = SubscribePlanService({\n ...getDefaultServiceProps(req),\n })\n\n const payload = {\n subscribePlanIds: request.payload.ids.map(i => BigInt(i))\n }\n\n const data = await subscribePlanService.removeSubscribePlans(payload);\n\n return sendSuccess(res, data, \"Deleted\", getRootName(false));\n\n } catch (error: any) {\n next(error)\n }\n};"]}
|
|
1
|
+
{"version":3,"file":"subscribePlanController.js","sourceRoot":"","sources":["../../../../src/controllers/subscription/plan/subscribePlanController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Request, Response, NextFunction } from \"express\";\n\nimport { getDefaultServiceProps, sendSuccess, sendError, HTTP_STATUS } from \"@/utils\"\n\nimport { QueryList } from \"@/schema/middleware/route\";\n\nimport { SubscribePlanService, SubscribePlanCreateProps, SubscribePlanUpdateProps } from \"@/services\"\nimport {\n schemaSubscribePlanCreatePayload,\n schemaSubscribePlanUpdatePayload,\n schemaSubscribePlanDeletePayload\n} from \"@/schema/payload\";\n\nconst getRootName = (toSingular: boolean) => {\n\n let rootName = toSingular ? \"subscribe_plan\" : \"subscribe_plans\";\n\n return rootName\n}\n\n/** subscriptions/plan/:planId : get subscribe plan */\nexport const getSubscribePlan = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n try {\n\n const { planId } = req.params;\n const requestQuery = req.query as unknown as QueryList;\n\n const subscribePlanService = SubscribePlanService({\n ...getDefaultServiceProps(req),\n })\n\n const data = await subscribePlanService.getSubscribePlan({ id: Number(planId), datatypes: requestQuery.datatypes })\n\n return sendSuccess(res, data, \"Retrieved successfully\", getRootName(true));\n\n } catch (error: any) {\n next(error)\n }\n}\n\n/** subscriptions/plan : create subscribe plan */\nexport const createSubcribePlan = async (req: Request, res: Response, next: NextFunction): Promise<void> => {\n try {\n\n // const requestUserType = req.body.scope.target as SubscribePlanServiceProps[\"userType\"]\n\n const subscribePlanService = SubscribePlanService({\n ...getDefaultServiceProps(req),\n })\n\n let response: any = {}\n\n let reqScope = req.body.scope\n let reqPayload = req.body.payload\n\n let request = schemaSubscribePlanCreatePayload.parse({\n scope: {\n target: reqScope.target,\n action: reqScope.action\n },\n payload: {\n subscribePlan: {\n name: reqPayload?.subscribe_plan?.name ?? \"\",\n shortDescription: reqPayload?.subscribe_plan?.short_description ?? \"\",\n fullDescription: reqPayload?.subscribe_plan?.full_description ?? \"\",\n price: reqPayload?.subscribe_plan?.price ?? \"\",\n billingCycle: reqPayload?.subscribe_plan?.billing_cycle ?? \"\",\n currency: reqPayload?.subscribe_plan?.currency ?? \"\",\n isSingleSubscription: reqPayload?.subscribe_plan?.is_single_subscription,\n status: reqPayload?.subscribe_plan?.status\n }\n }\n })\n\n let payload: SubscribePlanCreateProps = {\n data: {\n name: request.payload.subscribePlan.name,\n shortDescription: request.payload.subscribePlan.shortDescription,\n fullDescription: request.payload.subscribePlan.fullDescription,\n price: request.payload.subscribePlan.price,\n billingCycle: request.payload.subscribePlan.billingCycle,\n currency: request.payload.subscribePlan.currency,\n isSingleSubscription: request.payload.subscribePlan.isSingleSubscription,\n status: request.payload.subscribePlan.status\n }\n }\n\n response = {\n [`${getRootName(true)}`]: await subscribePlanService.createSubscribePlan(payload)\n }\n\n sendSuccess(res, response, `Subscribe plan created successfully`)\n\n } catch (error: any) {\n next(error)\n }\n};\n\n/** subscriptions/plan/:planId : update subscribe plan */\nexport const updateSubscribePlan = async (req: Request, res: Response, next: NextFunction): Promise<void> => {\n try {\n\n const { planId } = req.params;\n\n const subscribePlanService = SubscribePlanService({\n ...getDefaultServiceProps(req),\n })\n\n let response: any = {}\n\n let reqScope = req.body.scope\n let reqPayload = req.body.payload\n\n\n let request = schemaSubscribePlanUpdatePayload.parse({\n scope: {\n target: reqScope.target,\n action: reqScope.action\n },\n payload: {\n subscribePlan: {\n name: reqPayload?.subscribe_plan?.name ?? \"\",\n shortDescription: reqPayload?.subscribe_plan?.short_description ?? \"\",\n fullDescription: reqPayload?.subscribe_plan?.full_description ?? \"\",\n price: reqPayload?.subscribe_plan?.price ?? \"\",\n billingCycle: reqPayload?.subscribe_plan?.billing_cycle ?? \"\",\n currency: reqPayload?.subscribe_plan?.currency ?? \"\",\n isSingleSubscription: reqPayload?.subscribe_plan?.is_single_subscription,\n status: reqPayload?.subscribe_plan?.status\n }\n }\n })\n\n let payload: SubscribePlanUpdateProps = {\n subscribePlanId: Number(planId),\n data: {\n name: request.payload.subscribePlan.name,\n shortDescription: request.payload.subscribePlan.shortDescription,\n fullDescription: request.payload.subscribePlan.fullDescription,\n price: request.payload.subscribePlan.price,\n billingCycle: request.payload.subscribePlan.billingCycle,\n currency: request.payload.subscribePlan.currency,\n isSingleSubscription: request.payload.subscribePlan.isSingleSubscription,\n status: request.payload.subscribePlan.status\n }\n }\n\n response = {\n [`${getRootName(true)}`]: await subscribePlanService.updateSubscribePlan(payload)\n }\n\n sendSuccess(res, response, `Subscribe plan updated successfully`)\n\n } catch (error: any) {\n next(error)\n }\n};\n\n/** subscriptions/plans : list subscribe plans */\nexport const listSubscribePlans = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n\n try {\n\n const requestQuery = req.query as unknown as QueryList;\n\n const subscribePlanService = SubscribePlanService({\n ...getDefaultServiceProps(req),\n })\n\n const { data, total } = await subscribePlanService.listSubscribePlans({\n ...requestQuery\n });\n\n let response = {\n [`${getRootName(false)}`]: data,\n total,\n }\n\n return sendSuccess(res, response, \"Retrieved successfully\");\n\n } catch (error: any) {\n next(error)\n }\n};\n\n/** subscriptions/plans/delete : delete subscribe plans */\nexport const deleteSubscribePlans = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n\n try {\n\n const request = schemaSubscribePlanDeletePayload.parse(req.body)\n\n const subscribePlanService = SubscribePlanService({\n ...getDefaultServiceProps(req),\n })\n\n const payload = {\n subscribePlanIds: request.payload.ids.map(i => BigInt(i))\n }\n\n const data = await subscribePlanService.removeSubscribePlans(payload);\n\n return sendSuccess(res, data, \"Deleted\", getRootName(false));\n\n } catch (error: any) {\n next(error)\n }\n};"]}
|
|
@@ -18,6 +18,7 @@ export declare const ModelSubscribePlanFields: {
|
|
|
18
18
|
price: "price";
|
|
19
19
|
currency: "currency";
|
|
20
20
|
billing_cycle: "billing_cycle";
|
|
21
|
+
is_single_subscription: "is_single_subscription";
|
|
21
22
|
};
|
|
22
23
|
export type ModelSubscribePlan = subscribe_plans;
|
|
23
24
|
export type ModelSubscribePlanOmitFields = typeof primaryKey | DefaultOmitFields;
|
|
@@ -45,7 +46,7 @@ export type ModelSubscribePlanListProps = {
|
|
|
45
46
|
};
|
|
46
47
|
export declare const SubscribePlanModel: ({ ...rest }: DefaultServiceProps) => {
|
|
47
48
|
selectedPrisma: any;
|
|
48
|
-
primaryKey: "createdatetime" | "createuserid" | "updatedatetime" | "updateuserid" | "isdelete" | "istrash" | "accountid" | "status" | "name" | "subscribe_plan_id" | "short_description" | "full_description" | "price" | "currency" | "billing_cycle";
|
|
49
|
+
primaryKey: "createdatetime" | "createuserid" | "updatedatetime" | "updateuserid" | "isdelete" | "istrash" | "accountid" | "status" | "name" | "subscribe_plan_id" | "short_description" | "full_description" | "price" | "currency" | "billing_cycle" | "is_single_subscription";
|
|
49
50
|
getFields: (prefix?: string, excludeKeywords?: string[]) => Promise<{
|
|
50
51
|
name: string;
|
|
51
52
|
type: string;
|
|
@@ -68,6 +69,7 @@ export declare const SubscribePlanModel: ({ ...rest }: DefaultServiceProps) => {
|
|
|
68
69
|
price: Prisma.Decimal;
|
|
69
70
|
currency: string;
|
|
70
71
|
billing_cycle: string;
|
|
72
|
+
is_single_subscription: boolean;
|
|
71
73
|
}>;
|
|
72
74
|
createMany: ({ dataList, disableRollback, }: {
|
|
73
75
|
dataList: Omit<any, DefaultOmitFields>[];
|
|
@@ -88,6 +90,7 @@ export declare const SubscribePlanModel: ({ ...rest }: DefaultServiceProps) => {
|
|
|
88
90
|
price: Prisma.Decimal;
|
|
89
91
|
currency: string;
|
|
90
92
|
billing_cycle: string;
|
|
93
|
+
is_single_subscription: boolean;
|
|
91
94
|
}[]>;
|
|
92
95
|
get: ({ id, where, include, }: {
|
|
93
96
|
id?: number;
|
|
@@ -109,6 +112,7 @@ export declare const SubscribePlanModel: ({ ...rest }: DefaultServiceProps) => {
|
|
|
109
112
|
price: Prisma.Decimal;
|
|
110
113
|
currency: string;
|
|
111
114
|
billing_cycle: string;
|
|
115
|
+
is_single_subscription: boolean;
|
|
112
116
|
} | null>;
|
|
113
117
|
list: ({ where, orderBy, offset, limit, include }?: any) => Promise<{
|
|
114
118
|
createdatetime: Date | null;
|
|
@@ -126,12 +130,13 @@ export declare const SubscribePlanModel: ({ ...rest }: DefaultServiceProps) => {
|
|
|
126
130
|
price: Prisma.Decimal;
|
|
127
131
|
currency: string;
|
|
128
132
|
billing_cycle: string;
|
|
133
|
+
is_single_subscription: boolean;
|
|
129
134
|
}[]>;
|
|
130
135
|
count: ({ where }?: {
|
|
131
136
|
where?: Record<string, any>;
|
|
132
137
|
}) => Promise<number>;
|
|
133
138
|
aggregate: ({ field, operation, where, }: {
|
|
134
|
-
field: "createdatetime" | "createuserid" | "updatedatetime" | "updateuserid" | "isdelete" | "istrash" | "accountid" | "status" | "name" | "subscribe_plan_id" | "short_description" | "full_description" | "price" | "currency" | "billing_cycle";
|
|
139
|
+
field: "createdatetime" | "createuserid" | "updatedatetime" | "updateuserid" | "isdelete" | "istrash" | "accountid" | "status" | "name" | "subscribe_plan_id" | "short_description" | "full_description" | "price" | "currency" | "billing_cycle" | "is_single_subscription";
|
|
135
140
|
operation?: "sum" | "avg" | "min" | "max" | "count";
|
|
136
141
|
where?: Record<string, any>;
|
|
137
142
|
}) => Promise<number>;
|
|
@@ -154,6 +159,7 @@ export declare const SubscribePlanModel: ({ ...rest }: DefaultServiceProps) => {
|
|
|
154
159
|
price: Prisma.Decimal;
|
|
155
160
|
currency: string;
|
|
156
161
|
billing_cycle: string;
|
|
162
|
+
is_single_subscription: boolean;
|
|
157
163
|
}>;
|
|
158
164
|
disableRollback?: Boolean;
|
|
159
165
|
}) => Promise<{
|
|
@@ -172,6 +178,7 @@ export declare const SubscribePlanModel: ({ ...rest }: DefaultServiceProps) => {
|
|
|
172
178
|
price: Prisma.Decimal;
|
|
173
179
|
currency: string;
|
|
174
180
|
billing_cycle: string;
|
|
181
|
+
is_single_subscription: boolean;
|
|
175
182
|
}>;
|
|
176
183
|
updateMany: ({ dataList, disableRollback, }: {
|
|
177
184
|
dataList: {
|
|
@@ -192,6 +199,7 @@ export declare const SubscribePlanModel: ({ ...rest }: DefaultServiceProps) => {
|
|
|
192
199
|
price: Prisma.Decimal;
|
|
193
200
|
currency: string;
|
|
194
201
|
billing_cycle: string;
|
|
202
|
+
is_single_subscription: boolean;
|
|
195
203
|
}>;
|
|
196
204
|
}[];
|
|
197
205
|
disableRollback?: boolean;
|
|
@@ -211,6 +219,7 @@ export declare const SubscribePlanModel: ({ ...rest }: DefaultServiceProps) => {
|
|
|
211
219
|
price: Prisma.Decimal;
|
|
212
220
|
currency: string;
|
|
213
221
|
billing_cycle: string;
|
|
222
|
+
is_single_subscription: boolean;
|
|
214
223
|
}[]>;
|
|
215
224
|
trash: ({ ids }: {
|
|
216
225
|
ids: number[];
|
|
@@ -230,6 +239,7 @@ export declare const SubscribePlanModel: ({ ...rest }: DefaultServiceProps) => {
|
|
|
230
239
|
price: Prisma.Decimal;
|
|
231
240
|
currency: string;
|
|
232
241
|
billing_cycle: string;
|
|
242
|
+
is_single_subscription: boolean;
|
|
233
243
|
}[]>;
|
|
234
244
|
remove: ({ ids, where }: {
|
|
235
245
|
ids?: number[];
|
|
@@ -250,6 +260,7 @@ export declare const SubscribePlanModel: ({ ...rest }: DefaultServiceProps) => {
|
|
|
250
260
|
price: Prisma.Decimal;
|
|
251
261
|
currency: string;
|
|
252
262
|
billing_cycle: string;
|
|
263
|
+
is_single_subscription: boolean;
|
|
253
264
|
}[]>;
|
|
254
265
|
raw: <T = any>(query: string, params?: any[]) => Promise<T[]>;
|
|
255
266
|
rawExec: (query: string, params?: any[]) => Promise<number>;
|
|
@@ -16,6 +16,7 @@ export declare const schemaSubscribePlan: z.ZodObject<{
|
|
|
16
16
|
price: z.ZodNumber;
|
|
17
17
|
billingCycle: z.ZodEnum<["monthly" | "yearly", ...("monthly" | "yearly")[]]>;
|
|
18
18
|
currency: z.ZodEnum<["myr" | "usd", ...("myr" | "usd")[]]>;
|
|
19
|
+
isSingleSubscription: z.ZodBoolean;
|
|
19
20
|
status: z.ZodBoolean;
|
|
20
21
|
}, "strip", z.ZodTypeAny, {
|
|
21
22
|
status: boolean;
|
|
@@ -25,6 +26,7 @@ export declare const schemaSubscribePlan: z.ZodObject<{
|
|
|
25
26
|
shortDescription: string;
|
|
26
27
|
fullDescription: string;
|
|
27
28
|
billingCycle: "monthly" | "yearly";
|
|
29
|
+
isSingleSubscription: boolean;
|
|
28
30
|
}, {
|
|
29
31
|
status: boolean;
|
|
30
32
|
name: string;
|
|
@@ -33,6 +35,7 @@ export declare const schemaSubscribePlan: z.ZodObject<{
|
|
|
33
35
|
shortDescription: string;
|
|
34
36
|
fullDescription: string;
|
|
35
37
|
billingCycle: "monthly" | "yearly";
|
|
38
|
+
isSingleSubscription: boolean;
|
|
36
39
|
}>;
|
|
37
40
|
/** Create */
|
|
38
41
|
export declare const schemaSubscribePlanCreatePayload: z.ZodObject<{
|
|
@@ -54,6 +57,7 @@ export declare const schemaSubscribePlanCreatePayload: z.ZodObject<{
|
|
|
54
57
|
price: z.ZodNumber;
|
|
55
58
|
billingCycle: z.ZodEnum<["monthly" | "yearly", ...("monthly" | "yearly")[]]>;
|
|
56
59
|
currency: z.ZodEnum<["myr" | "usd", ...("myr" | "usd")[]]>;
|
|
60
|
+
isSingleSubscription: z.ZodBoolean;
|
|
57
61
|
status: z.ZodBoolean;
|
|
58
62
|
}, "strip", z.ZodTypeAny, {
|
|
59
63
|
status: boolean;
|
|
@@ -63,6 +67,7 @@ export declare const schemaSubscribePlanCreatePayload: z.ZodObject<{
|
|
|
63
67
|
shortDescription: string;
|
|
64
68
|
fullDescription: string;
|
|
65
69
|
billingCycle: "monthly" | "yearly";
|
|
70
|
+
isSingleSubscription: boolean;
|
|
66
71
|
}, {
|
|
67
72
|
status: boolean;
|
|
68
73
|
name: string;
|
|
@@ -71,6 +76,7 @@ export declare const schemaSubscribePlanCreatePayload: z.ZodObject<{
|
|
|
71
76
|
shortDescription: string;
|
|
72
77
|
fullDescription: string;
|
|
73
78
|
billingCycle: "monthly" | "yearly";
|
|
79
|
+
isSingleSubscription: boolean;
|
|
74
80
|
}>;
|
|
75
81
|
}, "strip", z.ZodTypeAny, {
|
|
76
82
|
subscribePlan: {
|
|
@@ -81,6 +87,7 @@ export declare const schemaSubscribePlanCreatePayload: z.ZodObject<{
|
|
|
81
87
|
shortDescription: string;
|
|
82
88
|
fullDescription: string;
|
|
83
89
|
billingCycle: "monthly" | "yearly";
|
|
90
|
+
isSingleSubscription: boolean;
|
|
84
91
|
};
|
|
85
92
|
}, {
|
|
86
93
|
subscribePlan: {
|
|
@@ -91,6 +98,7 @@ export declare const schemaSubscribePlanCreatePayload: z.ZodObject<{
|
|
|
91
98
|
shortDescription: string;
|
|
92
99
|
fullDescription: string;
|
|
93
100
|
billingCycle: "monthly" | "yearly";
|
|
101
|
+
isSingleSubscription: boolean;
|
|
94
102
|
};
|
|
95
103
|
}>;
|
|
96
104
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -107,6 +115,7 @@ export declare const schemaSubscribePlanCreatePayload: z.ZodObject<{
|
|
|
107
115
|
shortDescription: string;
|
|
108
116
|
fullDescription: string;
|
|
109
117
|
billingCycle: "monthly" | "yearly";
|
|
118
|
+
isSingleSubscription: boolean;
|
|
110
119
|
};
|
|
111
120
|
};
|
|
112
121
|
}, {
|
|
@@ -123,6 +132,7 @@ export declare const schemaSubscribePlanCreatePayload: z.ZodObject<{
|
|
|
123
132
|
shortDescription: string;
|
|
124
133
|
fullDescription: string;
|
|
125
134
|
billingCycle: "monthly" | "yearly";
|
|
135
|
+
isSingleSubscription: boolean;
|
|
126
136
|
};
|
|
127
137
|
};
|
|
128
138
|
}>;
|
|
@@ -147,6 +157,7 @@ export declare const schemaSubscribePlanUpdatePayload: z.ZodObject<{
|
|
|
147
157
|
price: z.ZodNumber;
|
|
148
158
|
billingCycle: z.ZodEnum<["monthly" | "yearly", ...("monthly" | "yearly")[]]>;
|
|
149
159
|
currency: z.ZodEnum<["myr" | "usd", ...("myr" | "usd")[]]>;
|
|
160
|
+
isSingleSubscription: z.ZodBoolean;
|
|
150
161
|
status: z.ZodBoolean;
|
|
151
162
|
}, "strip", z.ZodTypeAny, {
|
|
152
163
|
status: boolean;
|
|
@@ -156,6 +167,7 @@ export declare const schemaSubscribePlanUpdatePayload: z.ZodObject<{
|
|
|
156
167
|
shortDescription: string;
|
|
157
168
|
fullDescription: string;
|
|
158
169
|
billingCycle: "monthly" | "yearly";
|
|
170
|
+
isSingleSubscription: boolean;
|
|
159
171
|
}, {
|
|
160
172
|
status: boolean;
|
|
161
173
|
name: string;
|
|
@@ -164,6 +176,7 @@ export declare const schemaSubscribePlanUpdatePayload: z.ZodObject<{
|
|
|
164
176
|
shortDescription: string;
|
|
165
177
|
fullDescription: string;
|
|
166
178
|
billingCycle: "monthly" | "yearly";
|
|
179
|
+
isSingleSubscription: boolean;
|
|
167
180
|
}>;
|
|
168
181
|
}, "strip", z.ZodTypeAny, {
|
|
169
182
|
subscribePlan: {
|
|
@@ -174,6 +187,7 @@ export declare const schemaSubscribePlanUpdatePayload: z.ZodObject<{
|
|
|
174
187
|
shortDescription: string;
|
|
175
188
|
fullDescription: string;
|
|
176
189
|
billingCycle: "monthly" | "yearly";
|
|
190
|
+
isSingleSubscription: boolean;
|
|
177
191
|
};
|
|
178
192
|
}, {
|
|
179
193
|
subscribePlan: {
|
|
@@ -184,6 +198,7 @@ export declare const schemaSubscribePlanUpdatePayload: z.ZodObject<{
|
|
|
184
198
|
shortDescription: string;
|
|
185
199
|
fullDescription: string;
|
|
186
200
|
billingCycle: "monthly" | "yearly";
|
|
201
|
+
isSingleSubscription: boolean;
|
|
187
202
|
};
|
|
188
203
|
}>;
|
|
189
204
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -200,6 +215,7 @@ export declare const schemaSubscribePlanUpdatePayload: z.ZodObject<{
|
|
|
200
215
|
shortDescription: string;
|
|
201
216
|
fullDescription: string;
|
|
202
217
|
billingCycle: "monthly" | "yearly";
|
|
218
|
+
isSingleSubscription: boolean;
|
|
203
219
|
};
|
|
204
220
|
};
|
|
205
221
|
}, {
|
|
@@ -216,6 +232,7 @@ export declare const schemaSubscribePlanUpdatePayload: z.ZodObject<{
|
|
|
216
232
|
shortDescription: string;
|
|
217
233
|
fullDescription: string;
|
|
218
234
|
billingCycle: "monthly" | "yearly";
|
|
235
|
+
isSingleSubscription: boolean;
|
|
219
236
|
};
|
|
220
237
|
};
|
|
221
238
|
}>;
|
|
@@ -15,6 +15,7 @@ exports.schemaSubscribePlan = zod_1.z.object({
|
|
|
15
15
|
price: zod_1.z.number(),
|
|
16
16
|
billingCycle: zod_1.z.enum(Object.values(services_1.subscribePlanBillingCycles)),
|
|
17
17
|
currency: zod_1.z.enum(Object.values(services_2.subscribeCurrencies)),
|
|
18
|
+
isSingleSubscription: zod_1.z.boolean(),
|
|
18
19
|
status: zod_1.z.boolean(),
|
|
19
20
|
});
|
|
20
21
|
/** Create */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemaSubscribePlan.js","sourceRoot":"","sources":["../../../../src/schema/payload/subscription/schemaSubscribePlan.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAIxB,yCAAkF;AAClF,yCAAuE;AAE1D,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,OAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACnC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAA;AAEW,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE;IAC5B,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE;IAC3B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE;IACjB,YAAY,EAAE,OAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,qCAA0B,CAAgE,CAAC;IAC9H,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,8BAAmB,CAAwD,CAAC;IAC3G,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE;CACtB,CAAC,CAAA;AAEF,aAAa;AACA,QAAA,gCAAgC,GAAG,OAAC,CAAC,MAAM,CAAC;IACrD,KAAK,EAAE,0BAAkB;IACzB,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC;QACd,aAAa,EAAE,2BAAmB;KACrC,CAAC;CACL,CAAC,CAAC;AAIH,aAAa;AACA,QAAA,gCAAgC,GAAG,OAAC,CAAC,MAAM,CAAC;IACrD,KAAK,EAAE,0BAAkB;IACzB,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC;QACd,aAAa,EAAE,2BAAmB;KACrC,CAAC;CACL,CAAC,CAAC;AAIH,aAAa;AACA,QAAA,gCAAgC,GAAG,OAAC,CAAC,MAAM,CAAC;IACrD,KAAK,EAAE,0BAAkB;IACzB,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC;QACd,GAAG,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,sCAAsC,CAAC;KAC1E,CAAC;CACL,CAAC,CAAC","sourcesContent":["import { z } from \"zod\";\n\nimport { _, dayjs } from \"@/utils\";\n\nimport { subscribePlanBillingCycles, SubscribePlanBillingCycle } from \"@/services\"\nimport { subscribeCurrencies, SubscribePlanCurrency } from \"@/services\"\n\nexport const schemePayloadScope = z.object({\n target: z.literal(\"subscribe_plan\"),\n action: z.string(),\n})\n\nexport const schemaSubscribePlan = z.object({\n name: z.string(),\n shortDescription: z.string(),\n fullDescription: z.string(),\n price: z.number(),\n billingCycle: z.enum(Object.values(subscribePlanBillingCycles) as [SubscribePlanBillingCycle, ...SubscribePlanBillingCycle[]]),\n currency: z.enum(Object.values(subscribeCurrencies) as [SubscribePlanCurrency, ...SubscribePlanCurrency[]]),\n status: z.boolean(),\n})\n\n/** Create */\nexport const schemaSubscribePlanCreatePayload = z.object({\n scope: schemePayloadScope,\n payload: z.object({\n subscribePlan: schemaSubscribePlan\n })\n});\n\nexport type SchemaSubscribePlanCreatePayload = z.infer<typeof schemaSubscribePlanCreatePayload>;\n\n/** Update */\nexport const schemaSubscribePlanUpdatePayload = z.object({\n scope: schemePayloadScope,\n payload: z.object({\n subscribePlan: schemaSubscribePlan\n })\n});\n\nexport type SchemaSubscribePlanUpdatePayload = z.infer<typeof schemaSubscribePlanUpdatePayload>;\n\n/** Delete */\nexport const schemaSubscribePlanDeletePayload = z.object({\n scope: schemePayloadScope,\n payload: z.object({\n ids: z.array(z.number()).min(1, \"ids must contain at least one number\"),\n }),\n});\n\nexport type SchemaSubscribePlanDeletePayload = z.infer<typeof schemaSubscribePlanDeletePayload>;"]}
|
|
1
|
+
{"version":3,"file":"schemaSubscribePlan.js","sourceRoot":"","sources":["../../../../src/schema/payload/subscription/schemaSubscribePlan.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAIxB,yCAAkF;AAClF,yCAAuE;AAE1D,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,OAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACnC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAA;AAEW,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE;IAC5B,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE;IAC3B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE;IACjB,YAAY,EAAE,OAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,qCAA0B,CAAgE,CAAC;IAC9H,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,8BAAmB,CAAwD,CAAC;IAC3G,oBAAoB,EAAE,OAAC,CAAC,OAAO,EAAE;IACjC,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE;CACtB,CAAC,CAAA;AAEF,aAAa;AACA,QAAA,gCAAgC,GAAG,OAAC,CAAC,MAAM,CAAC;IACrD,KAAK,EAAE,0BAAkB;IACzB,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC;QACd,aAAa,EAAE,2BAAmB;KACrC,CAAC;CACL,CAAC,CAAC;AAIH,aAAa;AACA,QAAA,gCAAgC,GAAG,OAAC,CAAC,MAAM,CAAC;IACrD,KAAK,EAAE,0BAAkB;IACzB,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC;QACd,aAAa,EAAE,2BAAmB;KACrC,CAAC;CACL,CAAC,CAAC;AAIH,aAAa;AACA,QAAA,gCAAgC,GAAG,OAAC,CAAC,MAAM,CAAC;IACrD,KAAK,EAAE,0BAAkB;IACzB,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC;QACd,GAAG,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,sCAAsC,CAAC;KAC1E,CAAC;CACL,CAAC,CAAC","sourcesContent":["import { z } from \"zod\";\n\nimport { _, dayjs } from \"@/utils\";\n\nimport { subscribePlanBillingCycles, SubscribePlanBillingCycle } from \"@/services\"\nimport { subscribeCurrencies, SubscribePlanCurrency } from \"@/services\"\n\nexport const schemePayloadScope = z.object({\n target: z.literal(\"subscribe_plan\"),\n action: z.string(),\n})\n\nexport const schemaSubscribePlan = z.object({\n name: z.string(),\n shortDescription: z.string(),\n fullDescription: z.string(),\n price: z.number(),\n billingCycle: z.enum(Object.values(subscribePlanBillingCycles) as [SubscribePlanBillingCycle, ...SubscribePlanBillingCycle[]]),\n currency: z.enum(Object.values(subscribeCurrencies) as [SubscribePlanCurrency, ...SubscribePlanCurrency[]]),\n isSingleSubscription: z.boolean(),\n status: z.boolean(),\n})\n\n/** Create */\nexport const schemaSubscribePlanCreatePayload = z.object({\n scope: schemePayloadScope,\n payload: z.object({\n subscribePlan: schemaSubscribePlan\n })\n});\n\nexport type SchemaSubscribePlanCreatePayload = z.infer<typeof schemaSubscribePlanCreatePayload>;\n\n/** Update */\nexport const schemaSubscribePlanUpdatePayload = z.object({\n scope: schemePayloadScope,\n payload: z.object({\n subscribePlan: schemaSubscribePlan\n })\n});\n\nexport type SchemaSubscribePlanUpdatePayload = z.infer<typeof schemaSubscribePlanUpdatePayload>;\n\n/** Delete */\nexport const schemaSubscribePlanDeletePayload = z.object({\n scope: schemePayloadScope,\n payload: z.object({\n ids: z.array(z.number()).min(1, \"ids must contain at least one number\"),\n }),\n});\n\nexport type SchemaSubscribePlanDeletePayload = z.infer<typeof schemaSubscribePlanDeletePayload>;"]}
|
package/dist/services/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export type { AccessControlServiceProps, AccessControlScopeOrExtra, AccessContro
|
|
|
7
7
|
export { ResetPasswordService, resetPasswordMethods } from "../services/reset_password/ResetPasswordService";
|
|
8
8
|
export type { ResetPasswordServiceProps, ResetPasswordMethod, ResetPasswordRequestProps, ResetPasswordValidateCodeProps, ResetPasswordPerformProps } from "../services/reset_password/ResetPasswordService";
|
|
9
9
|
export { AccountService } from "../services/account/AccountService";
|
|
10
|
-
export type { AccountServiceProps, Account, AccountGetProps, AccountListProps, AccountCreateProps, AccountUpdateProps } from "../services/account/AccountService";
|
|
10
|
+
export type { AccountServiceProps, Account, AccountGetProps, AccountListProps, AccountCreateProps, AccountUpdateProps, AccountRemoveProps } from "../services/account/AccountService";
|
|
11
11
|
export { BusinessService } from "../services/business/BusinessService";
|
|
12
12
|
export type { BusinessServiceProps, Business, BusinessGetProps, BusinessListProps, BusinessCreateProps, BusinessUpdateProps } from "../services/business/BusinessService";
|
|
13
13
|
export { SubscribePlanService, subscribeCurrencies, subscribePlanBillingCycles } from "../services/subscription/plan/SubscribePlanService";
|
|
@@ -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":";;;AAAA,mCAA+C;AAE/C,qCAOkB;AAMlB,+BAAiI;AAIpH,QAAA,0BAA0B,GAAG;IACtC,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;CACnB,CAAA;AAIY,QAAA,mBAAmB,GAAG;IAC/B,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;CACb,CAAA;AAmCD,MAAM,gBAAgB,GAAG,CAAC,IAAsC,EAAE,EAAE;IAEhE,OAAO;QACH,CAAC,GAAG,iCAAwB,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI;QAC/C,CAAC,GAAG,iCAAwB,CAAC,iBAAiB,EAAE,CAAC,EAAE,IAAI,CAAC,gBAAgB;QACxE,CAAC,GAAG,iCAAwB,CAAC,gBAAgB,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe;QACtE,CAAC,GAAG,iCAAwB,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACzD,CAAC,GAAG,iCAAwB,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ;QAEvD,CAAC,GAAG,iCAAwB,CAAC,aAAa,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY;QAChE,CAAC,GAAG,iCAAwB,CAAC,sBAAsB,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC;QAE1F,CAAC,GAAG,iCAAwB,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;KAC/D,CAAA;AAEL,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,IAAsC,EAAE,EAAE;IAEhE,OAAO;QACH,CAAC,GAAG,iCAAwB,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI;QAC/C,CAAC,GAAG,iCAAwB,CAAC,iBAAiB,EAAE,CAAC,EAAE,IAAI,CAAC,gBAAgB;QACxE,CAAC,GAAG,iCAAwB,CAAC,gBAAgB,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe;QACtE,CAAC,GAAG,iCAAwB,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACzD,CAAC,GAAG,iCAAwB,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ;QAEvD,CAAC,GAAG,iCAAwB,CAAC,aAAa,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY;QAChE,CAAC,GAAG,iCAAwB,CAAC,sBAAsB,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC;QAE1F,CAAC,GAAG,iCAAwB,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;KAC/D,CAAA;AAEL,CAAC,CAAA;AAED,IAAI,aAAa,GAAG;IAChB,CAAC,WAAW,iCAAwB,CAAC,iBAAiB,EAAE,CAAC,EAAE,mBAAmB;IAC9E,CAAC,WAAW,iCAAwB,CAAC,iBAAiB,EAAE,CAAC,EAAE,mBAAmB;IAC9E,CAAC,WAAW,iCAAwB,CAAC,gBAAgB,EAAE,CAAC,EAAE,kBAAkB;IAC5E,CAAC,WAAW,iCAAwB,CAAC,KAAK,SAAS,CAAC,EAAE,OAAO;IAC7D,CAAC,WAAW,iCAAwB,CAAC,aAAa,EAAE,CAAC,EAAE,eAAe;IACtE,CAAC,WAAW,iCAAwB,CAAC,QAAQ,EAAE,CAAC,EAAE,UAAU;IAC5D,CAAC,WAAW,iCAAwB,CAAC,sBAAsB,EAAE,CAAC,EAAE,wBAAwB;IACxF,CAAC,WAAW,iCAAwB,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ;CAC3D,CAAA;AAED,0BAA0B;AAC1B,8DAA8D;AAC9D,kEAAkE;AAClE,sEAAsE;AACtE,IAAI;AAEJ,IAAI,gBAAgB,GAAG;IACnB,CAAC,WAAW,iCAAwB,CAAC,cAAc,EAAE,CAAC,EAAE,gBAAgB;IACxE,CAAC,WAAW,wBAAe,CAAC,cAAc,EAAE,CAAC,EAAE,gBAAgB;IAC/D,CAAC,WAAW,iCAAwB,CAAC,cAAc,EAAE,CAAC,EAAE,gBAAgB;IACxE,CAAC,WAAW,wBAAe,CAAC,cAAc,EAAE,CAAC,EAAE,gBAAgB;IAC/D,CAAC,WAAW,iCAAwB,CAAC,QAAQ,EAAE,CAAC,EAAE,UAAU;IAC5D,CAAC,WAAW,iCAAwB,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS;IAC1D,CAAC,WAAW,iCAAwB,CAAC,SAAS,EAAE,CAAC,EAAE,WAAW;CACjE,CAAA;AAEM,MAAM,oBAAoB,GAAG,CAAC,KAAgC,EAAE,EAAE;IAErE,MAAM,EACF,GAAG,IAAI,EACV,GAAG,KAAK,CAAA;IAET,MAAM,kBAAkB,GAAG,IAAA,2BAAkB,EAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;IAE5E,MAAM,mBAAmB,GAAG,KAAK,EAAE,EAAE,IAAI,EAA4B,EAAE,EAAE;QAErE,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAEpC,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvF,CAAC;QAED,IAAI,QAAQ,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QAE/D,OAAO,MAAM,gBAAgB,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,iBAAiB,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA;IAClG,CAAC,CAAA;IAED,MAAM,mBAAmB,GAAG,KAAK,EAAE,EAAE,eAAe,EAAE,IAAI,EAA4B,EAAE,EAAE;QAEtF,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAEpC,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvF,CAAC;QAED,IAAI,QAAQ,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,iCAAwB,CAAC,iBAAiB,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QAE9I,OAAO,MAAM,gBAAgB,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA;IACjF,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,GAAG,EAAE,EAAyB,EAAE,EAAE;QAE7E,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,kBAAkB,CAAC;YACpC,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,iCAAwB,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YAC/F,SAAS,EAAE,GAAG,iCAAwB,CAAC,iBAAiB,EAAE;YAC1D,SAAS,EAAE,KAAK;YAChB,SAAS;SACZ,CAAC,CAAA;QAEF,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAE3B,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,EAAE,EAA0B,EAAE,EAAE;QAE/H,IAAI,IAAI,GAAG,EAAE,CAAA;QAEb,IAAI,SAAS,GAAG;YACZ,2CAA2C;YAC3C,IAAA,oBAAc,EAAC,EAAE,EAAE,aAAa,CAAC;YACjC,IAAA,oBAAc,EAAC,EAAE,EAAE,gBAAgB,CAAC;SACvC,CAAA;QAED,IAAI,WAAW,GAAG;YACd,8JAA8J;YAC9J,IAAA,sBAAgB,EAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,wCAAwC,EAAE,0BAA0B,EAAE,yBAAyB,CAAC,CAAC;YAC1J,IAAA,sBAAgB,EAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,wCAAwC,EAAE,0BAA0B,EAAE,yBAAyB,CAAC,CAAC;SAC7J,CAAA;QAED,IAAI,UAAU,GAAa;YACvB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;YAC7B,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;SACnC,CAAA;QAED,IAAI,aAAa,GAAG;YAChB,GAAG,aAAa;YAChB,GAAG,gBAAgB;SACtB,CAAA;QAED,IAAI,QAAQ,GAAG;YACX,0BAA0B;YAC1B,yBAAyB;YACzB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAA,mBAAa,EAAC,OAAO,EAAE,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5E,CAAA;QAED,IAAI,UAAU,GAAG,IAAA,qBAAe,EAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QACtD,IAAI,cAAc,GAAG,IAAA,yBAAmB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAEvD,MAAM,MAAM,GAAG,IAAA,uBAAiB,EAAC;YAC7B,SAAS,EAAE,iBAAiB;YAC5B,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS;YACT,WAAW;YACX,QAAQ;YACR,UAAU;YACV,UAAU;YACV,cAAc;SACjB,CAAC,CAAA;QAEF,IAAI,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAE3C,MAAM,QAAQ,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;YACrD,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1D,CAAA;QAED,OAAO,QAAQ,CAAA;IAEnB,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,KAAK,EAAE,EAAE,gBAAgB,EAA4B,EAAE,EAAE;QAElF,IAAI,CAAC,gBAAgB,CAAC,MAAM;YAAE,IAAA,kBAAU,EAAC,8BAA8B,CAAC,CAAC;QAEzE,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,iCAAwB,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,CAAC;QAE7I,OAAO,QAAQ,CAAA;IACnB,CAAC,CAAC;IAEF,+BAA+B;IAC/B,8CAA8C;IAC9C,IAAI;IAEJ;;;;;OAKG;IACH,MAAM,qBAAqB,GAAG,CAC1B,SAAe,EACf,KAAgC,EAC5B,EAAE;QAEN,sFAAsF;QACtF,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,mCAAmC;QAE/E,QAAQ,KAAK,EAAE,CAAC;YACZ,KAAK,SAAS;gBACV,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;gBACnC,MAAM;YACV,KAAK,QAAQ;gBACT,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;gBACzC,MAAM;YACV;gBACI,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC,CAAA;IAED,OAAO;QACH,gBAAgB;QAChB,mBAAmB;QACnB,mBAAmB;QACnB,oBAAoB;QACpB,kBAAkB;QAClB,qBAAqB;KACxB,CAAA;AAEL,CAAC,CAAA;AA7JY,QAAA,oBAAoB,wBA6JhC","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
package/prisma/schema.prisma
CHANGED
|
@@ -2847,21 +2847,22 @@ model agents {
|
|
|
2847
2847
|
}
|
|
2848
2848
|
|
|
2849
2849
|
model subscribe_plans {
|
|
2850
|
-
subscribe_plan_id
|
|
2851
|
-
createdatetime
|
|
2852
|
-
createuserid
|
|
2853
|
-
updatedatetime
|
|
2854
|
-
updateuserid
|
|
2855
|
-
isdelete
|
|
2856
|
-
istrash
|
|
2857
|
-
accountid
|
|
2858
|
-
name
|
|
2859
|
-
short_description
|
|
2860
|
-
full_description
|
|
2861
|
-
price
|
|
2862
|
-
currency
|
|
2863
|
-
billing_cycle
|
|
2864
|
-
status
|
|
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)
|
|
2865
2866
|
|
|
2866
2867
|
@@schema("public")
|
|
2867
2868
|
}
|