2020-10-15 12:55:39 +03:00

48 lines
1.6 KiB
C#

using System;
using EvoCalculator.Core.Models.Calculation.Interfaces;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
public class DateColumn : IColumn<DateTime>
{
public DateTime[] Values { get; set; }
public DateColumn(int count)
{
Values = new DateTime[count];
}
public void ComputeValues(PreparedValues preparedValues,
PreparedPayments preparedPayments,
Constants.Calculation constants,
params IColumn<DateTime>[] columns)
{
Values[0] = preparedValues.DogDate;
Values[1] = Values[0];
Values[2] = preparedValues.DeliveryTime switch
{
100000000 => preparedValues.PaymentDateNew == null
? Values[1].AddMonths(1)
: preparedValues.PaymentDateNew ?? DateTime.MinValue,
100000001 => preparedValues.PaymentDateNew == null
? Values[1].AddDays(constants.DeliveryDays)
: preparedValues.PaymentDateNew ?? DateTime.MinValue,
_ => Values[2]
};
for (var i = 3; i < preparedValues.Nmper + 1; i++)
{
Values[i] = preparedValues.DeliveryTime switch
{
100000000 => preparedValues.PaymentDateNew == null
? Values[1].AddMonths(i - 1)
: Values[2].AddMonths(i - 2),
100000001 => Values[2].AddMonths(i - 2),
_ => Values[2]
};
}
}
}
}