import api, { ApiResponse } from './api'; // Types export interface User { id: string; email: string; role: string; status: string; emailVerified: boolean; authProvider: string; createdAt: string; lastLoginAt: string | null; profile: { firstName: string; lastName: string; avatar: string | null; phone: string | null; city: string | null; state: string | null; country: string | null; } | null; } export interface UsersListResponse { users: User[]; total: number; page: number; limit: number; } export interface UserFilters { page?: number; limit?: number; role?: string; status?: string; search?: string; } // Users Service class UsersService { private basePath = '/users'; async getUsers(filters: UserFilters = {}): Promise { const params = new URLSearchParams(); if (filters.page) params.append('page', filters.page.toString()); if (filters.limit) params.append('limit', filters.limit.toString()); if (filters.role) params.append('role', filters.role); if (filters.status) params.append('status', filters.status); if (filters.search) params.append('search', filters.search); const queryString = params.toString(); const url = queryString ? `${this.basePath}?${queryString}` : this.basePath; const response = await api.get>(url); return response.data.data; } async getUserById(id: string): Promise { const response = await api.get>(`${this.basePath}/${id}`); return response.data.data; } async updateUser(id: string, data: Partial): Promise { const response = await api.patch>(`${this.basePath}/${id}`, data); return response.data.data; } async deleteUser(id: string): Promise { await api.delete(`${this.basePath}/${id}`); } async updateUserStatus(id: string, status: string): Promise { const response = await api.patch>(`${this.basePath}/${id}/status`, { status }); return response.data.data; } } export const usersService = new UsersService();