ifixkart-admin/services/api/userService.ts

88 lines
2.1 KiB
TypeScript

import { apiFetch } from './client';
import { API_ENDPOINTS } from './config';
export interface UserResponse {
user_id: string;
employee_code: string | null;
first_name: string;
last_name: string;
display_name: string | null;
email: string;
phone: string;
profile_image_id: string | null;
gender: string | null;
dob: string | null;
department_id: string;
designation_id: string;
role_id: string;
manager_id: string | null;
is_active: boolean;
email_verified: boolean;
phone_verified: boolean;
created_at: string;
last_login?: string | null;
last_activity?: string | null;
}
export interface UserCreate {
first_name: string;
last_name: string;
display_name?: string;
email: string;
phone: string;
password: string;
gender?: string;
dob?: string;
department_id: string;
designation_id: string;
role_id: string;
manager_id?: string;
}
export interface UserUpdate {
first_name?: string;
last_name?: string;
display_name?: string;
email?: string;
phone?: string;
password?: string;
gender?: string;
dob?: string;
department_id?: string;
designation_id?: string;
role_id?: string;
manager_id?: string;
profile_image_id?: string;
}
export const userService = {
async getAll(skip = 0, limit = 100): Promise<UserResponse[]> {
return apiFetch<UserResponse[]>(
`${API_ENDPOINTS.USERS_ALL}?skip=${skip}&limit=${limit}`
);
},
async getProfile(userId: string): Promise<UserResponse> {
return apiFetch<UserResponse>(API_ENDPOINTS.USERS_PROFILE(userId));
},
async create(data: UserCreate): Promise<UserResponse> {
return apiFetch<UserResponse>(API_ENDPOINTS.USERS_CREATE, {
method: 'POST',
body: JSON.stringify(data),
});
},
async update(userId: string, data: UserUpdate): Promise<UserResponse> {
return apiFetch<UserResponse>(API_ENDPOINTS.USERS_UPDATE(userId), {
method: 'PUT',
body: JSON.stringify(data),
});
},
async delete(userId: string): Promise<{ detail: string }> {
return apiFetch<{ detail: string }>(API_ENDPOINTS.USERS_DELETE(userId), {
method: 'DELETE',
});
},
};