Files
lcbp3/frontend/lib/services/project.service.ts
T
admin c5c3ed9016
Build and Deploy / deploy (push) Successful in 9m24s
260316:1117 20260316:1100 Refactor UUID
2026-03-16 11:17:15 +07:00

57 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 })
};