Files
monorepo/LCU.API.Internal.OnlineLoanApp/Landmark.OLA.Models/Loan/LoanPurpose.cs
T
2026-03-11 11:18:25 -05:00

110 lines
4.3 KiB
C#

using Landmark.OLA.Models.Loan.Enums;
namespace Landmark.OLA.Models.Loan
{
public static class LoanPurpose
{
//Acceptable values taken from CRIF database
/*
select p.shortname, p.name, p.productid, lp.name, lp.[description],
lp.loanpurposeid, lp.isactivefl from v_RptProduct_v001 as p
inner join v_RptProductLoanPurpose_v001 as plp
on plp.productid = p.productid
inner join v_RptLoanPurpose_v001 as lp
on lp.loanpurposeid = plp.loanpurposeid
order by p.productid
*/
private static readonly List<Purpose> _ccPurposes = new List<Purpose>
{ Purpose.Other, Purpose.Consolidation, Purpose.Reestablish_Credit};
private static readonly List<Purpose> _eqPurposes = new List<Purpose>
{ Purpose.Home_Improvement, Purpose.Home_Purchase, Purpose.Home_Refinance,
Purpose.Other, Purpose.Cash_Out_Refinance };
private static readonly List<Purpose> _mfgHomePurposes = new List<Purpose>
{ Purpose.Home_Improvement, Purpose.Purchase_Manufactured_Home, Purpose.Home_Refinance,
Purpose.Other, Purpose.Cash_Out_Refinance };
private static readonly List<Purpose> _vPurposes = new List<Purpose>
{ Purpose.Purchase, Purpose.Cash_Out_Refinance, Purpose.Refinance_Vehicle };
private static readonly List<Purpose> _mPurposes = new List<Purpose>
{ Purpose.Purchase, Purpose.Refinance_Vehicle };
private static readonly List<Purpose> _pPurposes = new List<Purpose>
{ Purpose.Purchase, Purpose.Refinance_Vehicle };
private static readonly List<Purpose> _tPurposes = new List<Purpose>
{ Purpose.Purchase, Purpose.Refinance_Vehicle };
private static readonly List<Purpose> _sPurposes = new List<Purpose>
{ Purpose.Other, Purpose.Consolidation};
public static Dictionary<LoanType, List<Purpose>> TypePurposes => new Dictionary<LoanType, List<Purpose>>
{
{ LoanType.CC_CashBack, _ccPurposes },
{ LoanType.CC_Rewards, _ccPurposes },
{ LoanType.CC_Student, _ccPurposes },
{ LoanType.CC_Secure, _ccPurposes },
{ LoanType.EQ_HELOC_Flex, _eqPurposes },
{ LoanType.EQ_Mtg_Refi_Express, _eqPurposes },
{ LoanType.EQ_Home_Equity_Fixed, _eqPurposes },
{ LoanType.EQ_Mfg_Home_With_or_Without_Land, _mfgHomePurposes },
{ LoanType.V_Vehicle, _vPurposes },
{ LoanType.V_VehiclePreapproval, _vPurposes },
{ LoanType.M_Boat, _mPurposes },
{ LoanType.P_Powersport, _pPurposes },
{ LoanType.T_TrailerMotorhome, _tPurposes },
{ LoanType.S_Signature, _sPurposes },
{ LoanType.S_Special, _sPurposes },
};
public static bool IsValidPurposeForType(LoanType? type, Purpose? purpose)
{
if (!type.HasValue)
throw new ArgumentException("LoanType cannot be null");
if (!purpose.HasValue)
throw new ArgumentException("Purpose cannot be null");
return IsValidPurposeForType(type.Value, purpose.Value);
}
public static bool IsValidPurposeForType(LoanType type, Purpose purpose)
{
return TypePurposes[type].Contains(purpose);
}
//Enum names and values based on CRIF's v_RptProductLoanPurpose_v001 table
//joined with v_RptProductLoanPurpose_v001
//to find purposes that are active and in use
/*
select distinct lp.loanpurposeid, lp.name,lp.[description]
from v_RptLoanPurpose_v001 as lp
inner join v_RptProductLoanPurpose_v001 as plp
on lp.loanpurposeid = plp.loanpurposeid
where isactivefl = 1
*/
public enum Purpose
{
Home_Improvement = 3,
Home_Purchase = 4,
Home_Refinance = 5,
Purchase_Boat = 8,
Purchase = 12,
Other = 149,
Refinance = 141,
Dental_Expense = 142,
Medical_Expense = 143,
Cash_Out_Refinance = 144,
Refinance_Vehicle = 146,
Consolidation = 148,
Reestablish_Credit = 150,
Purchase_Manufactured_Home = 151,
}
}
}