From 9a73d95598449ab3d7f2d1556dc2d1d6ed584c33 Mon Sep 17 00:00:00 2001 From: Chika Date: Sat, 12 Nov 2022 12:40:49 +0300 Subject: [PATCH] config/schema: add min/max props --- config/schema/values.ts | 90 +++++++++++++++++++++-------------------- 1 file changed, 46 insertions(+), 44 deletions(-) diff --git a/config/schema/values.ts b/config/schema/values.ts index 691d28c..67f7342 100644 --- a/config/schema/values.ts +++ b/config/schema/values.ts @@ -1,3 +1,5 @@ +import { MAX_FRANCHISE, MAX_LEASING_PERIOD } from 'constants/values'; +import dayjs from 'dayjs'; import { z } from 'zod'; const ValuesSchema = z.object({ @@ -8,65 +10,65 @@ const ValuesSchema = z.object({ product: z.string().nullable(), clientRisk: z.string().nullable(), clientType: z.string().nullable(), - leaseObjectPrice: z.number(), + leaseObjectPrice: z.number().min(0).max(1_000_000_000), supplierCurrency: z.string().nullable(), - supplierDiscountRub: z.number(), - supplierDiscountPerc: z.number(), - leasingPeriod: z.number(), - firstPaymentPerc: z.number(), - firstPaymentRub: z.number(), - lastPaymentPerc: z.number(), - lastPaymentRub: z.number(), + supplierDiscountRub: z.number().min(0).max(1_000_000_000), + supplierDiscountPerc: z.number().min(0).max(100), + leasingPeriod: z.number().min(13).max(MAX_LEASING_PERIOD), + firstPaymentPerc: z.number().min(0).max(50), + firstPaymentRub: z.number().min(0).max(1_000_000_000), + lastPaymentPerc: z.number().min(0).max(70), + lastPaymentRub: z.number().min(0).max(1_000_000_000), lastPaymentRule: z.number().nullable(), importProgram: z.string().nullable(), - importProgramSum: z.number(), - addEquipmentPrice: z.number(), - redemptionPaymentSum: z.number(), + importProgramSum: z.number().min(0), + addEquipmentPrice: z.number().min(0), + redemptionPaymentSum: z.number().min(1000).max(2000), balanceHolder: z.number().nullable(), graphType: z.number().nullable(), - parmentsDecreasePercent: z.number(), + parmentsDecreasePercent: z.number().min(50).max(99), seasonType: z.number().nullable(), highSeasonStart: z.number().nullable(), - comissionPerc: z.number(), - comissionRub: z.number(), - saleBonus: z.number(), - IRR_Perc: z.number(), + comissionPerc: z.number().min(0).max(100), + comissionRub: z.number().min(0).max(1_000_000_000), + saleBonus: z.number().min(0), + IRR_Perc: z.number().min(0).max(500), leaseObjectType: z.string().nullable(), deliveryTime: z.number().nullable(), - leaseObjectCount: z.number(), + leaseObjectCount: z.number().min(1).max(1000), withTrailer: z.boolean(), leaseObjectUsed: z.boolean(), - maxMass: z.number(), - countSeats: z.number(), - maxSpeed: z.number(), + maxMass: z.number().min(0).max(999_999), + countSeats: z.number().min(0).max(2000), + maxSpeed: z.number().min(0).max(2000), brand: z.string().nullable(), model: z.string().nullable(), configuration: z.string().nullable(), - leaseObjectYear: z.number(), + leaseObjectYear: z.number().min(1994).max(dayjs().year()), engineType: z.number().nullable(), leaseObjectCategory: z.number().nullable(), - leaseObjectMotorPower: z.number(), - engineVolume: z.number(), + leaseObjectMotorPower: z.number().min(0).max(20_000), + engineVolume: z.number().min(0).max(99.9999), leaseObjectUseFor: z.number().nullable(), dealer: z.string().nullable(), dealerPerson: z.string().nullable(), dealerRewardCondition: z.string().nullable(), - dealerRewardSumm: z.number(), + dealerRewardSumm: z.number().min(0).max(20), dealerBroker: z.string().nullable(), dealerBrokerRewardCondition: z.string().nullable(), - dealerBrokerRewardSumm: z.number(), + dealerBrokerRewardSumm: z.number().min(0).max(20), indAgent: z.string().nullable(), indAgentRewardCondition: z.string().nullable(), - indAgentRewardSumm: z.number(), + indAgentRewardSumm: z.number().min(0).max(20), calcDoubleAgent: z.string().nullable(), calcDoubleAgentRewardCondition: z.string().nullable(), - calcDoubleAgentRewardSumm: z.number(), + calcDoubleAgentRewardSumm: z.number().min(0).max(20), calcBroker: z.string().nullable(), calcBrokerRewardCondition: z.string().nullable(), - calcBrokerRewardSum: z.number(), + calcBrokerRewardSum: z.number().min(0).max(20), calcFinDepartment: z.string().nullable(), finDepartmentRewardCondtion: z.string().nullable(), - finDepartmentRewardSumm: z.number(), + finDepartmentRewardSumm: z.number().min(0).max(20), GPSBrand: z.string().nullable(), GPSModel: z.string().nullable(), regionRegistration: z.string().nullable(), @@ -74,7 +76,7 @@ const ValuesSchema = z.object({ infuranceOPF: z.number().nullable(), insKaskoType: z.number().nullable(), insDecentral: z.boolean(), - insFranchise: z.number(), + insFranchise: z.number().min(0).max(MAX_FRANCHISE), insUnlimitDrivers: z.boolean(), insAgeDrivers: z.number(), insExpDrivers: z.number(), @@ -92,26 +94,26 @@ const ValuesSchema = z.object({ quoteRedemptionGraph: z.boolean(), showFinGAP: z.boolean(), tarif: z.string().nullable(), - creditRate: z.number(), + creditRate: z.number().min(0).max(99.99), rate: z.string().nullable(), requirementTelematic: z.number().nullable(), - minPriceChange: z.number(), - maxPriceChange: z.number(), - importerRewardPerc: z.number(), - importerRewardRub: z.number(), + minPriceChange: z.number().min(0).max(34_999_990), + maxPriceChange: z.number().min(0).max(34_999_990), + importerRewardPerc: z.number().min(0).max(99.99), + importerRewardRub: z.number().min(0).max(1_000_000_000), disableChecks: z.boolean(), registration: z.string().nullable(), insNSIB: z.string().nullable(), technicalCard: z.string().nullable(), telematic: z.string().nullable(), tracker: z.string().nullable(), - mileage: z.number(), + mileage: z.number().min(0), calcType: z.number().nullable(), - totalPayments: z.number(), + totalPayments: z.number().min(0), objectRegistration: z.number().nullable(), objectRegionRegistration: z.string().nullable(), - vehicleTaxInYear: z.number(), - vehicleTaxInLeasingPeriod: z.number(), + vehicleTaxInYear: z.number().min(0).max(9_999_999), + vehicleTaxInLeasingPeriod: z.number().min(0).max(9_999_999), objectCategoryTax: z.number().nullable(), objectTypeTax: z.number().nullable(), typePTS: z.number().nullable(), @@ -119,9 +121,9 @@ const ValuesSchema = z.object({ legalClientTown: z.string().nullable(), subsidy: z.string().nullable(), fuelCard: z.string().nullable(), - leaseObjectPriceWthtVAT: z.number(), - VATInLeaseObjectPrice: z.number(), - engineHours: z.number(), + leaseObjectPriceWthtVAT: z.number().min(0).max(1_000_000_000), + VATInLeaseObjectPrice: z.number().min(0).max(1_000_000_000), + engineHours: z.number().min(0).max(10), bonusCoefficient: z.number(), /** Link Values */ @@ -132,11 +134,11 @@ const ValuesSchema = z.object({ /** Readonly Values */ leaseObjectRiskName: z.string().nullable(), - insKaskoPriceLeasePeriod: z.number(), + insKaskoPriceLeasePeriod: z.number().min(0), irrInfo: z.string().nullable(), registrationDescription: z.string().nullable(), depreciationGroup: z.string().nullable(), - subsidySum: z.number(), + subsidySum: z.number().min(0), plPriceRub: z.number(), discountRub: z.number(), });