diff --git a/src/components/UserCard.tsx b/src/components/UserCard.tsx index 20f433e6..cfb03aae 100644 --- a/src/components/UserCard.tsx +++ b/src/components/UserCard.tsx @@ -29,14 +29,18 @@ const expirationDateColor = (date: Date) => { interface Props { user: User; + loggedInUser: User; onClose: (reload?: boolean) => void; onViewStudents?: () => void; onViewTeachers?: () => void; } -const UserCard = ({user, onClose, onViewStudents, onViewTeachers}: Props) => { +const UserCard = ({user, loggedInUser, onClose, onViewStudents, onViewTeachers}: Props) => { const [expiryDate, setExpiryDate] = useState(user.subscriptionExpirationDate); const [referralAgent, setReferralAgent] = useState(user.corporateInformation?.referralAgent); + const [type, setType] = useState(user.type); + const [status, setStatus] = useState(user.status); + const {stats} = useStats(user.id); const {users} = useUsers(); @@ -44,7 +48,7 @@ const UserCard = ({user, onClose, onViewStudents, onViewTeachers}: Props) => { if (!confirm(`Are you sure you want to update ${user.name}'s account?`)) return; axios - .post<{user?: User; ok?: boolean}>(`/api/users/update?id=${user.id}`, {...user, subscriptionExpirationDate: expiryDate}) + .post<{user?: User; ok?: boolean}>(`/api/users/update?id=${user.id}`, {...user, subscriptionExpirationDate: expiryDate, type, status}) .then(() => { toast.success("User updated successfully!"); onClose(true); @@ -216,7 +220,12 @@ const UserCard = ({user, onClose, onViewStudents, onViewTeachers}: Props) => { expirationDateColor(expiryDate), "transition duration-300 ease-in-out", )} - filterDate={(date) => moment(date).isAfter(new Date())} + filterDate={(date) => + moment(date).isAfter(new Date()) && + (loggedInUser.subscriptionExpirationDate + ? moment(date).isBefore(moment(loggedInUser.subscriptionExpirationDate)) + : true) + } dateFormat="dd/MM/yyyy" selected={moment(expiryDate).toDate()} onChange={(date) => setExpiryDate(date)} @@ -225,6 +234,38 @@ const UserCard = ({user, onClose, onViewStudents, onViewTeachers}: Props) => { + {(loggedInUser.type === "developer" || loggedInUser.type === "owner") && ( + <> + +
+
+ + +
+
+ + +
+
+ + )} {user.type === "corporate" && ( <> diff --git a/src/dashboards/Corporate.tsx b/src/dashboards/Corporate.tsx index df74128f..0ba57e3e 100644 --- a/src/dashboards/Corporate.tsx +++ b/src/dashboards/Corporate.tsx @@ -250,6 +250,7 @@ export default function CorporateDashboard({user}: Props) { {selectedUser && (
{ setSelectedUser(undefined); if (shouldReload) reload(); diff --git a/src/dashboards/Owner.tsx b/src/dashboards/Owner.tsx index 14396d81..a41632cc 100644 --- a/src/dashboards/Owner.tsx +++ b/src/dashboards/Owner.tsx @@ -292,6 +292,7 @@ export default function OwnerDashboard({user}: Props) { {selectedUser && (
{ setSelectedUser(undefined); if (shouldReload) reload(); diff --git a/src/dashboards/Teacher.tsx b/src/dashboards/Teacher.tsx index 53468023..bcb3c38f 100644 --- a/src/dashboards/Teacher.tsx +++ b/src/dashboards/Teacher.tsx @@ -317,6 +317,7 @@ export default function TeacherDashboard({user}: Props) { {selectedUser && (
{ setSelectedUser(undefined); if (shouldReload) reload(); diff --git a/src/pages/(admin)/Lists/UserList.tsx b/src/pages/(admin)/Lists/UserList.tsx index 94fcdef3..6ff3b5c1 100644 --- a/src/pages/(admin)/Lists/UserList.tsx +++ b/src/pages/(admin)/Lists/UserList.tsx @@ -453,6 +453,7 @@ export default function UserList({user, filter}: {user: User; filter?: (user: Us {selectedUser && (
{ setSelectedUser(undefined); if (shouldReload) reload();