import { apiRequest } from "@/shared/api/request"; import { API_ENDPOINTS, API_OPERATIONS, apiEndpointPath } from "@/shared/api/generated/endpoints"; import type { AdminUserDto, ApiPage, CreateUserResultDto, EntityId, PageQuery, ResetPasswordResultDto, UserFormPayload, UserStatus, UserUpdatePayload } from "@/shared/api/types"; export function listUsers(query?: PageQuery): Promise> { return apiRequest>(apiEndpointPath(API_OPERATIONS.listUsers), { query }); } export function getUser(id: EntityId): Promise { return apiRequest(apiEndpointPath(API_OPERATIONS.getUser, { id })); } export function createUser(payload: UserFormPayload): Promise { const endpoint = API_ENDPOINTS.createUser; return apiRequest(apiEndpointPath(API_OPERATIONS.createUser), { body: payload, method: endpoint.method }); } export function updateUser(id: EntityId, payload: UserUpdatePayload): Promise { const endpoint = API_ENDPOINTS.updateUser; return apiRequest(apiEndpointPath(API_OPERATIONS.updateUser, { id }), { body: payload, method: endpoint.method }); } export function updateUserStatus(id: EntityId, status: UserStatus): Promise { const endpoint = API_ENDPOINTS.updateUserStatus; return apiRequest(apiEndpointPath(API_OPERATIONS.updateUserStatus, { id }), { body: { status }, method: endpoint.method }); } export function resetUserPassword(id: EntityId, password?: string): Promise { const endpoint = API_ENDPOINTS.resetUserPassword; return apiRequest(apiEndpointPath(API_OPERATIONS.resetUserPassword, { id }), { body: { password }, method: endpoint.method }); } export function batchUpdateUserStatus(ids: EntityId[], status: UserStatus): Promise { const endpoint = API_ENDPOINTS.batchUpdateUserStatus; return apiRequest(apiEndpointPath(API_OPERATIONS.batchUpdateUserStatus), { body: { ids, status }, method: endpoint.method }); } export function exportUsers(query?: PageQuery): Promise { return apiRequest(apiEndpointPath(API_OPERATIONS.exportUsers), { query, raw: true }); }