feat: implement admin API for user and representation management

- Updated UsersPage to fetch users from the new admin endpoint.
- Enhanced user data structure to include 'name' and modified rendering logic.
- Added RepresentationDetailPage for detailed representation management.
- Created AdminApiController to handle user and representation CRUD operations.
- Implemented pagination and search functionality for users and representations.
- Updated user and representation data models to reflect new API structure.
This commit is contained in:
hamed
2026-06-09 23:41:44 +03:30
parent f619449167
commit 147a2a894e
20 changed files with 1067 additions and 228 deletions
+5 -7
View File
@@ -25,7 +25,7 @@ export default function UsersPage() {
queryKey: ['users', page, search],
queryFn: () =>
api.get<PaginatedResponse<User>>(
`/api/v1/users?page=${page}&limit=${limit}${search ? `&search=${encodeURIComponent(search)}` : ''}`,
`/api/v1/admin/users?page=${page}&limit=${limit}${search ? `&search=${encodeURIComponent(search)}` : ''}`,
),
});
@@ -45,9 +45,7 @@ export default function UsersPage() {
header: 'نام',
render: (u) => (
<span className="font-medium text-gray-900">
{u.first_name || u.last_name
? `${u.first_name ?? ''} ${u.last_name ?? ''}`.trim()
: '—'}
{u.name || (u.first_name || u.last_name ? `${u.first_name ?? ''} ${u.last_name ?? ''}`.trim() : '—')}
</span>
),
},
@@ -81,8 +79,8 @@ export default function UsersPage() {
},
];
const items = data?.data?.items ?? [];
const total = data?.data?.total ?? 0;
const items = data?.data ?? [];
const total = data?.meta?.totalRecords ?? 0;
return (
<div>
@@ -132,7 +130,7 @@ export default function UsersPage() {
<ConfirmDialog
open={!!deleteTarget}
title="حذف کاربر"
message={`آیا از حذف کاربر "${deleteTarget?.first_name ?? deleteTarget?.mobile_number}" اطمینان دارید؟ این عمل قابل بازگشت نیست.`}
message={`آیا از حذف کاربر "${deleteTarget?.name ?? deleteTarget?.mobile_number}" اطمینان دارید؟ این عمل قابل بازگشت نیست.`}
confirmLabel="حذف"
danger
loading={deleteMutation.isPending}