2023-03-25 14:59:41 +03:00

59 lines
1.6 KiB
JavaScript

import { toJS } from 'mobx';
import notification from 'ui/elements/notification';
const key = 'ACTION_CALCULATE';
const message = 'Ошибка во время расчета графика';
/**
* @param {import('../types').ProcessContext} context
* @param {*} onCompleted
*/
export async function action({ store, trpcClient }) {
const { $calculation, $tables, $results } = store;
$calculation.$status.setStatus('btnCalculate', 'Loading');
$calculation.$status.setStatus('btnCreateKP', 'Loading');
$results.clear();
const values = $calculation.$values.getValues();
const insurance = {
fingap: toJS($tables.insurance.row('fingap').getValues()),
kasko: toJS($tables.insurance.row('kasko').getValues()),
osago: toJS($tables.insurance.row('osago').getValues()),
};
const payments = toJS($tables.payments.values);
trpcClient.calculate
.mutate({
insurance: { values: insurance },
payments: { values: payments },
values,
})
.then((res) => {
if (res.success === false) {
notification.error({
description: res.error,
key,
message,
});
} else {
$results.setPayments(res.data.resultPayments);
$results.setValues(res.data.resultValues);
$calculation.$values.setValues(res.data.values);
}
})
.catch((error) => {
notification.error({
description: JSON.stringify(error),
key,
message,
});
})
.finally(() => {
$calculation.$status.setStatus('btnCalculate', 'Default');
$calculation.$status.setStatus('btnCreateKP', 'Default');
});
}