diff --git a/apps/api/src/modules/clinics/settings.controller.ts b/apps/api/src/modules/clinics/settings.controller.ts index 9c47c43..0c74d98 100644 --- a/apps/api/src/modules/clinics/settings.controller.ts +++ b/apps/api/src/modules/clinics/settings.controller.ts @@ -34,6 +34,43 @@ router.get("/me", authorize(ALL_ROLES), async (req: Request, res: Response) => { }); }); +router.get("/me/subscription", authorize(ALL_ROLES), async (req: Request, res: Response) => { + const clinicId = req.user?.clinicId; + + if (!clinicId) { + return res.status(401).json({ + error: "Unauthorized", + message: "Authentication required", + }); + } + + const clinic = await ClinicModel.findById(clinicId) + .select({ subscriptionExpiryDate: 1 }) + .lean(); + + if (!clinic) { + return res.status(404).json({ + error: "NotFound", + message: "Clinic not found", + }); + } + + const expiryDate = clinic.subscriptionExpiryDate ?? null; + const daysRemaining = expiryDate + ? Math.ceil((new Date(expiryDate).getTime() - Date.now()) / (24 * 60 * 60 * 1000)) + : null; + + return res.json({ + status: "success", + data: { + expiryDate, + daysRemaining, + isExpired: daysRemaining !== null ? daysRemaining < 0 : false, + isWriteLocked: daysRemaining !== null ? daysRemaining < 0 : false, + }, + }); +}); + router.patch( "/me", authorize([Roles.CLINIC_ADMIN]),