import React, { useEffect } from "react"; import { FormProvider, useForm } from "react-hook-form"; import { useCreateOrganization, useOrganizationModal, useUpdateOrganization, } from "../../hooks/useOrganization"; import { defaultOrganizationValues, organizationSchema, } from "./OrganizationSchema"; import Label from "../common/Label"; import { useGlobalServices } from "../../hooks/masterHook/useMaster"; import { zodResolver } from "@hookform/resolvers/zod"; import SelectMultiple from "../common/SelectMultiple"; const ManagOrg = () => { const { data: service, isLoading } = useGlobalServices(); const { flowType, orgData, startStep, onOpen, onClose, prevStep } = useOrganizationModal(); const method = useForm({ resolver: zodResolver(organizationSchema), defaultValues: defaultOrganizationValues, }); const { handleSubmit, register, reset, formState: { errors }, } = method; // Create & Update mutations const { mutate: createOrganization, isPending: isCreating } = useCreateOrganization(() => { reset(defaultOrganizationValues); onOpen({ startStep: 1 }); onClose(); }); const { mutate: updateOrganization, isPending: isUpdating } = useUpdateOrganization(() => { reset(defaultOrganizationValues); onOpen({ startStep: 1 }); onClose(); }); // Prefill form if editing useEffect(() => { if (orgData) { console.log(orgData); reset({ name: orgData.name || "", contactPerson: orgData.contactPerson || "", contactNumber: orgData.contactNumber || "", email: orgData.email || "", serviceIds: orgData.services?.map((s) => s.id) || [], address: orgData.address || "", }); } }, [orgData, reset]); const onSubmit = (payload) => { if (orgData?.id) { updateOrganization({ id: orgData.id, ...payload }); } else { createOrganization(payload); } }; const handleBack = () => { if (flowType === "edit") { onClose(); return; } if (flowType === "assign") { if (prevStep === 1) { onOpen({ startStep: 1 }); } else { onOpen({ startStep: prevStep ?? 2 }); } return; } onOpen({ startStep: 2 }); }; return (
{errors.name && ( {errors.name.message} )}
{errors.contactPerson && ( {errors.contactPerson.message} )}
{errors.contactNumber && ( {errors.contactNumber.message} )}
{errors.email && ( {errors.email.message} )}
{errors.serviceIds && ( {errors.serviceIds.message} )}