feat: add manual subscription finalization functionality and support for expired plan notifications
This commit is contained in:
@@ -8,6 +8,7 @@ import {
|
||||
SysAdminOrganizationsStatusParams,
|
||||
SysAdminRecalculatePlanUsageCycleParams,
|
||||
SysAdminExtendUserSubscriptionParams,
|
||||
SysAdminFinalizeUserSubscriptionParams,
|
||||
SysAdminUserSubscriptionDetailsParams,
|
||||
} from "../models/Users.Model";
|
||||
|
||||
@@ -101,4 +102,15 @@ export class UsersController {
|
||||
res.status(500).json(error?.response?.data || { success: false, message: "Internal Server Error" });
|
||||
}
|
||||
};
|
||||
|
||||
public finalizeSubscription = async (req: Request, res: Response): Promise<void> => {
|
||||
try {
|
||||
const data: SysAdminFinalizeUserSubscriptionParams = req.body;
|
||||
const result = await usersService.finalizeSubscription(data);
|
||||
res.json(result);
|
||||
} catch (error: any) {
|
||||
console.error("Error finalizing subscription:", error?.response?.data || error);
|
||||
res.status(500).json(error?.response?.data || { success: false, message: "Internal Server Error" });
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -92,6 +92,18 @@ export type SysAdminExtendUserSubscriptionResult = {
|
||||
transactionId?: string;
|
||||
};
|
||||
|
||||
export type SysAdminFinalizeUserSubscriptionParams = {
|
||||
userId: string;
|
||||
reason?: string;
|
||||
};
|
||||
|
||||
export type SysAdminFinalizeUserSubscriptionResult = {
|
||||
userId: string;
|
||||
subscriptionId: string;
|
||||
previousEndDate: string;
|
||||
newEndDate: string;
|
||||
};
|
||||
|
||||
export type SysAdminUserSubscriptionDetailsResult = {
|
||||
userId: string;
|
||||
currentSubscription: {
|
||||
|
||||
@@ -11,6 +11,7 @@ router.post("/organizations-status", usersController.organizationsStatus);
|
||||
router.post("/recalculate-plan-usage-cycle", usersController.recalculatePlanUsageCycle);
|
||||
router.post("/subscription-details", usersController.subscriptionDetails);
|
||||
router.post("/extend-subscription", usersController.extendSubscription);
|
||||
router.post("/finalize-subscription", usersController.finalizeSubscription);
|
||||
router.post("/delete", usersController.deleteUser);
|
||||
|
||||
export default router;
|
||||
|
||||
@@ -14,6 +14,8 @@ import {
|
||||
SysAdminRecalculatePlanUsageCycleResult,
|
||||
SysAdminExtendUserSubscriptionParams,
|
||||
SysAdminExtendUserSubscriptionResult,
|
||||
SysAdminFinalizeUserSubscriptionParams,
|
||||
SysAdminFinalizeUserSubscriptionResult,
|
||||
SysAdminUserSubscriptionDetailsParams,
|
||||
SysAdminUserSubscriptionDetailsResult,
|
||||
} from "../models/Users.Model";
|
||||
@@ -120,4 +122,18 @@ export class UsersService {
|
||||
|
||||
return response.data;
|
||||
}
|
||||
|
||||
public async finalizeSubscription(
|
||||
data: SysAdminFinalizeUserSubscriptionParams
|
||||
): Promise<SysAdminFinalizeUserSubscriptionResult> {
|
||||
const nonce = await getSysAdminNonce();
|
||||
const postData = { ...data, ...{ payload: getPayload(nonce) } };
|
||||
|
||||
const response = await axios.post(`${getApiHost()}/sysadmin/subscriptions/finalize-user`, postData, {
|
||||
headers: { "Content-Type": "application/json" },
|
||||
timeout: 10000,
|
||||
});
|
||||
|
||||
return response.data;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user