All files / src/features/Merchants/MerchantSidePanel/components/UnderwriterRiskAnalystAssignCard KYBUnderwriterSponsorAssignCard.tsx

92.85% Statements 13/14
80.95% Branches 17/21
66.66% Functions 2/3
92.85% Lines 13/14

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98                                      89x 89x 88x 88x 88x       88x   88x 11x 1x       88x 88x   88x       88x                                                                                                              
import { useEffect, useState } from "react";
import { Box } from "@mui/material";
import { checkPortals } from "@utils/routing";
import { useEnterprisePermissions } from "@components/AcquirerEnterprises/CreateEnterprise/hooks/useEnterprisePermissions";
import { useMerchantSidePanelContext } from "../../Provider/MerchantSidePanelProvider";
import { useQueryClient } from "react-query";
import { QKEY_LIST_ACQUIRER_MERCHANTS } from "@constants/queryKeys";
 
import SectionCardBase from "@shared/SidePanel/components/SectionCard/SectionCardBase";
import AssignmentSection from "./AssignmentSection/AssignmentSection";
import MCCInput from "./MCCInput";
import MerchantRiskCategoryInput from "./MerchantRiskCategoryInput";
import RecommendationInput from "./RecommendationInput";
import { SHOW_RISK_CATEGORY } from "../../constants";
import { useGetFeatureFlagValues } from "FeatureFlags/useGetFeatureFlagValues";
import ProcessorInput from "./ProcessorInput";
import { QueryBoundary } from "../QueryBoundary";
 
function KYBUnderwriterSponsorAssignCard() {
  const { isMerchantProcessorEnabled } = useGetFeatureFlagValues();
  const { data, isProvider, queries } = useMerchantSidePanelContext();
  const { merchant_underwriting, modify_merchant } = useEnterprisePermissions();
  const { isEnterprisePortal } = checkPortals();
  const [localRiskValue, setLocalRiskValue] = useState(
    data?.merchantInfo?.merchantRiskStatus,
  );
 
  const queryClient = useQueryClient();
 
  useEffect(() => {
    if (localRiskValue !== data?.merchantInfo?.merchantRiskStatus) {
      setLocalRiskValue(data?.merchantInfo?.merchantRiskStatus);
    }
  }, [data?.merchantInfo?.merchantRiskStatus]);
 
  const isHide = !merchant_underwriting && isEnterprisePortal;
  const hideAssignee = (isHide && !modify_merchant) || isEnterprisePortal;
 
  const refetchTableData = () => {
    queryClient.invalidateQueries(QKEY_LIST_ACQUIRER_MERCHANTS);
  };
 
  return (
    <SectionCardBase>
      {!hideAssignee && <AssignmentSection />}
      {!isProvider && (
        <QueryBoundary
          query={queries?.merchantQuery}
          errorTitle="Merchant data could not be loaded"
        >
          <Box
            mt={hideAssignee ? "0" : "16px"}
            display="flex"
            flexDirection="column"
            gap="16px"
          >
            {isMerchantProcessorEnabled &&
              !isProvider &&
              !isEnterprisePortal && (
                <ProcessorInput
                  processorValue={data?.merchantInfo?.processor}
                  isApproved={["approved", "suspended"].includes(
                    data?.status?.statusName || "",
                  )}
                  id={data?.merchantInfo?.merchantID}
                />
              )}
            <MCCInput
              setLocalRiskValue={setLocalRiskValue}
              enterpriseID={data.merchantInfo?.enterpriseID}
              categoryCodeID={data.merchantInfo?.categoryCodeID}
              categoryCodeName={data.merchantInfo?.categoryCodeName}
              code={data.merchantInfo?.category}
              riskStatus={data?.merchantInfo?.merchantRiskStatus}
              onConfirmChangeSuccess={refetchTableData}
              processor={data?.merchantInfo?.processor}
            />
            {SHOW_RISK_CATEGORY && (
              <MerchantRiskCategoryInput
                localRiskValue={localRiskValue}
                setLocalRiskValue={setLocalRiskValue}
                categoryCodeID={data.merchantInfo?.categoryCodeID}
                category={data.merchantInfo?.category}
                categoryCodeName={data.merchantInfo?.categoryCodeName}
                merchantRiskStatus={data.merchantInfo?.merchantRiskStatus}
                onSaveSuccess={refetchTableData}
              />
            )}
            <RecommendationInput />
          </Box>
        </QueryBoundary>
      )}
    </SectionCardBase>
  );
}
 
export default KYBUnderwriterSponsorAssignCard;