|
- "use server";
-
- // import { serverFetchJson } from "@/app/utils/fetchUtil";
- // import { BASE_API_URL } from "@/config/api";
- import { serverFetchJson } from "../../utils/fetchUtil";
- import { BASE_API_URL } from "../../../config/api";
- import { Task, TaskGroup } from "../tasks";
-
- export interface CreateProjectInputs {
- // Project details
- projectCode: string;
- projectName: string;
- projectCategory: string;
- projectDescription: string;
-
- // Client details
- clientCode: string;
- clientName: string;
- clientContactName: string;
- clientPhone: string;
- clientEmail: string;
- clientSubsidiary: string;
-
- // Tasks
- tasks: {
- [taskId: Task["id"]]: {
- manhourAllocation: ManhourAllocation;
- };
- };
-
- // Staff
- allocatedStaffIds: number[];
-
- // Milestones
- milestones: {
- [taskGroupId: TaskGroup["id"]]: {
- startDate: string;
- endDate: string;
- payments: PaymentInputs[];
- };
- };
- }
-
- export interface ManhourAllocation {
- [gradeId: number]: number;
- }
-
- export interface PaymentInputs {
- id: number;
- description: string;
- date: string;
- amount: number;
- }
-
- export const saveProject = async (data: CreateProjectInputs) => {
- return serverFetchJson(`${BASE_API_URL}/projects/new`, {
- method: "POST",
- body: JSON.stringify(data),
- headers: { "Content-Type": "application/json" },
- });
- };
|