110 lines
4.3 KiB
C#
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,
|
|
}
|
|
}
|
|
}
|