From 1bba9ab68a7420cab7029983ebf0669347257fb0 Mon Sep 17 00:00:00 2001
From: "pramod.mahajan"
- Start Date: - {project.startDate - ? moment(project?.startDate).format("DD-MMM-YYYY") - : "NA"} + + {isCore ? "Start Date:" : "Assigned Date"}{" "} + + {formatUTCToLocalTime( + isCore ? project?.startDate : project.assignedDate + )}
-- Deadline: + {isCore && ( +
+ Deadline: - {project?.endDate - ? moment(project?.endDate).format("DD-MMM-YYYY") - : "NA"} -
+ {project?.endDate + ? moment(project?.endDate).format("DD-MMM-YYYY") + : "NA"} + + )}{project?.projectAddress}
@@ -169,7 +181,7 @@ const ProjectCard = ({ project, isCore = true }) => { {getProjectStatusName(project?.projectStatusId)} {" "} - {getDateDifferenceInDays(project?.endDate,new Date() ) >= 0 && ( + {getDateDifferenceInDays(project?.endDate, new Date()) >= 0 && ( {project?.endDate && getDateDifferenceInDays(project?.endDate, new Date())}{" "} @@ -179,7 +191,7 @@ const ProjectCard = ({ project, isCore = true }) => { {getDateDifferenceInDays(project?.endDate, new Date()) < 0 && ( {project?.endDate && - getDateDifferenceInDays(project?.endDate, new Date())}{" "} + getDateDifferenceInDays(project?.endDate, new Date())}{" "} Days overdue )} diff --git a/src/components/ServiceProject/ManageServiceProject.jsx b/src/components/ServiceProject/ManageServiceProject.jsx index 9e3c98ce..25db449b 100644 --- a/src/components/ServiceProject/ManageServiceProject.jsx +++ b/src/components/ServiceProject/ManageServiceProject.jsx @@ -1,9 +1,12 @@ import { zodResolver } from "@hookform/resolvers/zod"; -import React, { useState } from "react"; +import React, { useEffect, useState } from "react"; import { defaultProjectValues } from "./ServiceProjectSchema"; import Label from "../common/Label"; import { FormProvider, useForm } from "react-hook-form"; -import { useGlobalServices } from "../../hooks/masterHook/useMaster"; +import { + useGlobalServices, + useServices, +} from "../../hooks/masterHook/useMaster"; import { ITEMS_PER_PAGE, PROJECT_STATUS } from "../../utils/constants"; import DatePicker from "../common/DatePicker"; @@ -14,10 +17,18 @@ import { useOrganizationsList, } from "../../hooks/useOrganization"; import { error } from "pdf-lib"; -import { useCreateServiceProject } from "../../hooks/useServiceProject"; +import { + useCreateServiceProject, + useServiceProject, + useUpdateServiceProject, +} from "../../hooks/useServiceProject"; -const ManageServiceProject = ({ servieceProjectId }) => { - console.log(servieceProjectId) +const ManageServiceProject = ({ serviceProjectId, onClose }) => { + const { + data: projectdata, + isLoading: isProjectLoading, + isProjectError, + } = useServiceProject(serviceProjectId); const [searchText, setSearchText] = useState(""); const methods = useForm({ resolver: zodResolver(projectSchema), @@ -27,22 +38,79 @@ const ManageServiceProject = ({ servieceProjectId }) => { register, handleSubmit, control, + reset, formState: { errors }, } = methods; - const { data, isError, isLoading } = useGlobalServices(); + const { data, isError, isLoading } = useServices(); const { data: organization, isLoading: isLoadingOrganization } = useOrganizationsList(ITEMS_PER_PAGE, 1, true); - const { mutate: CreateServiceProject, isPending } = useCreateServiceProject(); + const { mutate: CreateServiceProject, isPending } = useCreateServiceProject( + () => { + reset(); + onClose(); + } + ); + const { mutate: UpdateServiceProject, isPending: isUpdating } = + useUpdateServiceProject(() => { + reset(); + onClose(); + }); const onSubmit = (formData) => { - formData.services = formData.services.filter((s) => s.serviceId); - CreateServiceProject(formData); + + if (serviceProjectId) { + let existingServiceIds = projectdata?.services?.map((s) => s.id) || []; + + const oldServices = projectdata.services.map((service) => ({ + serviceId: service.id, + isActive: formData.services.includes(service.id), + })); + + const newServices = formData.services + .filter((s) => !existingServiceIds.includes(s)) + .map((service) => ({ serviceId: service, isActive: true })); + + formData.services = [...oldServices, ...newServices]; + } else { + formData.services = formData.services.map((service) => ({ + serviceId: service, + isActive: true, + })); + } + + if (serviceProjectId) { + let payload = { ...formData, id: serviceProjectId }; + + UpdateServiceProject({ id: serviceProjectId, payload }); + } else { + CreateServiceProject(formData); + } }; + + useEffect(() => { + if (projectdata) { + const activeServiceIds = (projectdata.services || []) + .map((s) => s.serviceId || s.id) + .filter(Boolean); + reset({ + name: projectdata.name, + shortName: projectdata.shortName, + clientId: projectdata.client.id, + assignedDate: projectdata.assignedDate, + address: projectdata.address, + statusId: projectdata.status.id, + contactEmail: projectdata.contactEmail, + contactPhone: projectdata.contactPhone, + contactName: projectdata.contactName, + services: activeServiceIds, + }); + } + }, [projectdata]); return (