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 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | 263x 263x | import { useAppSelector } from "@redux/hooks";
import {
createSelectEnterprisesForQueryKey,
selectDateFilter,
} from "@redux/slices/merchantFilters";
import { selectedQueries } from "@redux/slices/tableFilters";
import { addDays, getUnixTime } from "date-fns";
import { useMemo } from "react";
import {
TRANSFER_DATE_FILTER_KEY,
TRANSFER_PROVIDERS_FILTER_KEY,
TransferFormValuesType,
} from "../utils";
import { customJoinList } from "@common/TableFilters/utils";
import { getTransferValueFromLabel } from "@features/TransactionPanel/utils";
export const useTransferQueryString = () => {
const selectedDate = useAppSelector((state) =>
selectDateFilter(state, TRANSFER_DATE_FILTER_KEY),
);
const selectSelectedEnterprisesMemoized = useMemo(
() => createSelectEnterprisesForQueryKey(),
[],
);
const selectedEnterprises = useAppSelector((state) =>
selectSelectedEnterprisesMemoized(state, TRANSFER_PROVIDERS_FILTER_KEY),
);
const contextQueryParams = useAppSelector(selectedQueries);
const contextQueryString = getTransferFilterQueryString(
contextQueryParams as TransferFormValuesType,
);
const queryString = useMemo(() => {
let query = "";
if (selectedDate) {
const unixDate = selectedDate ? getUnixTime(new Date(selectedDate)) : 0;
const maxDate = selectedDate
? getUnixTime(addDays(new Date(selectedDate), 1))
: 0;
query = `(createdAt:>d${unixDate}%3BcreatedAt:<=d${maxDate})`;
if (contextQueryString || selectedEnterprises?.length > 0) query += "%3B";
}
let enterprisesQuery = "";
if (selectedEnterprises?.length > 0) {
enterprisesQuery += "(";
for (const ent of selectedEnterprises) {
enterprisesQuery += `merchAccName:"${ent.label}",`;
}
query += enterprisesQuery.slice(0, -1) + ")";
if (contextQueryString) query += "%3B";
}
if (contextQueryString) query += contextQueryString;
return query;
}, [selectedDate, selectedEnterprises, contextQueryString]);
return { queryString };
};
const getTransferFilterQueryString = (data: TransferFormValuesType) => {
let queryString = "";
if (data?.enterpriseName?.length > 0) {
queryString += "(";
queryString += customJoinList(
data?.enterpriseName.map(
(enterprise) => `parentAccName:"${enterprise.label}"`,
),
",",
);
queryString += ")";
}
if (data?.merchantName?.length > 0) {
if (queryString) queryString += "%3B";
queryString += "(";
queryString += customJoinList(
data?.merchantName.map((merchant) => `merchAccName:"${merchant.label}"`),
",",
);
queryString += ")";
}
if (data?.transferStatus?.length > 0) {
if (queryString) queryString += "%3B";
queryString += "(";
queryString += customJoinList(
data?.transferStatus.map(
(status) =>
`processingSatetName:"${getTransferValueFromLabel(status)}"`,
),
",",
);
queryString += ")";
}
if (data?.amount?.length > 0) {
if (queryString) queryString += "%3B";
const amount = data?.amount?.[0] as string;
let amountQs = "";
switch (amount) {
case "10 - 1000 USD":
amountQs = "(cost:>=1000%3Bcost:<=100000)";
break;
case "1000 - 5000 USD":
amountQs = "(cost:>=100000%3Bcost:<=500000)";
break;
case ">5000 USD":
amountQs = "cost:>500000";
break;
case "Custom":
amountQs = `(${data?.custom?.replace(/amount/g, "cost")})`;
break;
}
queryString += amountQs;
}
return queryString;
};
|