elt/kasko: remove react-query
This commit is contained in:
parent
ae0b72aebd
commit
d862c7b470
@ -9,9 +9,8 @@ import helper from '@/process/elt/lib/helper';
|
||||
import { useStore } from '@/stores/hooks';
|
||||
import { defaultRow } from '@/stores/tables/elt/default-values';
|
||||
import { useApolloClient } from '@apollo/client';
|
||||
import type { QueryFunctionContext } from '@tanstack/react-query';
|
||||
import { useQueries } from '@tanstack/react-query';
|
||||
import { observer } from 'mobx-react-lite';
|
||||
import { sift } from 'radash';
|
||||
import { Flex } from 'ui/grid';
|
||||
|
||||
const storeSelector: StoreSelector = ({ kasko }) => kasko;
|
||||
@ -25,72 +24,43 @@ const initialData = {
|
||||
kaskoSum: 0,
|
||||
},
|
||||
],
|
||||
sum: 0,
|
||||
};
|
||||
|
||||
export const Kasko = observer(() => {
|
||||
const store = useStore();
|
||||
const { $tables, $calculation } = store;
|
||||
|
||||
const apolloClient = useApolloClient();
|
||||
|
||||
const { init } = helper({ apolloClient, store });
|
||||
|
||||
const queries = useQueries({
|
||||
queries: $tables.elt.kasko.getRows.map((row) => {
|
||||
const { id, key, name } = row;
|
||||
|
||||
return {
|
||||
enabled: false,
|
||||
initialData: { ...initialData, id, key, name },
|
||||
queryFn: async (context: QueryFunctionContext) => {
|
||||
const payload = await makeEltKaskoRequest({ apolloClient, store }, row);
|
||||
const res = await getEltKasko(payload, context);
|
||||
|
||||
if (res) {
|
||||
const companyRes = res?.[id];
|
||||
|
||||
return { ...companyRes, id, key, name };
|
||||
}
|
||||
|
||||
return { ...initialData, id, key, name };
|
||||
},
|
||||
queryKey: ['elt', 'kasko', id],
|
||||
refetchOnWindowFocus: false,
|
||||
retry: false,
|
||||
};
|
||||
}),
|
||||
});
|
||||
|
||||
async function handleOnClick() {
|
||||
const { kasko } = await init();
|
||||
$tables.elt.kasko.setRows(kasko);
|
||||
|
||||
const kaskoCompanyIds = $tables.insurance
|
||||
.row('kasko')
|
||||
.getOptions('insuranceCompany')
|
||||
.map((x) => x.value);
|
||||
const kaskoCompanyIds = sift(
|
||||
$tables.insurance
|
||||
.row('kasko')
|
||||
.getOptions('insuranceCompany')
|
||||
.map((x) => x.value)
|
||||
);
|
||||
const values = $calculation.$values.getValues();
|
||||
|
||||
queries
|
||||
.filter(({ data }) => data?.key && kaskoCompanyIds.includes(data.key))
|
||||
.forEach(({ refetch, data, remove }) => {
|
||||
remove();
|
||||
if (data?.key) $tables.elt.kasko.setRow({ key: data?.key, status: 'fetching' });
|
||||
|
||||
refetch()
|
||||
kaskoCompanyIds.forEach((key) => {
|
||||
const row = $tables.elt.kasko.getRow(key);
|
||||
if (row) {
|
||||
$tables.elt.kasko.setRow({ key, status: 'fetching' });
|
||||
makeEltKaskoRequest({ apolloClient, store }, row)
|
||||
.then((payload) => getEltKasko(payload))
|
||||
.then((res) => {
|
||||
if (res.data) {
|
||||
if (res) {
|
||||
const companyRes = res?.[row.id];
|
||||
const {
|
||||
key,
|
||||
kaskoSum = 0,
|
||||
message,
|
||||
skCalcId,
|
||||
totalFranchise = 0,
|
||||
requestId,
|
||||
paymentPeriods,
|
||||
} = res.data;
|
||||
let { error } = res.data;
|
||||
} = companyRes;
|
||||
let { error } = companyRes;
|
||||
|
||||
if (totalFranchise > MAX_FRANCHISE) {
|
||||
error ||= `Франшиза по страховке превышает максимально допустимое значение: ${Intl.NumberFormat(
|
||||
@ -129,21 +99,21 @@ export const Kasko = observer(() => {
|
||||
requestId,
|
||||
skCalcId,
|
||||
status: error ? 'error' : null,
|
||||
sum: values.leasingPeriod <= 16 ? kaskoSum : paymentPeriods?.at(0)?.kaskoSum || 0,
|
||||
sum: values.leasingPeriod <= 16 ? kaskoSum : paymentPeriods?.[0]?.kaskoSum || 0,
|
||||
totalFranchise,
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
if (data?.key)
|
||||
$tables.elt.kasko.setRow({
|
||||
...defaultRow,
|
||||
key: data?.key,
|
||||
message: error,
|
||||
status: 'error',
|
||||
});
|
||||
$tables.elt.kasko.setRow({
|
||||
...initialData,
|
||||
key,
|
||||
message: error,
|
||||
status: 'error',
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function handleOnSelectRow(row: Row) {
|
||||
|
||||
@ -15,10 +15,10 @@ export async function getEltOsago(payload: ELT.RequestEltOsago, { signal }: Quer
|
||||
);
|
||||
}
|
||||
|
||||
export async function getEltKasko(payload: ELT.RequestEltKasko, { signal }: QueryFunctionContext) {
|
||||
export async function getEltKasko(payload: ELT.RequestEltKasko) {
|
||||
return withHandleError(
|
||||
axios
|
||||
.post<ELT.ResponseEltKasko>(URL_ELT_KASKO, payload, { signal, timeout: TIMEOUT })
|
||||
.post<ELT.ResponseEltKasko>(URL_ELT_KASKO, payload, { timeout: TIMEOUT })
|
||||
.then(({ data }) => data)
|
||||
);
|
||||
}
|
||||
|
||||
@ -55,6 +55,10 @@ export default class PolicyStore {
|
||||
if (index >= 0) this.rows[index] = { ...this.rows[index], ...row };
|
||||
};
|
||||
|
||||
public getRow(key: string) {
|
||||
return this.rows.find((x) => x.key === key);
|
||||
}
|
||||
|
||||
public get getRows() {
|
||||
return toJS(this.rows);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user