import { api, ApiResponse } from '../index'; import type { TUsersListItem, TUsersDetailItem, TUserCreateRequest, TUserUpdateRequest, } from '../../types/users'; import type { TApiPaginated, TPaginationParams } from '../../types/common'; // Re-export for backward compatibility export type UserDetailResponseDto = TUsersDetailItem; export type UserUpdateRequestDto = TUserUpdateRequest; export const getUserList = async (params?: TPaginationParams): Promise> => { const response = await api.get>('/v1/iam/users', { params }); return response.data; }; export const getUserMe = async (): Promise => { const response = await api.get>('/v1/iam/users/me'); return response.data.data; }; export const getUserById = async (id: string): Promise => { const response = await api.get>(`/v1/iam/users/detail/${id}`); return response.data.data; }; export const createUser = async (data: TUserCreateRequest): Promise => { const response = await api.post>('/v1/iam/users/create', data); return response.data.data; }; export const updateUserMe = async (data: TUserUpdateRequest): Promise => { const response = await api.put>('/v1/iam/users/update/me', data); return response.data.data; }; export const updateUserById = async (id: string, data: TUserUpdateRequest): Promise => { const response = await api.put>(`/v1/iam/users/update/${id}`, data); return response.data.data; }; export const activateUser = async (id: string, is_active: boolean): Promise<{ message: string }> => { const response = await api.put<{ message: string }>(`/v1/iam/users/activate/${id}`, { is_active }); return response.data; }; export const deleteUser = async (id: string): Promise<{ message: string }> => { const response = await api.delete<{ message: string }>(`/v1/iam/users/delete/${id}`); return response.data; }; export const uploadUserFile = async (file: File): Promise<{ url: string }> => { const formData = new FormData(); formData.append('file', file); const response = await api.post>('/v1/iam/users/upload', formData, { headers: { 'Content-Type': 'multipart/form-data' }, }); return response.data.data; }; // Legacy service object for backward compatibility export const userService = { getUserMe, getUserById, updateUserMe, updateUserById: (id: string, data: TUserUpdateRequest) => updateUserById(id, data), };