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