diff --git a/app/admin/members/page.tsx b/app/admin/members/page.tsx index ac4e962..8ab1d6a 100644 --- a/app/admin/members/page.tsx +++ b/app/admin/members/page.tsx @@ -42,19 +42,31 @@ import { Checkbox } from "@/components/ui/checkbox" interface User { id: string + username: string name: string email: string is_active: boolean created_at: string updated_at: string - roles: Array<{ + roles?: Array<{ id: string name: string code: string - }> + }> | null department_response?: { name: string } | null + profile?: { + user_id: string + full_name: string + timezone: string + locale: string + preferences: any + notification_prefs: any + created_at: string + updated_at: string + roles: any + } | null } interface ApiResponse { @@ -164,6 +176,13 @@ function MembersPageContent() { } }, [user]) + // Reset search when changing pages since search is limited to current page + useEffect(() => { + if (user && currentPage > 1) { + setSearchTerm("") + } + }, [currentPage]) + // Reset to first page when filters change useEffect(() => { if (user && (searchTerm || statusFilter !== "all")) { @@ -181,11 +200,18 @@ function MembersPageContent() { if (data.success) { setUsers(data.data.users) setTotalUsers(data.data.pagination.total_count) - setCurrentPage(page) + setCurrentPage(data.data.pagination.page) + + console.log('📊 Pagination Info:', { + currentPage: data.data.pagination.page, + totalCount: data.data.pagination.total_count, + totalPages: data.data.pagination.total_pages, + limit: data.data.pagination.limit + }) toast({ title: "Success", - description: `Fetched ${data.data.users.length} users`, + description: `Fetched ${data.data.users.length} users (Page ${data.data.pagination.page} of ${data.data.pagination.total_pages})`, }) } else { toast({ @@ -434,6 +460,7 @@ function MembersPageContent() { const filteredUsers = users.filter((user) => { const matchesSearch = user.name.toLowerCase().includes(searchTerm.toLowerCase()) || + user.username.toLowerCase().includes(searchTerm.toLowerCase()) || user.email.toLowerCase().includes(searchTerm.toLowerCase()) || (user.department_response?.name || "").toLowerCase().includes(searchTerm.toLowerCase()) @@ -473,7 +500,7 @@ function MembersPageContent() { -
{users.length}
+
{totalUsers}
@@ -485,6 +512,7 @@ function MembersPageContent() {
{users.filter(u => u.is_active).length} + / {totalUsers}
@@ -497,6 +525,7 @@ function MembersPageContent() {
{users.filter(u => !u.is_active).length} + / {totalUsers}
@@ -527,11 +556,14 @@ function MembersPageContent() { setSearchTerm(e.target.value)} className="pl-10" /> +

+ Search is limited to the current page. Use pagination to view more users. +

@@ -623,7 +655,7 @@ function MembersPageContent() { Users List Showing {startIndex}-{endIndex} of {totalUsers} total users - {filteredUsers.length !== users.length && ` (${filteredUsers.length} filtered)`} + {filteredUsers.length !== users.length && ` (${filteredUsers.length} filtered from current page)`} @@ -640,38 +672,42 @@ function MembersPageContent() { ) : (
- - - - Name - Email - Department - Role - Status - Created - - - - {filteredUsers.map((user) => ( - - {user.name} - {user.email} - - {user.department_response?.name || "N/A"} - - - {getRoleBadge(user.roles)} - - - {getStatusBadge(user.is_active)} - - - {new Date(user.created_at).toLocaleDateString()} - +
+ + + Username + Name + Email + Department + Role + Status + Created - ))} - -
+ + + {filteredUsers.map((user) => ( + + + {user.username} + + {user.name} + {user.email} + + {user.department_response?.name || "N/A"} + + + {getRoleBadge(user.roles)} + + + {getStatusBadge(user.is_active)} + + + {new Date(user.created_at).toLocaleDateString()} + + + ))} + +
)}