import { getMonthlyPayment } from '../../ui-kit/Calculator/getMonthlyPayment'; import { getLimitRangeByKeys } from '../../ui-kit/Calculator/rangeHelpers'; import { type CreditCalculatorData, type CreditCalculatorParams, type CreditCalculatorParamsViewSettings, type CreditCalculatorUserInputParams, } from './CalculatorCreditContent'; import { DEFAULT_CREDIT_CALCULATOR_PARAMS } from './defaultCreditCalculatorParams'; import { getCreditCalculatorLimitParams } from './getCreditCalculatorLimitParams'; import { getCreditCalculatorRateParams } from './getCreditCalculatorRateParams'; export const getCreditCalculatorParams = ( userInputParams: CreditCalculatorUserInputParams, calcSource?: CreditCalculatorData, paramsViewSettings?: CreditCalculatorParamsViewSettings, ): CreditCalculatorParams => { const { moneyValue, monthsValue } = userInputParams; const rateRows = calcSource?.rateRows || [DEFAULT_CREDIT_CALCULATOR_PARAMS]; const limitRows = calcSource?.limitRows || []; const creditCalculatorSourceBookLimitParams = getCreditCalculatorLimitParams({ limitRows, userInputParams, paramsViewSettings, }); const { minSum, maxSum } = getLimitRangeByKeys( ['minSum', 'maxSum'], creditCalculatorSourceBookLimitParams, rateRows, ); const { minMonths, maxMonths } = getLimitRangeByKeys( ['minMonths', 'maxMonths'], creditCalculatorSourceBookLimitParams, rateRows, ); const creditCalculatorRateParams = getCreditCalculatorRateParams({ rateRows, userInputParams, paramsViewSettings, moneyValue, monthsValue, }); const { rate } = creditCalculatorRateParams; const monthlyPayment = getMonthlyPayment(rate, userInputParams); return { ...creditCalculatorRateParams, ...userInputParams, minSum, maxSum, minMonths, maxMonths, moneyValue, monthsValue, monthlyPayment, }; };