From 7647166d9b2ddf66dcf7b8db3af3c347ceda174f Mon Sep 17 00:00:00 2001 From: vchikalkin Date: Mon, 13 Feb 2023 13:25:52 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B2=D0=B0=D0=BB=D0=B8=D0=B4=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20leaseObjectType?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../leasing-object/reactions/validation.ts | 66 ++++++++++++++++++- apps/web/stores/validation/index.ts | 6 +- 2 files changed, 67 insertions(+), 5 deletions(-) diff --git a/apps/web/process/leasing-object/reactions/validation.ts b/apps/web/process/leasing-object/reactions/validation.ts index 1178640..d6c74b8 100644 --- a/apps/web/process/leasing-object/reactions/validation.ts +++ b/apps/web/process/leasing-object/reactions/validation.ts @@ -1,7 +1,10 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import * as CRMTypes from '@/graphql/crm.types'; import type { ReactionsContext } from '@/process/types'; -import { autorun } from 'mobx'; +import { autorun, reaction } from 'mobx'; +import { pick } from 'radash'; -export default function validationReactions({ store }: ReactionsContext) { +export default function validationReactions({ store, apolloClient }: ReactionsContext) { const { $calculation } = store; /** @@ -20,4 +23,63 @@ export default function validationReactions({ store }: ReactionsContext) { delay: 10, } ); + + reaction( + () => + pick($calculation.$values.values, [ + 'leaseObjectType', + 'engineVolume', + 'engineType', + 'leaseObjectMotorPower', + ]), + async ({ + engineType, + engineVolume, + leaseObjectType: leaseObjectTypeId, + leaseObjectMotorPower, + }) => { + if (!leaseObjectTypeId) { + $calculation.element('selectEngineType').unblock(); + $calculation.element('tbxEngineVolume').unblock(); + $calculation.element('tbxLeaseObjectMotorPower').unblock(); + + return; + } + + const { + data: { evo_leasingobject_type }, + } = await apolloClient.query({ + query: CRMTypes.GetLeaseObjectTypeDocument, + variables: { + leaseObjectTypeId, + }, + }); + + if (evo_leasingobject_type?.evo_id === '8') { + $calculation.element('selectEngineType').resetValue().block(); + $calculation.element('tbxEngineVolume').resetValue().block(); + $calculation.element('tbxLeaseObjectMotorPower').resetValue().block(); + } else { + $calculation.element('selectEngineType').unblock(); + $calculation.element('tbxEngineVolume').unblock(); + $calculation.element('tbxLeaseObjectMotorPower').unblock(); + } + + const isNotTrailer = + evo_leasingobject_type?.evo_id !== null && evo_leasingobject_type?.evo_id !== '8'; + + $calculation.element('tbxEngineVolume').validate({ + invalid: isNotTrailer && engineVolume <= 0, + message: 'Не заполнено поле', + }); + $calculation.element('selectEngineType').validate({ + invalid: isNotTrailer && !engineType, + message: 'Не заполнено поле', + }); + $calculation.element('tbxLeaseObjectMotorPower').validate({ + invalid: isNotTrailer && leaseObjectMotorPower <= 0, + message: 'Не заполнено поле', + }); + } + ); } diff --git a/apps/web/stores/validation/index.ts b/apps/web/stores/validation/index.ts index 6c4559d..9092fe1 100644 --- a/apps/web/stores/validation/index.ts +++ b/apps/web/stores/validation/index.ts @@ -26,9 +26,7 @@ export default class Validation { }; public addError = (message: string, silent?: boolean) => { - this.messages.add(message); - - if (!silent) { + if (!silent && !this.messages.has(message)) { notification.error({ description: message, key: this.params.err_key, @@ -36,6 +34,8 @@ export default class Validation { }); } + this.messages.add(message); + return () => this.removeError(message); };