36 lines
1.5 KiB
C#
36 lines
1.5 KiB
C#
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||
|
||
namespace EvoCalculator.Core.Calculation.Columns
|
||
{
|
||
public class InsuranceBonusExpensesColumn : BaseColumnWithSum
|
||
{
|
||
public InsuranceBonusExpensesColumn(int count) : base(count)
|
||
{
|
||
}
|
||
|
||
public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants)
|
||
{
|
||
if (preparedValues.NmperInsurance < constants.MaxOnePolicePeriod)
|
||
Values[2] = preparedValues.InsuranceBonus;
|
||
else
|
||
/*
|
||
* +1 - компенсация того, что считается с 0 позиции
|
||
*/
|
||
for (var i = 2; i < Values.Length; i += i == 2 ? 11 : 12)
|
||
if (preparedValues.NmperInsurance - i >= 3)
|
||
{
|
||
if (
|
||
preparedValues.NmperInsurance == constants.MaxOnePolicePeriod && i <= 3 ||
|
||
preparedValues.NmperInsurance > constants.MaxOnePolicePeriod &&
|
||
preparedValues.NmperInsurance - i > constants.MaxOnePolicePeriod
|
||
)
|
||
Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance * 12;
|
||
else
|
||
Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance *
|
||
(preparedValues.NmperInsurance - i + 1);
|
||
}
|
||
|
||
Values[0] = Sum;
|
||
}
|
||
}
|
||
} |