import React, { useEffect, useState } from "react"; import { projectSchema, projectDefault } from "./ProjectSchema"; import { useForm, Controller } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import Label from "../common/Label"; import DatePicker from "../common/DatePicker"; import { useCreateProject, useProjectDetails, useUpdateProject } from "../../hooks/useProjects"; import { DEFAULT_EMPTY_STATUS_ID, ITEMS_PER_PAGE, PROJECT_STATUS, } from "../../utils/constants"; import { useOrganizationModal, useOrganizationsList, } from "../../hooks/useOrganization"; import { localToUtc } from "../../utils/appUtils"; const currentDate = new Date().toLocaleDateString("en-CA"); const formatDate = (date) => { if (!date) { return currentDate; } const d = new Date(date); if (isNaN(d.getTime())) { return currentDate; } return d.toLocaleDateString("en-CA"); }; const ManageProjectInfo = ({ project, onClose }) => { const [addressLength, setAddressLength] = useState(0); const maxAddressLength = 500; const { onOpen, startStep, flowType } = useOrganizationModal(); const ACTIVE_STATUS_ID = "b74da4c2-d07e-46f2-9919-e75e49b12731"; const { projects_Details, loading } = useProjectDetails(project); const { data, isLoading, isError, error } = useOrganizationsList( ITEMS_PER_PAGE, 1, true ); const { mutate: UpdateProject, isPending } = useUpdateProject(() => {onClose?.()}); const {mutate:CeateProject,isPending:isCreating}= useCreateProject(()=>onClose?.()) const { register, control, handleSubmit, formState: { errors }, reset, getValues, } = useForm({ resolver: zodResolver(projectSchema), defaultValues: projectDefault, mode: "onChange", }); useEffect(() => { if (project && projects_Details) reset({ name: projects_Details?.name || "", shortName: projects_Details?.shortName || "", contactPerson: projects_Details?.contactPerson || "", projectAddress: projects_Details?.projectAddress || "", startDate: formatDate(projects_Details?.startDate) || "", endDate: formatDate(projects_Details?.endDate) || "", projectStatusId: String(projects_Details?.projectStatus?.id) || DEFAULT_EMPTY_STATUS_IDF, promoterId: projects_Details?.promoter.id || "", pmcId: projects_Details?.pmc?.id || "", }); setAddressLength(projects_Details?.projectAddress?.length || 0); }, [project, projects_Details, reset,data]); const onSubmitForm = (formData) => { if (project) { let payload = { ...formData, startDate: localToUtc(formData.startDate), endDate: localToUtc(formData.endDate), id: project, }; console.log(payload); UpdateProject({ projectId: project, payload: payload }); }else{ let payload = { ...formData, startDate: localToUtc(formData.startDate), endDate: localToUtc(formData.endDate), }; CeateProject(payload) } }; const handleCancel = () => { reset(projectDefault); onClose(); }; const handleOrganizaioFinder = () => { onClose(); onOpen({ startStep: 2, flowType: "default" }); }; return (