Files
monorepo/LCU.WebApps.Indirect.ReserveManagementSystem/Api/ReserveManagementSystemApi/Helpers/BoatLoanCalculationHelper.cs
T
2026-03-17 08:54:34 -05:00

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);
}
}
}