76 lines
2.1 KiB
TypeScript
76 lines
2.1 KiB
TypeScript
// File: lib/services/review-team.service.ts
|
|
import apiClient from '@/lib/api/client';
|
|
|
|
export interface CreateReviewTeamDto {
|
|
name: string;
|
|
description?: string;
|
|
projectPublicId: string;
|
|
defaultForRfaTypes?: string[];
|
|
}
|
|
|
|
export interface UpdateReviewTeamDto {
|
|
name?: string;
|
|
description?: string;
|
|
defaultForRfaTypes?: string[];
|
|
isActive?: boolean;
|
|
}
|
|
|
|
export interface AddTeamMemberDto {
|
|
userPublicId: string;
|
|
disciplineId: number;
|
|
role: 'REVIEWER' | 'LEAD' | 'MANAGER';
|
|
priorityOrder?: number;
|
|
}
|
|
|
|
export interface SearchReviewTeamDto {
|
|
projectPublicId?: string;
|
|
isActive?: boolean;
|
|
search?: string;
|
|
}
|
|
|
|
export const reviewTeamService = {
|
|
/** ดึง Review Teams ตาม project */
|
|
getAll: async (params?: SearchReviewTeamDto) => {
|
|
const response = await apiClient.get('/review-teams', { params });
|
|
return response.data;
|
|
},
|
|
|
|
/** ดึง Review Team เดียว (ADR-019) */
|
|
getByPublicId: async (publicId: string) => {
|
|
const response = await apiClient.get(`/review-teams/${publicId}`);
|
|
return response.data;
|
|
},
|
|
|
|
/** สร้าง Review Team */
|
|
create: async (data: CreateReviewTeamDto) => {
|
|
const response = await apiClient.post('/review-teams', data);
|
|
return response.data;
|
|
},
|
|
|
|
/** อัปเดต Review Team */
|
|
update: async (publicId: string, data: UpdateReviewTeamDto) => {
|
|
const response = await apiClient.patch(`/review-teams/${publicId}`, data);
|
|
return response.data;
|
|
},
|
|
|
|
/** เพิ่มสมาชิก */
|
|
addMember: async (teamPublicId: string, data: AddTeamMemberDto) => {
|
|
const response = await apiClient.post(`/review-teams/${teamPublicId}/members`, data);
|
|
return response.data;
|
|
},
|
|
|
|
/** ลบสมาชิก */
|
|
removeMember: async (teamPublicId: string, memberPublicId: string) => {
|
|
const response = await apiClient.delete(
|
|
`/review-teams/${teamPublicId}/members/${memberPublicId}`,
|
|
);
|
|
return response.data;
|
|
},
|
|
|
|
/** Deactivate Review Team */
|
|
deactivate: async (publicId: string) => {
|
|
const response = await apiClient.delete(`/review-teams/${publicId}`);
|
|
return response.data;
|
|
},
|
|
};
|