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 -5
View File
@@ -36,13 +36,13 @@ export default function SettlementsPage() {
queryFn: () => {
const params = new URLSearchParams({ page: String(page), limit: String(limit) });
if (statusFilter) params.set('status', statusFilter);
return api.get<PaginatedResponse<Settlement>>(`/api/v1/settlements?${params}`);
return api.get<PaginatedResponse<Settlement>>(`/api/v1/admin/settlements?${params}`);
},
});
const approveMutation = useMutation({
mutationFn: (s: Settlement) =>
api.patch<ApiResponse<null>>(`/api/v1/settlement/${s.uuid}/approve`, {}),
api.post<ApiResponse<null>>(`/api/v1/settlement/${s.uuid}/approve`, {}),
onSuccess: () => {
toast.success('تسویه تأیید شد');
setApproveTarget(null);
@@ -53,7 +53,7 @@ export default function SettlementsPage() {
const rejectMutation = useMutation({
mutationFn: ({ s, reason }: { s: Settlement; reason: string }) =>
api.patch<ApiResponse<null>>(`/api/v1/settlement/${s.uuid}/reject`, { reason }),
api.post<ApiResponse<null>>(`/api/v1/settlement/${s.uuid}/reject`, { reason }),
onSuccess: () => {
toast.success('تسویه رد شد');
setRejectTarget(null);
@@ -72,8 +72,8 @@ export default function SettlementsPage() {
{ key: 'requested_at', header: 'تاریخ درخواست', render: (s) => formatDate(s.requested_at) },
];
const items = data?.data?.items ?? [];
const total = data?.data?.total ?? 0;
const items = data?.data ?? [];
const total = data?.meta?.totalRecords ?? 0;
return (
<div>