import React, { useEffect } from "react"; import { FormProvider, useForm } from "react-hook-form"; import { useCreateOrganization, useOrganization, 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 { data: organization, isLoading: organizationLoading, isError, error, } = useOrganization(orgData?.id); 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 (organization) { reset({ name: organization.name || "", contactPerson: organization.contactPerson || "", contactNumber: organization.contactNumber || "", email: organization.email || "", serviceIds: organization.services?.map((s) => s.id) || [], address: organization.address || "", }); } }, [organization, reset, service?.data]); const onSubmit = (formData) => { let payload = { ...formData }; if (organization?.id) { updateOrganization({ orgId: organization.id, payload: { ...payload, id: organization.id }, }); } 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} )}