57 lines
2.3 KiB
C#
57 lines
2.3 KiB
C#
using ReserveManagementSystemLib.Models;
|
|
|
|
namespace ReserveManagementSystemApi.Helpers
|
|
{
|
|
public class BoatLoanCalculationHelper
|
|
{
|
|
private LoanReserve loanReserve = new LoanReserve();
|
|
|
|
public BoatLoanCalculationHelper()
|
|
{
|
|
|
|
}
|
|
|
|
public LoanReserve CalculateStandardMarkup(CalculationConfig cc)
|
|
{
|
|
var markup = cc.LoanData().ContractRate - cc.LoanData().BuyRate;
|
|
loanReserve.ReserveTypeMessage = "Standard Reserve";
|
|
switch (markup)
|
|
{
|
|
case decimal d when (d >= (decimal)0.00 && d <= (decimal)0.49):
|
|
loanReserve.ReserveAmount = cc.LoanData().LoanAmount * (decimal).01;
|
|
break;
|
|
case decimal d when (d >= (decimal)0.50 && d <= (decimal)0.74):
|
|
loanReserve.ReserveAmount = cc.LoanData().LoanAmount * (decimal).02;
|
|
break;
|
|
case decimal d when (d >= (decimal)0.75 && d <= (decimal)0.99):
|
|
loanReserve.ReserveAmount = cc.LoanData().LoanAmount * (decimal).03;
|
|
break;
|
|
case decimal d when (d >= (decimal)1.00 && d <= (decimal)1.49):
|
|
loanReserve.ReserveAmount = cc.LoanData().LoanAmount * (decimal).04;
|
|
break;
|
|
case decimal d when (d >= (decimal)1.50 && d <= (decimal)1.99):
|
|
loanReserve.ReserveAmount = cc.LoanData().LoanAmount * (decimal).05;
|
|
break;
|
|
case decimal d when (d == (decimal)2.00):
|
|
loanReserve.ReserveAmount = cc.LoanData().LoanAmount * (decimal).06;
|
|
break;
|
|
case decimal d when (d > (decimal)2.00):
|
|
loanReserve.ReserveAmount = cc.LoanData().LoanAmount * (decimal).06;
|
|
loanReserve.ReserveTypeMessage = "Standard Reserve - Exceeds Max Markup";
|
|
break;
|
|
default:
|
|
loanReserve.ReserveAmount = 0;
|
|
loanReserve.ReserveTypeMessage = "No Reserve";
|
|
break;
|
|
}
|
|
return loanReserve;
|
|
|
|
}
|
|
|
|
internal DateTime GetLastChargebackDate (DateTime firstPmtDate, int numOfChargebackPayments)
|
|
{
|
|
return firstPmtDate.AddMonths(numOfChargebackPayments - 1);
|
|
}
|
|
}
|
|
}
|