import * as CRMTypes from 'graphql/crm.types'; import { reaction } from 'mobx'; import type { ReactionsContext } from 'process/types'; export default function validationReactions({ store, apolloClient }: ReactionsContext) { const { $calculation } = store; /* eslint-disable max-len */ /** * На изменение поля Процет убывания платежей tbxParmentsDecreasePercent необходимо заложить проверку: * Если значение поля меньше значения в поле "Минимальный % убывания платежей" evo_min_decreasing_perc из записи, * указанной в поле ТарифselectTarif , то поле Процет убывания платежей tbxParmentsDecreasePercent должно обводиться красной рамкой * и выводиться сообщение "Процент убывания не может быть меньше минимального значения по данному тарифу - <указывается значение из поля "Минимальный % убывания платежей">, иначе красная рамка снимается. * При красной рамке в данном поле нельзя осуществить расчет графика. */ /* eslint-enable */ reaction( () => ({ parmentsDecreasePercent: $calculation.element('tbxParmentsDecreasePercent').getValue(), tarifId: $calculation.element('selectTarif').getValue(), }), async ({ parmentsDecreasePercent, tarifId }) => { // eslint-disable-next-line @typescript-eslint/naming-convention let evo_tarif: CRMTypes.GetTarifQuery['evo_tarif'] = null; if (tarifId) { const { data } = await apolloClient.query({ query: CRMTypes.GetTarifDocument, variables: { tarifId, }, }); ({ evo_tarif } = data); } $calculation.element('tbxParmentsDecreasePercent').validate({ invalid: !!evo_tarif?.evo_min_decreasing_perc && parmentsDecreasePercent < evo_tarif?.evo_min_decreasing_perc, message: `Процент убывания не может быть меньше минимального значения по данному тарифу - ${evo_tarif?.evo_min_decreasing_perc}`, }); } ); }