Files
lcbp3/frontend/lib/services/review-team.service.ts
admin 0240d80da5
CI / CD Pipeline / build (push) Successful in 6m1s
CI / CD Pipeline / deploy (push) Failing after 6m42s
690514:2019 204-rfa-approval-refactor #01
2026-05-14 20:19:21 +07:00

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;
},
};