From 772e01a646dc2805e2082a3be2a08ab472f73c0a Mon Sep 17 00:00:00 2001 From: Chika Date: Mon, 28 Sep 2020 16:26:42 +0300 Subject: [PATCH] effect: validation for lastpaymentperc --- src/client/Elements/Notification.ts | 2 +- src/client/hooks/useValidation.ts | 2 +- .../CalculationStore/Effects/reaction.ts | 38 ++++++++++++------- 3 files changed, 26 insertions(+), 16 deletions(-) diff --git a/src/client/Elements/Notification.ts b/src/client/Elements/Notification.ts index 3b11d3d..7cf73e0 100644 --- a/src/client/Elements/Notification.ts +++ b/src/client/Elements/Notification.ts @@ -23,5 +23,5 @@ export const openNotification = ({ zIndex: 9999999999, }, }), - DEFAULT_DEBOUNCE_DELAY, + 500, ); diff --git a/src/client/hooks/useValidation.ts b/src/client/hooks/useValidation.ts index 7a99e24..d94283b 100644 --- a/src/client/hooks/useValidation.ts +++ b/src/client/hooks/useValidation.ts @@ -30,7 +30,7 @@ export const useValidation = ({ // inner validation && set validation status to store useEffect(() => { - if (!value) { + if (value === undefined || value === '') { calculationStore.setValidation(elementName, undefined); } else { if (validator) { diff --git a/src/client/stores/CalculationStore/Effects/reaction.ts b/src/client/stores/CalculationStore/Effects/reaction.ts index 85c8984..2175190 100644 --- a/src/client/stores/CalculationStore/Effects/reaction.ts +++ b/src/client/stores/CalculationStore/Effects/reaction.ts @@ -932,20 +932,30 @@ const reactionEffects: IReactionEffect[] = [ }; }, effect: ({ lastPaymentPerc, balanceHolder }) => { - if ( - balanceHolder && - balanceHolder === 100000001 && - lastPaymentPerc && - parseInt(lastPaymentPerc) < 1 - ) { - /** - * TODO: modal=>notification - * validation - * move to autorun - */ - calculationStore.showModal( - 'При балансе лизингодатель последний платеж не может быть меньше 1%! Увеличьте значение.', - ); + if (balanceHolder && balanceHolder === 100000001) { + if (!lastPaymentPerc || parseFloat(lastPaymentPerc) < 1) { + calculationStore.setValidation('tbxLastPaymentPerc', false); + openNotification({ + type: 'error', + title: 'Ошибка', + description: + 'При балансе лизингодатель последний платеж не может быть меньше 1%! Увеличьте значение.', + })(); + } else { + calculationStore.setValidation('tbxLastPaymentPerc', true); + } + } else { + if (parseFloat(lastPaymentPerc) === 0) { + calculationStore.setValidation('tbxLastPaymentPerc', false); + openNotification({ + type: 'error', + title: 'Ошибка', + description: + 'Последний платеж не может быть равен 0. Увеличьте значение', + })(); + } else { + calculationStore.setValidation('tbxLastPaymentPerc', true); + } } }, }),