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> => { const response = await apiClient.post>(`${rootUrl}`, body); return response.data; }, get: async ( index: number, size: number, field: string | null, order: string | null, search: string | null, all = false ): Promise> => { 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>( `${rootUrl}?${params}` ); return response.data; }, getById: async (id: string): Promise> => { const response = await apiClient.get>(`${rootUrl}/${id}`); return response.data; }, getAll: async (projectId: string | null = null): Promise> => { const params = new URLSearchParams(projectId ? { project: projectId } : {}); const response = await apiClient.get>( `${rootUrl}/all${params.toString() ? '?' + params.toString() : ''}` ); return response.data; }, update: async (id: string, body: ITeamMemberCreateRequest): Promise> => { const response = await apiClient.put>(`${rootUrl}/${id}`, body); return response.data; }, delete: async (id: string): Promise> => { const response = await apiClient.delete>(`${rootUrl}/${id}`); return response.data; }, getTeamMembersByProjectId: async (projectId: string): Promise> => { const response = await apiClient.get>(`${rootUrl}/project/${projectId}`); return response.data; }, resendInvitation: async (id: string): Promise> => { const response = await apiClient.put>(`${rootUrl}/resend-invitation`, { id, }); return response.data; }, toggleMemberActiveStatus: async ( id: string, active: boolean, email: string ): Promise> => { const params = new URLSearchParams({ active: active.toString(), email, }); const response = await apiClient.get>( `${rootUrl}/deactivate/${id}?${params}` ); return response.data; }, addTeamMember: async ( id: string, body: ITeamMemberCreateRequest ): Promise> => { const response = await apiClient.put>(`${rootUrl}/add-member/${id}`, body); return response.data; }, };