71 lines
2.2 KiB
TypeScript
71 lines
2.2 KiB
TypeScript
import { createValidationSchema } from '../validation';
|
|
import type { Elements } from '@/Components/Calculation/config/map/values';
|
|
import type { ProcessContext } from '@/process/types';
|
|
import ValidationHelper from '@/stores/validation/helper';
|
|
import { reaction } from 'mobx';
|
|
import { uid } from 'radash';
|
|
|
|
const key = uid(7);
|
|
|
|
export default function reactions(context: ProcessContext) {
|
|
const { store } = context;
|
|
const { $calculation } = store;
|
|
const validationSchema = createValidationSchema(context);
|
|
|
|
const helper = new ValidationHelper();
|
|
reaction(
|
|
() => {
|
|
const values = $calculation.$values.getValues([
|
|
'calcBrokerRewardCondition',
|
|
'calcBrokerRewardSum',
|
|
'calcDoubleAgentRewardCondition',
|
|
'calcDoubleAgentRewardSumm',
|
|
'dealer',
|
|
'dealerBroker',
|
|
'calcFinDepartment',
|
|
'dealerBrokerRewardCondition',
|
|
'dealerBrokerRewardSumm',
|
|
'dealerPerson',
|
|
'dealerRewardCondition',
|
|
'dealerRewardSumm',
|
|
'finDepartmentRewardCondtion',
|
|
'finDepartmentRewardSumm',
|
|
'indAgent',
|
|
'indAgentRewardCondition',
|
|
'indAgentRewardSumm',
|
|
'calcDoubleAgent',
|
|
'calcBroker',
|
|
]);
|
|
|
|
const options = (
|
|
[
|
|
'selectCalcBrokerRewardCondition',
|
|
'selectCalcDoubleAgentRewardCondition',
|
|
'selectDealerBrokerRewardCondition',
|
|
'selectDealerRewardCondition',
|
|
'selectFinDepartmentRewardCondtion',
|
|
'selectIndAgentRewardCondition',
|
|
] as Elements[]
|
|
).map((elementName) => $calculation.element(elementName).getOptions());
|
|
|
|
return { options, values };
|
|
},
|
|
async ({ values }) => {
|
|
helper.removeErrors();
|
|
const validationResult = await validationSchema.safeParseAsync(values);
|
|
|
|
if (!validationResult.success) {
|
|
validationResult.error.errors.forEach(({ path, message }) => {
|
|
(path as Elements[]).forEach((elementName) => {
|
|
const removeError = $calculation.element(elementName).setError({ key, message });
|
|
if (removeError) helper.add(removeError);
|
|
});
|
|
});
|
|
}
|
|
},
|
|
{
|
|
delay: 100,
|
|
}
|
|
);
|
|
}
|