using System; using System.Linq; using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; namespace EvoCalculator.Core.Calculation.v1; public class PostValues { protected PreparedValues _preparedValues; public decimal BaseCost { get; set; } public decimal BonusBase { get; set; } public decimal BonusResult { get; set; } public double NPVNI { get; set; } public decimal PriceUP { get; set; } public double PriceUP_PR { get; set; } public decimal PriceUP_Year { get; set; } public double PriceUP_Year_PR { get; set; } public PostValues(PreparedValues preparedValues) { _preparedValues = preparedValues; } public virtual void ComputeBaseCost(BaseColumn kaskoNmperGrColumn, BaseColumn tlmGrColumn, BaseColumn gpsGrColumn) { BaseCost = (_preparedValues.PlPrice + _preparedValues.InsuranceOsago + Math.Abs(kaskoNmperGrColumn.Values[0]) + Math.Abs(tlmGrColumn.Values[0]) + Math.Abs(gpsGrColumn.Values[0]) + _preparedValues.Rats + _preparedValues.Registration + _preparedValues.TrackerCost + _preparedValues.TLMCost + _preparedValues.TransportTaxGr) * (decimal)_preparedValues.Leasing0K + _preparedValues.NsibBrutto; } public void ComputeBonusBase(BaseColumn kaskoBonusGrSumColumn) { BonusBase = _preparedValues.PlPrice + _preparedValues.InsuranceOsago + Math.Abs(kaskoBonusGrSumColumn.Values[0]) - _preparedValues.Discount - _preparedValues.ComissionRub - _preparedValues.FirstPaymentSum; } public void ComputeBonusResult(BaseColumn npvBonusExpensesColumn) { BonusResult = Math.Abs(npvBonusExpensesColumn.Values[0]) - Math.Abs(npvBonusExpensesColumn.Values[0]) * (decimal)_preparedValues.SalaryRate / (decimal)(1 + _preparedValues.SalaryRate); } public void ComputeNPVNI(BaseColumn npvColumn) { NPVNI = npvColumn.Values.Sum(x => (double)x) / (double)_preparedValues.NpvBase; } public void ComputePriceUP(BaseColumn sumColumn) { PriceUP = sumColumn.Values.Skip(1).Sum(x => x) - _preparedValues.PriceUpTotal; } public void ComputePriceUP_PR() { PriceUP_PR = (double)PriceUP / (double)_preparedValues.PriceUpTotal; } public void ComputePriceUP_Year() { PriceUP_Year = PriceUP * 12 / _preparedValues.Nmper; } public void ComputePriceUP_Year_PR() { PriceUP_Year_PR = (double)PriceUP_Year / (double)_preparedValues.PriceUpTotal; } }