56 lines
1.7 KiB
C#
56 lines
1.7 KiB
C#
using System;
|
|
using EvoCalculator.Core.Calculation.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();
|
|
}
|
|
}
|
|
} |