2020-10-16 16:40:54 +03:00

56 lines
1.7 KiB
C#

using System;
using EvoCalculator.Core.FinanceFormulas;
using EvoCalculator.Core.Models.Calculation.Interfaces;
using EvoCalculator.Core.Models.Calculation.Models;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
public class KaskoNmperGrColumn : IColumn<double>
{
public double[] Values { get; set; }
public KaskoNmperGrColumn(int count)
{
Values = new double[count];
}
public void ComputeValues(PreparedValues preparedValues, IColumn<DateTime> dateTempColumn)
{
for (var i = 0; i < Values.Length; i++)
{
Values[i] = 0;
}
for (var i = 1; i < Values.Length; i += 12)
{
if (i <= preparedValues.NmperInsurance)
{
if (preparedValues.NmperInsurance - i < 16 - 1)
{
Values[i] = preparedValues.InsuranceKasko / 12 * (preparedValues.NmperInsurance - i + 1);
}
else
{
Values[i] = preparedValues.InsuranceKasko;
}
}
}
Flow[] flows = new Flow[Values.Length - 1];
for (var i = 1; i < Values.Length; i++)
{
flows[i - 1] = new Flow()
{
Date = dateTempColumn.Values[i].Date,
Value = Values[i]
};
}
var XNPV = new XNPV(flows, preparedValues.IrrExpected);
Values[0] = -XNPV.GetResult();
}
}
}