Files
lcbp3/frontend/lib/services/project.service.ts
T
admin 11984bfa29
CI Pipeline / build (push) Failing after 12m41s
Build and Deploy / deploy (push) Failing after 2m44s
260322:1648 Correct Coresspondence / Doing RFA / Correct CI
2026-03-22 16:48:12 +07:00

53 lines
1.8 KiB
TypeScript

// File: lib/services/project.service.ts
import apiClient from '@/lib/api/client';
import { CreateProjectDto, UpdateProjectDto, SearchProjectDto } from '@/types/dto/project/project.dto';
export const projectService = {
// --- Basic CRUD ---
/**
* ดึงรายการโครงการทั้งหมด (รองรับ Search & Pagination)
* (เดิมคือ getAllProjects แต่ปรับให้รับ params ได้)
*/
getAll: async (params?: SearchProjectDto) => {
// GET /projects
const response = await apiClient.get('/projects', { params });
// Handle paginated response
if (response.data && Array.isArray(response.data.data)) {
return response.data.data;
}
return response.data;
},
/** ดึงรายละเอียดโครงการตาม UUID */
getByUuid: async (uuid: string) => {
const response = await apiClient.get(`/projects/${uuid}`);
return response.data;
},
/** สร้างโครงการใหม่ (Admin) */
create: async (data: CreateProjectDto) => {
const response = await apiClient.post('/projects', data);
return response.data;
},
/** แก้ไขโครงการ */
update: async (uuid: string, data: UpdateProjectDto) => {
const response = await apiClient.put(`/projects/${uuid}`, data);
return response.data;
},
/** ลบโครงการ (Soft Delete) */
delete: async (uuid: string) => {
const response = await apiClient.delete(`/projects/${uuid}`);
return response.data;
},
// --- Related Data / Dropdown Helpers ---
// --- Related Data / Dropdown Helpers ---
// Organizations and Contracts should now be fetched via their respective services
// organizationService.getAll({ projectId })
// contractService.getAll({ projectId })
};