From 5ae2a6ca53b6a2443a6dc581c00a90b4a8c0f3b5 Mon Sep 17 00:00:00 2001 From: Chika Date: Sat, 30 Apr 2022 15:01:50 +0300 Subject: [PATCH] stores: specify values types for ValuesStore --- stores/calculation/values/index.ts | 16 +- stores/calculation/values/types.ts | 396 ++++++++++++++++++----------- 2 files changed, 258 insertions(+), 154 deletions(-) diff --git a/stores/calculation/values/index.ts b/stores/calculation/values/index.ts index 7e475d6..71518b4 100644 --- a/stores/calculation/values/index.ts +++ b/stores/calculation/values/index.ts @@ -1,38 +1,36 @@ import { makeAutoObservable } from 'mobx'; import { RootStore } from '../../root'; -import { Values } from './types'; - -export type CalculationValues = Partial>; +import { Values, ValuesTypes } from './types'; export class ValuesStore { root: RootStore; - #values: CalculationValues = {}; + #values: Partial = {}; constructor(rootStore: RootStore) { makeAutoObservable(this); this.root = rootStore; } - hydrate = (initialValues: CalculationValues) => { + hydrate = (initialValues: Partial) => { this.#values = initialValues; }; - getValue(valueName: Values) { + getValue(valueName: K): Partial[K] { return this.#values[valueName]; } getValues(valuesNames: readonly K[]) { return valuesNames.reduce((values, valueName) => { - values[valueName] = this.#values[valueName]; + values[valueName] = this.getValue(valueName); return values; - }, {} as Record); + }, {} as Pick, typeof valuesNames[number]>); } setValue(valueName: Values, value: any) { this.#values[valueName] = value; } - setValues(values: CalculationValues, options: { replace?: boolean }) { + setValues(values: Partial, options: { replace?: boolean }) { if (options.replace) this.#values = values; this.#values = Object.assign(this.#values, values); } diff --git a/stores/calculation/values/types.ts b/stores/calculation/values/types.ts index 6ef681f..cb3774f 100644 --- a/stores/calculation/values/types.ts +++ b/stores/calculation/values/types.ts @@ -1,149 +1,255 @@ -export type Values = - | 'lead' - | 'opportunity' - | 'quote' - | 'recalcWithRevision' - | 'product' - | 'clientRisk' - | 'clientType' - | 'leaseObjectPrice' - | 'supplierCurrency' - | 'supplierDiscountRub' - | 'supplierDiscountPerc' - | 'leasingPeriod' - | 'firstPaymentPerc' - | 'firstPaymentRub' - | 'lastPaymentPerc' - | 'lastPaymentRub' - | 'lastPaymentRule' - | 'redemptionPaymentSum' - | 'balanceHolder' - | 'graphType' - | 'parmentsDecreasePercent' - | 'seasonType' - | 'highSeasonStart' - | 'comissionPerc' - | 'comissionRub' - | 'saleBonus' - | 'IRR_Perc' - | 'paymentGraph' - | 'leaseObjectType' - | 'deliveryTime' - | 'leaseObjectRisk' - | 'depreciationGroup' - | 'leaseObjectCount' - | 'withTrailer' - | 'leaseObjectUsed' - | 'maxMass' - | 'countSeats' - | 'maxSpeed' - | 'brand' - | 'model' - | 'configuration' - | 'leaseObjectYear' - | 'engineType' - | 'leaseObjectCategory' - | 'leaseObjectMotorPower' - | 'engineVolume' - | 'leaseObjectUseFor' - | 'dealer' - | 'dealerPerson' - | 'dealerRewardCondition' - | 'dealerRewardSumm' - | 'dealerBroker' - | 'dealerBrokerRewardCondition' - | 'dealerBrokerRewardSumm' - | 'indAgent' - | 'indAgentRewardCondition' - | 'indAgentRewardSumm' - | 'calcDoubleAgent' - | 'calcDoubleAgentRewardCondition' - | 'calcDoubleAgentRewardSumm' - | 'calcBroker' - | 'calcBrokerRewardCondition' - | 'calcBrokerRewardSum' - | 'calcFinDepartment' - | 'finDepartmentRewardCondtion' - | 'finDepartmentRewardSumm' - | 'GPSBrand' - | 'GPSModel' - | 'regionRegistration' - | 'townRegistration' - | 'infuranceOPF' - | 'insKaskoType' - | 'insDecentral' - | 'insFranchise' - | 'insUnlimitDrivers' - | 'insAgeDrivers' - | 'insExpDrivers' - | 'INNForCalc' - | 'lastPaymentRedemption' - | 'priceWithDiscount' - | 'fullPriceWithDiscount' - | 'costIncrease' - | 'insurance' - | 'registrationQuote' - | 'technicalCardQuote' - | 'NSIB' - | 'quoteName' - | 'quoteContactGender' - | 'quoteRedemptionGraph' - | 'showFinGAP' - | 'tarif' - | 'creditRate' - | 'rate' - | 'requirementTelematic' - | 'maxPriceChange' - | 'importerRewardPerc' - | 'importerRewardRub' - | 'disableChecks' - | 'registration' - | 'insNSIB' - | 'technicalCard' - | 'telematic' - | 'tracker' - | 'mileage' - | 'calcType' - | 'totalPayments' - | 'objectRegistration' - | 'objectRegionRegistration' - | 'vehicleTaxInYear' - | 'vehicleTaxInLeasingPeriod' - | 'objectCategoryTax' - | 'objectTypeTax' - | 'typePTS' - | 'legalClientRegion' - | 'legalClientTown' - | 'subsidy' - | 'subsidySum' - | 'fuelCard' - | 'minPriceChange' - | 'leaseObjectPriceWthtVAT' - | 'VATInLeaseObjectPrice' - | 'engineHours' +export interface ValuesTypes { + lead: string; + opportunity: string; + quote: string; + recalcWithRevision: boolean; + product: string; + clientRisk: string; + clientType: string; + leaseObjectPrice: number; + supplierCurrency: string; + supplierDiscountRub: number; + supplierDiscountPerc: number; + leasingPeriod: number; + firstPaymentPerc: number; + firstPaymentRub: number; + lastPaymentPerc: number; + lastPaymentRub: number; + lastPaymentRule: 100_000_000 | 100_000_001 | 100_000_002; + redemptionPaymentSum: number; + balanceHolder: 100_000_000 | 100_000_001; + graphType: + | 100_000_000 + | 100_000_001 + | 100_000_002 + | 100_000_003 + | 100_000_004; + + parmentsDecreasePercent: number; + seasonType: + | 100_000_000 + | 100_000_001 + | 100_000_002 + | 100_000_003 + | 100_000_004 + | 100_000_005 + | 100_000_006 + | 100_000_007; + highSeasonStart: + | 100_000_000 + | 100_000_001 + | 100_000_002 + | 100_000_003 + | 100_000_004 + | 100_000_005 + | 100_000_006 + | 100_000_007 + | 100_000_008 + | 100_000_009 + | 100_000_010 + | 100_000_011 + | 100_000_012; + comissionPerc: number; + comissionRub: number; + saleBonus: number; + IRR_Perc: number; + leaseObjectType: string; + deliveryTime: + | 100_000_000 + | 100_000_001 + | 100_000_002 + | 100_000_003 + | 100_000_004 + | 100_000_005 + | 100_000_006 + | 100_000_007 + | 100_000_008 + | 100_000_009 + | 100_000_010 + | 100_000_011 + | 100_000_012; + depreciationGroup: string; + leaseObjectCount: number; + withTrailer: boolean; + leaseObjectUsed: boolean; + maxMass: number; + countSeats: number; + maxSpeed: number; + brand: string; + model: string; + configuration: string; + leaseObjectYear: number; + engineType: + | 100_000_000 + | 100_000_001 + | 100_000_002 + | 100_000_003 + | 100_000_004; + leaseObjectCategory: + | 100_000_000 + | 100_000_001 + | 100_000_002 + | 100_000_003 + | 100_000_004; + leaseObjectMotorPower: number; + engineVolume: number; + leaseObjectUseFor: + | 100_000_000 + | 100_000_001 + | 100_000_002 + | 100_000_003 + | 100_000_004 + | 100_000_005 + | 100_000_006 + | 100_000_007 + | 100_000_008 + | 100_000_009 + | 100_000_010 + | 100_000_011 + | 100_000_012 + | 100_000_013 + | 100_000_014 + | 100_000_015 + | 100_000_016 + | 100_000_017 + | 100_000_018 + | 100_000_019; + dealer: string; + dealerPerson: string; + dealerRewardCondition: string; + dealerRewardSumm: number; + dealerBroker: string; + dealerBrokerRewardCondition: string; + dealerBrokerRewardSumm: number; + indAgent: string; + indAgentRewardCondition: string; + indAgentRewardSumm: number; + calcDoubleAgent: string; + calcDoubleAgentRewardCondition: string; + calcDoubleAgentRewardSumm: number; + calcBroker: string; + calcBrokerRewardCondition: string; + calcBrokerRewardSum: number; + calcFinDepartment: string; + finDepartmentRewardCondtion: string; + finDepartmentRewardSumm: number; + GPSBrand: string; + GPSModel: string; + regionRegistration: string; + townRegistration: string; + infuranceOPF: 100_000_000 | 100_000_001; + insKaskoType: 100_000_000 | 100_000_001; + insDecentral: boolean; + insFranchise: number; + insUnlimitDrivers: boolean; + insAgeDrivers: number; + insExpDrivers: number; + INNForCalc: number; + lastPaymentRedemption: boolean; + priceWithDiscount: boolean; + fullPriceWithDiscount: boolean; + costIncrease: boolean; + insurance: boolean; + registrationQuote: boolean; + technicalCardQuote: boolean; + NSIB: boolean; + quoteName: string; + quoteContactGender: 100_000_000 | 100_000_001; + quoteRedemptionGraph: boolean; + showFinGAP: boolean; + tarif: string; + creditRate: number; + rate: string; + requirementTelematic: + | 100_000_000 + | 100_000_001 + | 100_000_002 + | 100_000_003 + | 100_000_004 + | 100_000_005 + | 100_000_006 + | 100_000_007; + minPriceChange: number; + maxPriceChange: number; + importerRewardPerc: number; + importerRewardRub: number; + disableChecks: boolean; + registration: string; + insNSIB: string; + technicalCard: string; + telematic: string; + tracker: string; + mileage: number; + calcType: 100_000_000 | 100_000_001; + totalPayments: number; + objectRegistration: 100_000_000 | 100_000_001; + objectRegionRegistration: string; + vehicleTaxInYear: number; + vehicleTaxInLeasingPeriod: number; + objectCategoryTax: + | 100_000_000 + | 100_000_001 + | 100_000_002 + | 100_000_003 + | 100_000_004 + | 100_000_005 + | 100_000_006 + | 100_000_007 + | 100_000_008 + | 100_000_009 + | 100_000_010 + | 100_000_011 + | 100_000_012 + | 100_000_013 + | 100_000_014 + | 100_000_015 + | 100_000_016 + | 100_000_017 + | 100_000_018 + | 100_000_019 + | 100_000_020; + objectTypeTax: + | 100_000_000 + | 100_000_001 + | 100_000_002 + | 100_000_003 + | 100_000_004 + | 100_000_005; + typePTS: 100_000_000 | 100_000_001; + legalClientRegion: string; + legalClientTown: string; + subsidy: string; + subsidySum: number; + fuelCard: string; + leaseObjectPriceWthtVAT: number; + VATInLeaseObjectPrice: number; + engineHours: number; /** Result Values */ - | 'resultTotalGraphwithNDS' - | 'resultPlPrice' - | 'resultPriceUpPr' - | 'resultIRRGraphPerc' - | 'resultIRRNominalPerc' - | 'resultInsKasko' - | 'resultInsOsago' - | 'resultDopProdSum' - | 'resultFirstPayment' - | 'resultLastPayment' - | 'resultTerm' - | 'resultAB_FL' - | 'resultAB_UL' - | 'resultBonusMPL' - | 'resultDopMPLLeasing' - | 'resultBonusDopProd' - | 'resultBonusSafeFinance' - | 'resultFirstPaymentRiskPolicy' + resultTotalGraphwithNDS: number; + resultPlPrice: number; + resultPriceUpPr: number; + resultIRRGraphPerc: number; + resultIRRNominalPerc: number; + resultInsKasko: number; + resultInsOsago: number; + resultDopProdSum: number; + resultFirstPayment: number; + resultLastPayment: number; + resultTerm: number; + resultAB_FL: number; + resultAB_UL: number; + resultBonusMPL: number; + resultDopMPLLeasing: number; + resultBonusDopProd: number; + resultBonusSafeFinance: number; + resultFirstPaymentRiskPolicy: number; /** Link Values */ - | 'kpUrl' - | 'leadUrl' - | 'opportunityUrl' - | 'quoteUrl'; + kpUrl: string; + leadUrl: string; + opportunityUrl: string; + quoteUrl: string; +} + +export type Values = keyof ValuesTypes;