import React, { useEffect } from "react"; import { useProjectName } from "../../../hooks/useProjects"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import Label from "../../common/Label"; import { useBranchDetails, useBranchTypes, useCreateBranch, useServiceProjects, useUpdateBranch, } from "../../../hooks/useServiceProject"; import { useAppForm } from "../../../hooks/appHooks/useAppForm"; import { useParams } from "react-router-dom"; import { BranchSchema, defaultBranches } from "../ServiceProjectSchema"; import InputSuggessionField from "../../common/Forms/InputSuggesstionField"; import InputSuggestions from "../../common/InputSuggestion"; const ManageBranch = ({ closeModal, BranchToEdit = null }) => { const { data, isLoading, isError, error: requestError, } = useBranchDetails(BranchToEdit); const { data: branchTypes } = useBranchTypes(); const [contacts, setContacts] = React.useState([ { contactPerson: "", designation: "", contactEmails: [""], contactNumbers: [""], }, ]); const { projectId } = useParams(); const schema = BranchSchema(); const { register, control, watch, handleSubmit, setValue, reset, formState: { errors }, } = useAppForm({ resolver: zodResolver(schema), defaultValues: { ...defaultBranches, projectId: projectId || "", }, }); const handleClose = () => { reset(); closeModal(); }; useEffect(() => { if (BranchToEdit && data) { reset({ branchName: data.branchName || "", projectId: data.project?.id || projectId || "", address: data.address || "", branchType: data.branchType || "", googleMapUrl: data.googleMapUrl || "", }); if (data.contactInformation) { try { setContacts(JSON.parse(data.contactInformation)); } catch { setContacts([]); } } } }, [data, reset]); const { mutate: CreateServiceBranch, isPending: createPending } = useCreateBranch(() => { handleClose(); }); const { mutate: ServiceBranchUpdate, isPending } = useUpdateBranch(() => handleClose() ); const onSubmit = (formdata) => { let payload = { ...data, ...formdata, projectId, contactInformation: JSON.stringify(contacts), // ← important }; if (BranchToEdit) { ServiceBranchUpdate({ id: data.id, payload }); } else { CreateServiceBranch(payload); } }; return (