using EvoCalculator.Core.Models.Calculation.Models.Prepared; namespace EvoCalculator.Core.Calculation.Columns { public class KaskoNmperGrColumn : BaseColumnWithXNPV { public KaskoNmperGrColumn(int count, DateTempColumn dateTempColumn, double rate) : base(count, dateTempColumn, rate) { } private void PostCheck() { new CheckTools().CheckColumnForZeroValue(Values); } public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants) { for (var i = 1; i < Values.Length; i += 12) if (i <= preparedValues.NmperInsurance) { if (preparedValues.NmperInsurance - i >= 3) { if (preparedValues.NmperInsurance - i < constants.MaxOnePolicePeriod - 1) Values[i] = preparedValues.InsuranceKasko / 12 * (preparedValues.NmperInsurance - i + 1); else Values[i] = preparedValues.InsuranceKasko; } else { Values[i] = 0; } } Values[0] = -XNPV; PostCheck(); } } }