using System.Collections.Generic; using LCU.Library.Internal.IncentiveApiModels.Enums; namespace LCU.Library.Internal.IncentiveApiModels.Entities { public class ProductDetail { private ProductDetail( Product product, string title, ProductValue valueType, int minValue, int maxValue, bool hasGoals, bool hasCommissions, bool isSellable, bool isReferrable, bool isNonPaying ) { Product = product; Title = title; ValueType = valueType; MinValue = minValue; MaxValue = maxValue; HasGoals = hasGoals; HasCommissions = hasCommissions; IsSellable = isSellable; IsReferrable = isReferrable; IsNonPaying = isNonPaying; } public Product Product { get; } public string Title { get; } public ProductValue ValueType { get; } public int MinValue { get; } public int MaxValue { get; } public bool HasGoals { get; } public bool HasCommissions { get; } public bool IsSellable { get; } public bool IsReferrable { get; } public bool IsNonPaying { get; } public static readonly ProductDetail ATMCard = new( Product.ATMCard, "ATM Card", ProductValue.Numeric, 1, 99, false, true, false, true, true ); public static readonly ProductDetail CheckCard = new( Product.CheckCard, "Check Card", ProductValue.Numeric, 1, 99, false, true, false, true, true ); public static readonly ProductDetail CreditCard = new( Product.CreditCard, "Credit Card", ProductValue.Numeric, 1, 99, true, true, true, true, false ); public static readonly ProductDetail CreditCardBalanceTransfer = new( Product.CreditCardBalanceTransfer, "CCBT", ProductValue.Numeric, 1, 99, false, true, false, true, false ); public static readonly ProductDetail DebtProtection = new( Product.DebtProtection, "Debt Protection", ProductValue.Numeric, 1, 99, false, true, true, false, false ); public static readonly ProductDetail DebtProtectionEligibleLoan = new( Product.DebtProtectionEligibleLoan, "DP Eligible Loan", ProductValue.Numeric, 1, 99, false, false, true, false, true ); public static readonly ProductDetail DirectDeposit = new( Product.DirectDeposit, "Direct Deposit", ProductValue.Numeric, 1, 99, false, true, false, true, false ); public static readonly ProductDetail eStatement = new( Product.eStatement, "eStatement", ProductValue.Numeric, 1, 99, false, true, false, true, false ); public static readonly ProductDetail FirstMortgageReferral = new( Product.FirstMortgageReferral, "First Mortgage Referral", ProductValue.Numeric, 1, 99, false, true, false, true, false ); public static readonly ProductDetail GAPInsurance = new( Product.GAPInsurance, "GAPInsurance", ProductValue.Numeric, 1, 99, false, true, true, false, false ); public static readonly ProductDetail LIC = new( Product.LIC, "LIC", ProductValue.Numeric, 1, 99, true, true, false, true, false ); public static readonly ProductDetail MechanicalBreakdownProtection = new( Product.MechanicalBreakdownProtection, "MBP", ProductValue.Numeric, 1, 99, false, true, true, false, false ); public static readonly ProductDetail Mortgage = new( Product.Mortgage, "Mortgage", ProductValue.Monetary, 1, 99999999, true, true, true, true, false ); public static readonly ProductDetail NewChecking = new( Product.NewChecking, "New Checking", ProductValue.Numeric, 1, 99, true, true, true, true, false ); public static readonly ProductDetail Unknown = new( Product.Unknown, "Unknown", ProductValue.Unknown, 1, 99, false, false, false, false, false ); public static readonly ProductDetail Vehicle = new( Product.Vehicle, "Vehicle", ProductValue.Numeric, 1, 99, true, true, true, true, false ); public static readonly List ProductDetails = new() { ATMCard, CheckCard, CreditCard, CreditCardBalanceTransfer, DebtProtection, DebtProtectionEligibleLoan, DirectDeposit, eStatement, FirstMortgageReferral, GAPInsurance, LIC, MechanicalBreakdownProtection, Mortgage, NewChecking, Unknown, Vehicle }; public static ProductDetail DetailsForProduct(Product product) { return ProductDetails.Find(x => x.Product == product); } } }