2025-08-18 12:50:32 +07:00
|
|
|
import { api, ApiResponse } from '../index';
|
|
|
|
|
import { TUserItem } from '../../types/users';
|
|
|
|
|
|
|
|
|
|
export interface UserDetailResponseDto extends TUserItem {
|
|
|
|
|
bio?: string;
|
|
|
|
|
location?: string;
|
|
|
|
|
website_url?: string;
|
|
|
|
|
linkedin_url?: string;
|
|
|
|
|
github_url?: string;
|
|
|
|
|
twitter_url?: string;
|
|
|
|
|
skills?: string[];
|
|
|
|
|
career_status?: string;
|
|
|
|
|
experience?: Array<{
|
|
|
|
|
id: string;
|
|
|
|
|
company: string;
|
|
|
|
|
position: string;
|
|
|
|
|
duration: string;
|
|
|
|
|
period: string;
|
|
|
|
|
}>;
|
|
|
|
|
education?: Array<{
|
|
|
|
|
id: string;
|
|
|
|
|
institution: string;
|
|
|
|
|
degree: string;
|
|
|
|
|
field: string;
|
|
|
|
|
period: string;
|
|
|
|
|
}>;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface UserUpdateRequestDto {
|
|
|
|
|
fullname?: string;
|
|
|
|
|
bio?: string;
|
|
|
|
|
location?: string;
|
|
|
|
|
website_url?: string;
|
|
|
|
|
linkedin_url?: string;
|
|
|
|
|
github_url?: string;
|
|
|
|
|
twitter_url?: string;
|
|
|
|
|
skills?: string[];
|
|
|
|
|
phone_number?: string;
|
|
|
|
|
birthdate?: string;
|
|
|
|
|
gender?: string;
|
|
|
|
|
career_status?: string;
|
|
|
|
|
avatar?: string;
|
|
|
|
|
cv_url?: string;
|
|
|
|
|
phone_for_verification?: string;
|
|
|
|
|
domicile?: string;
|
|
|
|
|
experience?: Array<{
|
|
|
|
|
id: string;
|
|
|
|
|
company: string;
|
|
|
|
|
position: string;
|
|
|
|
|
duration: string;
|
|
|
|
|
period: string;
|
|
|
|
|
}>;
|
|
|
|
|
education?: Array<{
|
|
|
|
|
id: string;
|
|
|
|
|
institution: string;
|
|
|
|
|
degree: string;
|
|
|
|
|
field: string;
|
|
|
|
|
period: string;
|
|
|
|
|
}>;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface UserService {
|
|
|
|
|
getUserMe(): Promise<UserDetailResponseDto>;
|
|
|
|
|
getUserById(id: string): Promise<UserDetailResponseDto>;
|
|
|
|
|
updateUserMe(data: UserUpdateRequestDto): Promise<UserDetailResponseDto>;
|
|
|
|
|
updateUserById(id: string, data: UserUpdateRequestDto): Promise<UserDetailResponseDto>;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const userService: UserService = {
|
|
|
|
|
async getUserMe() {
|
|
|
|
|
const response = await api.get<ApiResponse<UserDetailResponseDto>>('/users/me');
|
|
|
|
|
return response.data.data;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
async getUserById(id: string) {
|
|
|
|
|
const response = await api.get<ApiResponse<UserDetailResponseDto>>(`/users/detail/${id}`);
|
|
|
|
|
return response.data.data;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
async updateUserMe(data: UserUpdateRequestDto) {
|
|
|
|
|
const response = await api.put<ApiResponse<UserDetailResponseDto>>('/users/update/me', data);
|
|
|
|
|
return response.data.data;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
async updateUserById(id: string, data: UserUpdateRequestDto) {
|
|
|
|
|
const response = await api.put<ApiResponse<UserDetailResponseDto>>(`/users/${id}`, data);
|
|
|
|
|
return response.data.data;
|
|
|
|
|
},
|
|
|
|
|
};
|