Files
worklenz/worklenz-frontend/src/api/team-members/teamMembers.api.service.ts
chamikaJ 8825b0410a init
2025-04-17 18:28:54 +05:30

100 lines
3.4 KiB
TypeScript

import { IServerResponse } from '@/types/common.types';
import apiClient from '../api-client';
import { API_BASE_URL } from '@/shared/constants';
import { ITeamMemberCreateRequest } from '@/types/teamMembers/team-member-create-request';
import { ITeamMemberViewModel } from '@/types/teamMembers/teamMembersGetResponse.types';
import { ITeamMembersViewModel } from '@/types/teamMembers/teamMembersViewModel.types';
import { ITeamMember } from '@/types/teamMembers/teamMember.types';
const rootUrl = `${API_BASE_URL}/team-members`;
export const teamMembersApiService = {
createTeamMember: async (
body: ITeamMemberCreateRequest
): Promise<IServerResponse<ITeamMember>> => {
const response = await apiClient.post<IServerResponse<ITeamMember>>(`${rootUrl}`, body);
return response.data;
},
get: async (
index: number,
size: number,
field: string | null,
order: string | null,
search: string | null,
all = false
): Promise<IServerResponse<ITeamMembersViewModel>> => {
const s = encodeURIComponent(search || '');
const params = new URLSearchParams({
index: index.toString(),
size: size.toString(),
...(field && { field }),
...(order && { order }),
...(s && { search: s }),
...(all && { all: all.toString() }),
});
const response = await apiClient.get<IServerResponse<ITeamMembersViewModel>>(
`${rootUrl}?${params}`
);
return response.data;
},
getById: async (id: string): Promise<IServerResponse<ITeamMemberViewModel>> => {
const response = await apiClient.get<IServerResponse<ITeamMemberViewModel>>(`${rootUrl}/${id}`);
return response.data;
},
getAll: async (projectId: string | null = null): Promise<IServerResponse<ITeamMemberViewModel[]>> => {
const params = new URLSearchParams(projectId ? { project: projectId } : {});
const response = await apiClient.get<IServerResponse<ITeamMemberViewModel[]>>(
`${rootUrl}/all${params.toString() ? '?' + params.toString() : ''}`
);
return response.data;
},
update: async (id: string, body: ITeamMemberCreateRequest): Promise<IServerResponse<any>> => {
const response = await apiClient.put<IServerResponse<any>>(`${rootUrl}/${id}`, body);
return response.data;
},
delete: async (id: string): Promise<IServerResponse<any>> => {
const response = await apiClient.delete<IServerResponse<any>>(`${rootUrl}/${id}`);
return response.data;
},
getTeamMembersByProjectId: async (projectId: string): Promise<IServerResponse<any[]>> => {
const response = await apiClient.get<IServerResponse<any[]>>(`${rootUrl}/project/${projectId}`);
return response.data;
},
resendInvitation: async (id: string): Promise<IServerResponse<any>> => {
const response = await apiClient.put<IServerResponse<any>>(`${rootUrl}/resend-invitation`, {
id,
});
return response.data;
},
toggleMemberActiveStatus: async (
id: string,
active: boolean,
email: string
): Promise<IServerResponse<any>> => {
const params = new URLSearchParams({
active: active.toString(),
email,
});
const response = await apiClient.get<IServerResponse<any>>(
`${rootUrl}/deactivate/${id}?${params}`
);
return response.data;
},
addTeamMember: async (
id: string,
body: ITeamMemberCreateRequest
): Promise<IServerResponse<any>> => {
const response = await apiClient.put<IServerResponse<any>>(`${rootUrl}/add-member/${id}`, body);
return response.data;
},
};