add check for zero value in columns

This commit is contained in:
Chika 2020-11-22 22:05:00 +03:00
parent 819da95e70
commit a43bb702e1
8 changed files with 72 additions and 0 deletions

View File

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
namespace EvoCalculator.Core.Calculation
{
public class CheckTools<T>
{
private string ErrorZeroValue =
"Невозможно осуществить расчет графика. При заданных параметрах получаются отрицательные значения";
public void CheckColumnForZeroValue(IEnumerable<decimal> Values)
{
if (Values.Skip(1).ToList().Exists(x => x < 0))
{
throw new Exception(ErrorZeroValue);
}
}
public void CheckColumnForZeroValue(IEnumerable<double> Values)
{
if (Values.Skip(1).ToList().Exists(x => x <= 0))
{
throw new Exception(ErrorZeroValue);
}
}
}
}

View File

@ -8,11 +8,18 @@ namespace EvoCalculator.Core.Calculation.Columns
{ {
} }
private void PostCheck()
{
new CheckTools<decimal>().CheckColumnForZeroValue(Values);
}
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues) public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
{ {
for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].GpsCostPayment; for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].GpsCostPayment;
Values[0] = -XNPV; Values[0] = -XNPV;
PostCheck();
} }
} }
} }

View File

@ -8,6 +8,11 @@ namespace EvoCalculator.Core.Calculation.Columns
rate) rate)
{ {
} }
private void PostCheck()
{
new CheckTools<decimal>().CheckColumnForZeroValue(Values);
}
public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants) public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants)
{ {
@ -29,6 +34,8 @@ namespace EvoCalculator.Core.Calculation.Columns
Values[0] = -XNPV; Values[0] = -XNPV;
PostCheck();
} }
} }
} }

View File

@ -39,6 +39,8 @@ namespace EvoCalculator.Core.Calculation.Columns
private void PostCheck() private void PostCheck()
{ {
new CheckTools<decimal>().CheckColumnForZeroValue(Values);
if (Values[1] / Values.Skip(1).Sum() >= 0.5m) if (Values[1] / Values.Skip(1).Sum() >= 0.5m)
{ {
throw new Exception( throw new Exception(

View File

@ -8,6 +8,11 @@ namespace EvoCalculator.Core.Calculation.Columns
{ {
} }
private void PostCheck()
{
new CheckTools<decimal>().CheckColumnForZeroValue(Values);
}
public void ComputeValues(Constants.Calculation calculation, PreparedValues preparedValues, public void ComputeValues(Constants.Calculation calculation, PreparedValues preparedValues,
SumCurrentColumn sumCurrentColumn, SumCurrentNegativeColumn sumCurrentNegativeColumn, SumCurrentColumn sumCurrentColumn, SumCurrentNegativeColumn sumCurrentNegativeColumn,
SumCurrentInterestColumn sumCurrentInterestColumn, SumCurrentTLMColumn sumCurrentTlmColumn) SumCurrentInterestColumn sumCurrentInterestColumn, SumCurrentTLMColumn sumCurrentTlmColumn)
@ -17,6 +22,8 @@ namespace EvoCalculator.Core.Calculation.Columns
sumCurrentTlmColumn.Values[i] * (1 + (decimal) calculation.VatValue) - sumCurrentTlmColumn.Values[i] * (1 + (decimal) calculation.VatValue) -
sumCurrentInterestColumn.Values[i] * (1 + (decimal) calculation.VatValue) * sumCurrentInterestColumn.Values[i] * (1 + (decimal) calculation.VatValue) *
(decimal) preparedValues.Repayment; (decimal) preparedValues.Repayment;
PostCheck();
} }
} }
} }

View File

@ -8,6 +8,11 @@ namespace EvoCalculator.Core.Calculation.Columns
{ {
} }
private void PostCheck()
{
new CheckTools<decimal>().CheckColumnForZeroValue(Values);
}
public void ComputeValues(Constants.Calculation constants, SumColumn sumColumn, PreparedValues preparedValues) public void ComputeValues(Constants.Calculation constants, SumColumn sumColumn, PreparedValues preparedValues)
{ {
Values[0] = 0; Values[0] = 0;
@ -18,6 +23,8 @@ namespace EvoCalculator.Core.Calculation.Columns
Values[i] = (decimal) (1 + constants.VatValue) * sumColumn.Values[i]; Values[i] = (decimal) (1 + constants.VatValue) * sumColumn.Values[i];
Values[0] = Sum; Values[0] = Sum;
PostCheck();
} }
} }
} }

View File

@ -8,11 +8,18 @@ namespace EvoCalculator.Core.Calculation.Columns
{ {
} }
private void PostCheck()
{
new CheckTools<decimal>().CheckColumnForZeroValue(Values);
}
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues) public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
{ {
for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].TlmCostPayment; for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].TlmCostPayment;
Values[0] = -XNPV; Values[0] = -XNPV;
PostCheck();
} }
} }
} }

View File

@ -8,6 +8,11 @@ namespace EvoCalculator.Core.Calculation.Columns
{ {
} }
private void PostCheck()
{
new CheckTools<decimal>().CheckColumnForZeroValue(Values);
}
public void ComputeValues(Constants.Calculation constants, SumColumn sumColumn, PreparedValues preparedValues) public void ComputeValues(Constants.Calculation constants, SumColumn sumColumn, PreparedValues preparedValues)
{ {
Values[0] = 0; Values[0] = 0;
@ -17,6 +22,8 @@ namespace EvoCalculator.Core.Calculation.Columns
for (var i = 2; i < Values.Length; i++) Values[i] = (decimal) constants.VatValue * sumColumn.Values[i]; for (var i = 2; i < Values.Length; i++) Values[i] = (decimal) constants.VatValue * sumColumn.Values[i];
Values[0] = Sum; Values[0] = Sum;
PostCheck();
} }
} }
} }