diff --git a/src/app/(main)/dashboard/ProjectStatusByClient/page.tsx b/src/app/(main)/dashboard/ProjectStatusByClient/page.tsx index a4df131..1b51537 100644 --- a/src/app/(main)/dashboard/ProjectStatusByClient/page.tsx +++ b/src/app/(main)/dashboard/ProjectStatusByClient/page.tsx @@ -1,14 +1,17 @@ + import { Metadata } from "next"; import { I18nProvider } from "@/i18n"; import DashboardPage from "@/components/DashboardPage/DashboardPage"; import DashboardPageButton from "@/components/DashboardPage/DashboardTabButton"; import ProgressByClientSearch from "@/components/ProgressByClientSearch"; -import { Suspense } from "react"; +import { Suspense} from "react"; import Tabs, { TabsProps } from "@mui/material/Tabs"; import Tab from "@mui/material/Tab"; import Typography from "@mui/material/Typography"; import ProgressByClient from "@/components/ProgressByClient"; import { preloadClientProjects } from "@/app/api/clientprojects"; +import { ClientProjectResult} from "@/app/api/clientprojects"; +import { useSearchParams } from 'next/navigation'; export const metadata: Metadata = { title: "Project Status by Client", @@ -24,6 +27,7 @@ const ProjectStatusByClient: React.FC = () => { }> + ); }; diff --git a/src/app/api/clientprojects/actions.ts b/src/app/api/clientprojects/actions.ts index 27b80df..9de9ea5 100644 --- a/src/app/api/clientprojects/actions.ts +++ b/src/app/api/clientprojects/actions.ts @@ -21,8 +21,15 @@ export interface ClientSubsidiaryProjectResult { comingPaymentMilestone: string; } -export const fetchAllClientSubsidiaryProjects = cache(async (customerId: number, subsidiaryId: number) => { - return serverFetchJson( - `${BASE_API_URL}/dashboard/searchCustomerSubsidiaryProject?customerId=${customerId}&subsidiaryId=${subsidiaryId}` - ); +export const fetchAllClientSubsidiaryProjects = cache(async (customerId: number, subsidiaryId?: number) => { + if (subsidiaryId === 0){ + return serverFetchJson( + `${BASE_API_URL}/dashboard/searchCustomerSubsidiaryProject?customerId=${customerId}` + ); + } else { + return serverFetchJson( + `${BASE_API_URL}/dashboard/searchCustomerSubsidiaryProject?customerId=${customerId}&subsidiaryId=${subsidiaryId}` + ); + } + }); diff --git a/src/components/CreateProject/CreateProject.tsx b/src/components/CreateProject/CreateProject.tsx index 4242afb..fac9c79 100644 --- a/src/components/CreateProject/CreateProject.tsx +++ b/src/components/CreateProject/CreateProject.tsx @@ -170,12 +170,12 @@ const CreateProject: React.FC = ({ // Tab - Milestone let projectTotal = 0 - const milestonesKeys = Object.keys(data.milestones) + const milestonesKeys = Object.keys(data.milestones).filter(key => taskGroupKeys.includes(key)) milestonesKeys.filter(key => Object.keys(data.taskGroups).includes(key)).forEach(key => { const { startDate, endDate, payments } = data.milestones[parseFloat(key)] if (!Boolean(startDate) || startDate === "Invalid Date" || !Boolean(endDate) || endDate === "Invalid Date" || new Date(startDate) > new Date(endDate)) { - formProps.setError("milestones", {message: "milestones is not valid", type: "invalid"}) + formProps.setError("milestones", { message: "milestones is not valid", type: "invalid" }) setTabIndex(3) hasErrors = true } @@ -183,8 +183,8 @@ const CreateProject: React.FC = ({ projectTotal += payments.reduce((acc, payment) => acc + payment.amount, 0) }) - if (projectTotal !== data.expectedProjectFee) { - formProps.setError("milestones", {message: "milestones is not valid", type: "invalid"}) + if (projectTotal !== data.expectedProjectFee || milestonesKeys.length !== taskGroupKeys.length) { + formProps.setError("milestones", { message: "milestones is not valid", type: "invalid" }) setTabIndex(3) hasErrors = true } @@ -219,7 +219,7 @@ const CreateProject: React.FC = ({ data.projectActualEnd = dayjs().format("YYYY-MM-DD"); } - data.taskTemplateId = data.taskTemplateId === "All" ? undefined : data.taskTemplateId; + data.taskTemplateId = data.taskTemplateId === "All" ? undefined : data.taskTemplateId; const response = await saveProject(data); if (response.id > 0) { @@ -293,7 +293,7 @@ const CreateProject: React.FC = ({ {isEditMode && !(formProps.getValues("projectDeleted") === true) && ( {/* {!formProps.getValues("projectActualStart") && ( */} - {formProps.getValues("projectStatus") === "Pending to Start" && ( + {formProps.getValues("projectStatus").toLowerCase() === "pending to start" && ( - )} + {formProps.getValues("projectStatus").toLowerCase() === "on-going" && ( + + )} {!( // formProps.getValues("projectActualStart") && // formProps.getValues("projectActualEnd") - formProps.getValues("projectStatus") === "Completed" || + formProps.getValues("projectStatus") === "Completed" || formProps.getValues("projectStatus") === "Deleted" ) && (