import React, { useMemo, useState } from "react"; import { useProjectAssignedServices } from "../../hooks/useProjects"; import { useSelectedProject } from "../../slices/apiDataManager"; import { useOrganizationType, useServices, } from "../../hooks/masterHook/useMaster"; import Label from "../common/Label"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { assignedOrgToProject } from "./OrganizationSchema"; import { useAssignOrgToProject, useOrganizationModal, } from "../../hooks/useOrganization"; const AssignOrg = ({ setStep }) => { const { isOpen, orgData, startStep, onOpen, flowType, prevStep, onClose } = useOrganizationModal(); const selectedProject = useSelectedProject(); const { data: masterService, isLoading: isMasterserviceLoading } = useServices(); const { data: projectServices, isLoading } = useProjectAssignedServices(selectedProject); const { data: orgType, isLoading: orgLoading } = useOrganizationType(); const { mutate: AssignToProject, isPending } = useAssignOrgToProject(() => onClose() ); const mergedServices = useMemo(() => { if (!masterService || !projectServices) return []; const combined = [...masterService?.data, ...projectServices]; const unique = combined.filter( (item, index, self) => index === self.findIndex((s) => s.id === item.id) ); return unique; }, [masterService, projectServices]); const { register, setValue, handleSubmit, formState: { errors }, } = useForm({ resolver: zodResolver(assignedOrgToProject), }); const onSubmit = (formData) => { const payload = { ...formData, projectId: selectedProject, organizationId: orgData.id, parentOrganizationId: null, }; AssignToProject(payload); }; const handleEdit = () => { onOpen({ startStep: 4, orgData: orgData }); }; const handleBack = () => { if (prevStep == 1 && flowType == "assign") { onOpen({ startStep: prevStep }); } else if (prevStep == 1 && flowType == "assign") { onOpen({ startStep: 1 }); } else { onOpen({ startStep: 2 }); } }; if (isMasterserviceLoading || isLoading) return