From 710dff90db238aae6bc88e391c3a50bd4336988d Mon Sep 17 00:00:00 2001
From: azeeee05
Date: Wed, 29 Apr 2026 11:45:50 +0300
Subject: [PATCH] changes done on subscription module with saas
---
src/application/authentication/AuthTypes.ts | 14 +++++-
.../subscriptions/SubscriptionTypes.ts | 5 ++-
.../components/AddSubscriptions.tsx | 15 +++++++
.../components/AllSubscriptions.tsx | 45 ++++++++++++++++---
4 files changed, 71 insertions(+), 8 deletions(-)
diff --git a/src/application/authentication/AuthTypes.ts b/src/application/authentication/AuthTypes.ts
index 11e9a94..b0282f8 100644
--- a/src/application/authentication/AuthTypes.ts
+++ b/src/application/authentication/AuthTypes.ts
@@ -6,11 +6,20 @@ export type Access = {
};
export type Role = {
- id: string;
- role_name: string;
+ id?: string | null;
+ role_name?: string | null;
accesses: string[];
};
+export type SubscriptionDetails = {
+ plan_id?: string | null;
+ plan_name?: string | null;
+ start_date?: string | null;
+ end_date?: string | null;
+ status?: string | null;
+ is_active?: boolean | null;
+};
+
export type AuthUser = {
id: string;
email: string;
@@ -21,6 +30,7 @@ export type AuthUser = {
tenant_id?: string | null;
tenant_name?: string | null;
tenant_logo_url?: string | null;
+ subscription_details?: SubscriptionDetails | null;
preferred_language?: string | null;
created_at: string;
updated_at: string;
diff --git a/src/application/subscriptions/SubscriptionTypes.ts b/src/application/subscriptions/SubscriptionTypes.ts
index 4c75ea7..b07fe1f 100644
--- a/src/application/subscriptions/SubscriptionTypes.ts
+++ b/src/application/subscriptions/SubscriptionTypes.ts
@@ -4,6 +4,7 @@ export type SubscriptionPlan = {
description?: string | null;
price?: number | null;
duration_days?: number | null;
+ max_users_allowed?: number | null;
is_public: boolean;
status: string;
created_at: string;
@@ -20,6 +21,7 @@ export type SubscriptionPlanCreateRequest = {
description?: string;
price?: number;
duration_days?: number;
+ max_users_allowed?: number;
is_public?: boolean;
status?: string;
access_ids?: string[];
@@ -31,6 +33,7 @@ export type SubscriptionPlanUpdateRequest = {
description?: string;
price?: number;
duration_days?: number;
+ max_users_allowed?: number;
is_public?: boolean;
status?: string;
access_ids?: string[];
@@ -43,4 +46,4 @@ export type SubscriptionPlanPaginatedResponse = {
page: number;
page_size: number;
total_pages: number;
-};
\ No newline at end of file
+};
diff --git a/src/application/subscriptions/components/AddSubscriptions.tsx b/src/application/subscriptions/components/AddSubscriptions.tsx
index d581200..46444ca 100644
--- a/src/application/subscriptions/components/AddSubscriptions.tsx
+++ b/src/application/subscriptions/components/AddSubscriptions.tsx
@@ -20,6 +20,7 @@ const AddSubscriptions = () => {
description: "",
price: undefined,
duration_days: undefined,
+ max_users_allowed: undefined,
is_public: true,
status: "active",
access_ids: [],
@@ -98,6 +99,7 @@ const AddSubscriptions = () => {
description: formData.description?.trim() || undefined,
price: formData.price ? Number(formData.price) : undefined,
duration_days: formData.duration_days ? Number(formData.duration_days) : undefined,
+ max_users_allowed: formData.max_users_allowed ?? undefined,
is_public: formData.is_public,
status: formData.status,
access_ids: accessIds,
@@ -174,6 +176,19 @@ const AddSubscriptions = () => {
}))
}
/>
+
+ setFormData((prev) => ({
+ ...prev,
+ max_users_allowed: e.target.value ? Number(e.target.value) : undefined,
+ }))
+ }
+ />
{
description: "",
price: undefined,
duration_days: undefined,
+ max_users_allowed: undefined,
is_public: true,
status: "active",
});
@@ -263,6 +265,7 @@ const AllSubscriptions = () => {
description: plan.description ?? "",
price: plan.price ?? undefined,
duration_days: plan.duration_days ?? undefined,
+ max_users_allowed: plan.max_users_allowed ?? undefined,
is_public: plan.is_public,
status: plan.status,
});
@@ -326,6 +329,7 @@ const AllSubscriptions = () => {
description: editForm.description.trim() || undefined,
price: editForm.price ? Number(editForm.price) : undefined,
duration_days: editForm.duration_days ? Number(editForm.duration_days) : undefined,
+ max_users_allowed: editForm.max_users_allowed ?? undefined,
is_public: editForm.is_public,
status: editForm.status,
access_ids: accessIds,
@@ -407,6 +411,16 @@ const AllSubscriptions = () => {
),
},
+ {
+ key: "max_users_allowed",
+ header: "User Limit",
+ searchable: false,
+ render: (row) => (
+
+ {row.max_users_allowed == null ? "Unlimited" : row.max_users_allowed}
+
+ ),
+ },
{
key: "status",
visibilityLabel: "Status",
@@ -606,6 +620,14 @@ const AllSubscriptions = () => {
{selectedPlan.duration_days ? `${selectedPlan.duration_days} days` : "-"}
+
+
+ User Limit
+
+
+ {selectedPlan.max_users_allowed == null ? "Unlimited" : selectedPlan.max_users_allowed}
+
+
Status
@@ -725,11 +747,11 @@ const AllSubscriptions = () => {
}))
}
/>
-
setEditForm((prev) => ({
@@ -738,6 +760,19 @@ const AllSubscriptions = () => {
}))
}
/>
+
+ setEditForm((prev) => ({
+ ...prev,
+ max_users_allowed: e.target.value ? Number(e.target.value) : undefined,
+ }))
+ }
+ />