All files / src/features/Enterprises/EnterprisesTable/hooks useUnderwritingEnterpriseTabColumns.tsx

78.94% Statements 15/19
16.66% Branches 1/6
42.85% Functions 3/7
78.94% Lines 15/19

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 99 100 101 102 103 104 105 106                                      4x 135x 135x   135x 135x 135x 135x 135x 135x     135x   135x 19x                                               135x 21x                                                                     135x                      
import { TableColumnType } from "@common/Table";
import { QKEY_LIST_ENTERPRISE_STATS } from "@constants/queryKeys";
import { Box } from "@mui/material";
import { useAppSelector } from "@redux/hooks";
import { selectMerchantTab } from "@redux/slices/enterprise/merchants";
import { useCustomThemeV2 } from "@theme/hooks/useCustomThemeV2";
import { useUnderwriterPermissions } from "features/Permissions/AccessControl/hooks";
import { useMemo } from "react";
import { useQueryClient } from "react-query";
import { useDispatch } from "react-redux";
import { getSelectedTab } from "features/Merchants/MerchantsTable/utils";
import GiveAssignButton from "@shared/AssignButton/GiveAssignButton";
import { AssigneeInfos } from "@shared/AssignButton/GiveAssignButton.types";
import GiveUnderwritingScore from "@shared/UnderwritingScore/GiveUnderwritingScore";
import { setOpeningOptions } from "@redux/slices/merchantPreview";
import { useEnterprisePermissions } from "@components/AcquirerEnterprises/CreateEnterprise/hooks/useEnterprisePermissions";
import { MerchantData } from "@hooks/enterprise-api/account/types";
import useUnderwritingColumns from "@features/Merchants/MerchantsTable/hooks/useUnderwritingColumns";
 
const useUnderwritingEnterpriseTabColumns = () => {
  const dispatch = useDispatch();
  const { isWideView } = useCustomThemeV2();
 
  const { merchant_underwriting } = useEnterprisePermissions();
  const { isViewUnderwritingAllowed } = useUnderwriterPermissions();
  const queryClient = useQueryClient();
  const tab = useAppSelector(selectMerchantTab);
  const selectedTab = getSelectedTab(tab);
  const isUnderwritingSelected = selectedTab === "underwriting";
 
  const { taxIdCol, KYBCol, assignedCol, underwritingProgressCol } =
    useUnderwritingColumns({ isEnterprise: true });
 
  const assignmentCol = useMemo(
    () => ({
      key: "assignment",
      sortable: false,
      columnWidth: 1,
      title: "Assignee",
      hideColumn: !isUnderwritingSelected || !isWideView,
      renderColumn: (row: MerchantData) => (
        <GiveAssignButton
          data={row as AssigneeInfos}
          type="underwriting_admin"
          disabled={false}
          handleClick={() => {
            queryClient.invalidateQueries(QKEY_LIST_ENTERPRISE_STATS);
          }}
          transformOrigin={{
            vertical: -45,
            horizontal: "left",
          }}
        />
      ),
    }),
    [isWideView],
  );
 
  const underwritingScoreCol = useMemo(
    () => ({
      key: "underwritingScorePercentage,-accID",
      sortable: true,
      title: "Underwriting Score",
      hideColumn: !isUnderwritingSelected,
      columnWidth: 1.5,
      headerPosition: "center" as TableColumnType["headerPosition"],
      renderColumn: (row: MerchantData) => {
        return (
          <Box
            width={isWideView ? "140px" : "auto"}
            sx={{ ...(isWideView && { margin: "0 auto" }) }}
          >
            <GiveUnderwritingScore
              statusDisplayName={row?.statusDisplayName}
              score={row?.underwritingScorePercentage}
              canProcessMoney={row?.canProcessMoney}
              canTransferMoney={row?.canTransferMoney}
              alwaysDisplayProgressBars
              pendingScore={row.underwritingPendingChallengesPercentage}
              merchant_underwriting={merchant_underwriting}
              isViewUnderwritingAllowed={isViewUnderwritingAllowed}
              handleClick={() =>
                dispatch(setOpeningOptions({ underwriter: true }))
              }
              hideIcons
              pendingChallenges={row?.underwritingPendingChallengesCount}
            />
          </Box>
        );
      },
    }),
    [isWideView, isUnderwritingSelected],
  );
 
  return {
    assignmentCol,
    underwritingScoreCol,
    taxIdCol,
    KYBCol,
    assignedCol,
    underwritingProgressCol,
  };
};
 
export default useUnderwritingEnterpriseTabColumns;