diff --git a/src/app/admin/user-management/page.tsx b/src/app/admin/user-management/page.tsx index 44eb754..9af0735 100644 --- a/src/app/admin/user-management/page.tsx +++ b/src/app/admin/user-management/page.tsx @@ -98,15 +98,9 @@ export default function AdminUserManagementPage() { const companyName = u.company_name || '' const fullName = u.user_type === 'company' ? companyName : `${firstName} ${lastName}` - // Map backend status to frontend status - // Backend status can be: 'pending', 'active', 'suspended', 'inactive', 'archived' - // is_admin_verified: 1 = verified by admin, 0 = not verified - const userStatus: UserStatus = u.status === 'archived' ? 'archived' : - u.status === 'inactive' ? 'inactive' : - u.status === 'suspended' ? 'suspended' : - u.is_admin_verified === 1 ? 'active' : - u.status === 'pending' ? 'pending' : - 'pending' // default fallback + // Use backend status directly for filtering + const allowedStatuses: UserStatus[] = ['pending','active','suspended','inactive','archived'] + const userStatus: UserStatus = (allowedStatuses.includes(u.status as UserStatus) ? u.status : 'pending') as UserStatus return ( (fType === 'all' || u.user_type === fType) && @@ -130,8 +124,8 @@ export default function AdminUserManagementPage() { admins: allUsers.filter(u => u.role === 'admin').length, personal: allUsers.filter(u => u.user_type === 'personal').length, company: allUsers.filter(u => u.user_type === 'company').length, - active: allUsers.filter(u => u.is_admin_verified === 1).length, - pending: allUsers.filter(u => u.is_admin_verified !== 1).length, + active: allUsers.filter(u => u.status === 'active').length, + pending: allUsers.filter(u => u.status === 'pending').length, }), [allUsers]) // Show loading during SSR/initial client render @@ -183,12 +177,9 @@ export default function AdminUserManagementPage() { 'First Name','Last Name','Company Name','Created At','Last Login At' ] const rows = filtered.map(u => { - // Map backend to friendly values - const userStatus: UserStatus = u.status === 'archived' ? 'archived' : - u.status === 'inactive' ? 'inactive' : - u.status === 'suspended' ? 'suspended' : - u.is_admin_verified === 1 ? 'active' : - u.status === 'pending' ? 'pending' : 'pending' + // Use backend status directly + const allowedStatuses: UserStatus[] = ['active','pending','suspended','inactive','archived'] + const userStatus: UserStatus = (allowedStatuses.includes(u.status as UserStatus) ? u.status : 'pending') as UserStatus return [ u.id, u.email, @@ -436,13 +427,9 @@ export default function AdminUserManagementPage() { ? (u.company_name?.[0] || 'C').toUpperCase() : `${u.first_name?.[0] || 'U'}${u.last_name?.[0] || 'U'}`.toUpperCase() - // Map backend status to frontend status for display - const userStatus: UserStatus = u.status === 'archived' ? 'archived' : - u.status === 'inactive' ? 'inactive' : - u.status === 'suspended' ? 'suspended' : - u.is_admin_verified === 1 ? 'active' : - u.status === 'pending' ? 'pending' : - 'pending' // default fallback + // Use backend status directly for display to avoid desync + const allowedStatuses: UserStatus[] = ['active','pending','suspended','inactive','archived'] + const userStatus: UserStatus = (allowedStatuses.includes(u.status as UserStatus) ? u.status : 'pending') as UserStatus const createdDate = new Date(u.created_at).toLocaleDateString() const lastLoginDate = u.last_login_at ? new Date(u.last_login_at).toLocaleDateString() : 'Never'