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, useAssignOrgToTenant, 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: isPendingProject } = useAssignOrgToProject(() => onClose()); const { mutate: AssignToTenant, isPending: isPendingTenat } = useAssignOrgToTenant(() => { onClose(); }); const isPending = isPendingProject || isPendingTenat; const mergedServices = useMemo(() => { if (!masterService || !projectServices) return []; const combined = [...masterService?.data, ...projectServices]; return combined.filter( (item, index, self) => index === self.findIndex((s) => s.id === item.id) ); }, [masterService, projectServices]); const resolver = flowType === "default" ? undefined : zodResolver(assignedOrgToProject); const { register, handleSubmit, setValue, formState: { errors }, } = useForm({ resolver, defaultValues: { organizationTypeId: "", serviceIds: [], }, }); const onSubmit = (formData) => { if (flowType === "default") { const payload = orgData.id; AssignToTenant(payload); } else { const payload = { ...formData, projectId: selectedProject, organizationId: orgData.id, parentOrganizationId: null, }; AssignToProject(payload); } }; const handleEdit = () => { onOpen({ startStep: 4, 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
{orgData.name}