public void Add(SafeReader oRow, AConnection oDB) { DateTime oInsertDate = oRow["InsertDate"]; switch ((string)oRow["ServiceType"]) { case "Consumer Request": if (DateFits(ref m_oNdspciiDataDate, oInsertDate)) { ExperianConsumerData data = ExperianConsumerData.Load((long)oRow["ServiceLogID"], oDB, m_oLog); if (data != null && data.ServiceLogId != null) { AddNdspciiData(data.CII); } } // if break; case "E-SeriesLimitedData": if (DateFits(ref m_oCompanyDataDate, oInsertDate)) { AddLtdData(ExperianLtd.Load((long)oRow["ServiceLogID"], oDB, m_oLog)); } break; case "E-SeriesNonLimitedData": if (DateFits(ref m_oCompanyDataDate, oInsertDate)) { AddCompanyData(oDB); } break; } // switch } // Add
public LoadExperianConsumerData(int customerId, int?directorId, long?nServiceLogId) { Result = new ExperianConsumerData(); if (nServiceLogId.HasValue) { this.m_nWorkMode = WorkMode.ServiceLog; } else if (directorId.HasValue && directorId.Value != 0) { this.m_nWorkMode = WorkMode.CacheDirector; } else { this.m_nWorkMode = WorkMode.CacheCustomer; } this.m_nCustomerId = customerId; this.m_nDirectorId = directorId; this.m_nServiceLogID = nServiceLogId; } // constructor
} // Parse private ExperianConsumerData Save(ExperianConsumerData data) { if (data == null) { Log.Info( "Not saving Experian consumer data into DB for service log id {0}: data is null.", this.serviceLogID ); return(null); } // if Log.Info("Saving Experian consumer data into DB for service log id {0}...", this.serviceLogID); var con = DB.GetPersistent(); con.BeginTransaction(); try { var id = DB.ExecuteScalar <long>( con, "SaveExperianConsumerData", CommandSpecies.StoredProcedure, DB.CreateTableParameter <ExperianConsumerData>("Tbl", new List <ExperianConsumerData> { data }) ); foreach (var cais in data.Cais) { cais.ExperianConsumerDataId = id; var caisId = DB.ExecuteScalar <long>( con, "SaveExperianConsumerDataCais", CommandSpecies.StoredProcedure, DB.CreateTableParameter <ExperianConsumerDataCais>("Tbl", new List <ExperianConsumerDataCais> { cais }) ); if (cais.CardHistories.Any()) { foreach (var card in cais.CardHistories) { card.ExperianConsumerDataCaisId = caisId; } DB.ExecuteNonQuery( con, "SaveExperianConsumerDataCaisCardHistory", CommandSpecies.StoredProcedure, DB.CreateTableParameter <ExperianConsumerDataCaisCardHistory>("Tbl", cais.CardHistories) ); } // if if (cais.AccountBalances.Any()) { foreach (var account in cais.AccountBalances) { account.ExperianConsumerDataCaisId = caisId; } DB.ExecuteNonQuery( con, "SaveExperianConsumerDataCaisBalance", CommandSpecies.StoredProcedure, DB.CreateTableParameter <ExperianConsumerDataCaisBalance>("Tbl", cais.AccountBalances) ); } // if } // for each foreach (var applicant in data.Applicants) { applicant.ExperianConsumerDataId = id; } DB.ExecuteNonQuery( con, "SaveExperianConsumerDataApplicant", CommandSpecies.StoredProcedure, DB.CreateTableParameter <ExperianConsumerDataApplicant>("Tbl", data.Applicants) ); foreach (var location in data.Locations) { location.ExperianConsumerDataId = id; } DB.ExecuteNonQuery( con, "SaveExperianConsumerDataLocation", CommandSpecies.StoredProcedure, DB.CreateTableParameter <ExperianConsumerDataLocation>("Tbl", data.Locations) ); foreach (var residency in data.Residencies) { residency.ExperianConsumerDataId = id; } DB.ExecuteNonQuery( con, "SaveExperianConsumerDataResidency", CommandSpecies.StoredProcedure, DB.CreateTableParameter <ExperianConsumerDataResidency>("Tbl", data.Residencies) ); foreach (var noc in data.Nocs) { noc.ExperianConsumerDataId = id; } DB.ExecuteNonQuery( con, "SaveExperianConsumerDataNoc", CommandSpecies.StoredProcedure, DB.CreateTableParameter <ExperianConsumerDataNoc>("Tbl", data.Nocs) ); } catch (Exception ex) { Log.Warn(ex, "Failed to save experian consumer"); con.Rollback(); return(null); } // try con.Commit(); Log.Info("Saving Experian consumer data into DB for service log ID {0} complete.", this.serviceLogID); return(data); } // Save
public ExperianConsumerModel GenerateConsumerModel(ExperianConsumerData eInfo, Customer customer, Director director, long?logId, string name) { var model = new ExperianConsumerModel { ErrorList = new List <string>(), Id = director != null ? director.Id : customer.Id }; if (eInfo == null || eInfo.ServiceLogId == null) { model.HasExperianError = true; model.ErrorList.Add("No data"); model.ApplicantFullNameAge = name; return(model); } var scorePosColor = GetScorePositionAndColor(eInfo.BureauScore ?? 0, ConsumerScoreMax, ConsumerScoreMin); model.ServiceLogId = eInfo.ServiceLogId; model.HasExperianError = eInfo.HasExperianError; model.ModelType = "Consumer"; model.CheckDate = eInfo.InsertDate.ToShortDateString(); model.IsDataRelevant = (DateTime.UtcNow - eInfo.InsertDate).TotalDays < CurrentValues.Instance.UpdateConsumerDataPeriodDays; model.CheckValidity = eInfo.InsertDate.AddDays(CurrentValues.Instance.UpdateConsumerDataPeriodDays).ToShortDateString(); model.BorrowerType = "Consumer"; model.Score = eInfo.BureauScore; model.Odds = Math.Pow(2, (((double)(eInfo.BureauScore ?? 0)) - 600) / 80); model.ScorePosition = scorePosColor.Position; model.ScoreAlign = scorePosColor.Align; model.ScoreValuePosition = scorePosColor.ValPosition; model.ScoreColor = scorePosColor.Color; model.Applicant = eInfo.Applicants.FirstOrDefault(); model.Location = eInfo.Locations.FirstOrDefault(); model.TotalAccountBalances = eInfo.TotalAccountBalances; model.TotalMonthlyRepayments = eInfo.CreditCommitmentsRevolving + eInfo.CreditCommitmentsNonRevolving + eInfo.MortgagePayments; model.CreditCardBalances = eInfo.CreditCardBalances; if (model.Applicant != null) { var days = model.Applicant.DateOfBirth.HasValue ? (DateTime.UtcNow - model.Applicant.DateOfBirth.Value).TotalDays : 0; var age = (int)Math.Round(days / 365); model.ApplicantFullNameAge = string.Format("{0} {1} {2} {3} {4} {5}", model.Applicant.Title, model.Applicant.Forename, model.Applicant.MiddleName, model.Applicant.Surname, model.Applicant.Suffix, age); } if (eInfo.Applicants.Count > 1) { Errors.Add("More than one applicant specified"); } if (eInfo.Locations.Count > 1) { Errors.Add("More than one locations specified"); } model.CII = eInfo.CII; if (!string.IsNullOrEmpty(eInfo.Error)) { model.ErrorList.AddRange(eInfo.Error.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)); } model.NumberOfAccounts = 0; model.NumberOfAccounts3M = 0; model.WorstCurrentStatus = AccountStatusDictionary.GetAccountStatus(eInfo.WorstCurrentStatus).LongDescription; model.WorstCurrentStatus3M = AccountStatusDictionary.GetAccountStatus(eInfo.WorstHistoricalStatus).LongDescription; model.EnquiriesLast3M = eInfo.EnquiriesLast3Months; model.EnquiriesLast6M = eInfo.EnquiriesLast6Months; model.NumberOfDefaults = 0; model.NumberOfCCOverLimit = eInfo.CreditCardOverLimit; model.CreditCardUtilization = eInfo.CreditLimitUtilisation; model.NOCsOnCCJ = eInfo.NOCsOnCCJ; model.NOCsOnCAIS = eInfo.NOCsOnCAIS; model.NumberOfCCJs = eInfo.NumCCJs; model.TotalCCJValueStr = GetClass1String(eInfo.TotalCCJValue1); model.TotalCCJValue = (eInfo.TotalCCJValue1.HasValue && eInfo.TotalCCJValue1.Value > 0) ? eInfo.TotalCCJValue1.Value * 100 : (int?)null; model.SatisfiedJudgements = eInfo.SatisfiedJudgement; model.AgeOfMostRecentCCJ = eInfo.CCJLast2Years; model.CAISSpecialInstructionFlag = eInfo.CAISSpecialInstructionFlag; model.ConsumerAccountsOverview = new ConsumerAccountsOverview(); var accList = new List <AccountInfo>(); var years = new List <AccountDisplayedYear>(); var quarters = new List <AccountDisplayedQuarter>(); var monthsList = new List <string>(); var displayedMonths = new List <DateTime>(); var mthStart = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1); for (int i = 1 - StatusHistoryMonths; i <= 0; i++) { var date = mthStart.AddMonths(i); displayedMonths.Add(date); var monthYear = date.Year; var monthQ = (date.Month - 1) / 3 + 1; var monthQStr = string.Format("Q{0}", monthQ); var month = date.Month; if ((years.Count > 0) && (years[years.Count - 1].Year == monthYear)) { years[years.Count - 1].Span++; } else { years.Add(new AccountDisplayedYear { Year = date.Year, Span = 1 }); } if ((quarters.Count > 0) && (quarters[quarters.Count - 1].Quarter == monthQStr)) { quarters[quarters.Count - 1].Span++; } else { quarters.Add(new AccountDisplayedQuarter { Quarter = monthQStr, Span = 1 }); } monthsList.Add(month.ToString("00")); } var numberOfAccounts = 0; var numberOfAcc3M = 0; // 0 - CC, 1 - Mortgage, 2 - PL, 3 - other var accounts = new[] { 0, 0, 0, 0 }; var worstStatus = new[] { "0", "0", "0", "0" }; var limits = new[] { 0, 0, 0, 0 }; var balances = new[] { 0, 0, 0, 0 }; int numberOfDefaults = 0; int defaultAmount = 0; int numberOfLates = 0; string lateStatus = "0"; foreach (var caisDetails in eInfo.Cais) { var accountInfo = new AccountInfo(); //check which acccount type show Variables?var = null; if (caisDetails.MatchTo.HasValue) { var = map[caisDetails.MatchTo.Value]; var isShowThisFinancinalAccount = CurrentValues.Instance[var.Value]; if (isShowThisFinancinalAccount == null || !isShowThisFinancinalAccount) { continue; } accountInfo.MatchTo = var.DescriptionAttr(); } accountInfo.OpenDate = caisDetails.CAISAccStartDate; accountInfo.Account = AccountTypeDictionary.GetAccountType(caisDetails.AccountType); var accStatus = caisDetails.AccountStatus; string dateType; accountInfo.AccountStatus = GetAccountStatusString(accStatus, out dateType); accountInfo.DateType = dateType; if (accStatus == DefaultCaisStatusName && var == Variables.FinancialAccounts_MainApplicant) { numberOfDefaults++; defaultAmount += caisDetails.CurrentDefBalance ?? 0; } var accType = GetAccountType(caisDetails.AccountType); if (accType < 0) { continue; } if (((accStatus == DelinquentCaisStatusName) || (accStatus == ActiveCaisStatusName)) && var == Variables.FinancialAccounts_MainApplicant) { accounts[accType]++; var ws = caisDetails.WorstStatus; var status = AccountStatusDictionary.GetAccountStatus(ws); worstStatus[accType] = GetWorstStatus(worstStatus[accType], ws); limits[accType] += caisDetails.CreditLimit ?? 0; balances[accType] += caisDetails.Balance ?? 0; numberOfAccounts++; if ((accountInfo.OpenDate.HasValue) && (accountInfo.OpenDate.Value >= DateTime.Today.AddMonths(-3))) { numberOfAcc3M++; } if (status.IsLate) { numberOfLates++; lateStatus = GetWorstStatus(lateStatus, ws); } } string statuses = caisDetails.AccountStatusCodes ?? string.Empty; var sList = new List <AccountStatus>(); for (int i = 0; i < StatusHistoryMonths; i++) { sList.Add(new AccountStatus { Status = "", StatusColor = "white" }); } accountInfo.SettlementDate = caisDetails.SettlementDate ?? caisDetails.LastUpdatedDate; if (accountInfo.SettlementDate.HasValue) { var histStart = new DateTime(accountInfo.SettlementDate.Value.Year, accountInfo.SettlementDate.Value.Month, 1); for (int i = 0; i < caisDetails.AccountStatusCodes.Length; i++) { var histDate = histStart.AddMonths(-i); string indicator = (statuses.Length > i) ? statuses.Substring(i, 1) : string.Empty; var idx = displayedMonths.IndexOf(histDate); if (idx >= 0) { var status = AccountStatusDictionary.GetAccountStatus(indicator); sList[idx].Status = status.ShortDescription; sList[idx].StatusColor = status.Color; } } } accountInfo.LatestStatuses = sList.ToArray(); accountInfo.TermAndfreq = GetRepaymentPeriodString(caisDetails.RepaymentPeriod); accountInfo.Limit = caisDetails.CreditLimit; accountInfo.AccBalance = caisDetails.Balance; accountInfo.CurrentDefBalance = caisDetails.CurrentDefBalance; foreach (var cardHistory in caisDetails.CardHistories) { accountInfo.CashWithdrawals = string.Format("{0} ({1})", cardHistory.NumCashAdvances, cardHistory.CashAdvanceAmount); accountInfo.MinimumPayment = cardHistory.PaymentCode ?? string.Empty; break; } accountInfo.Years = years.ToArray(); accountInfo.Quarters = quarters.ToArray(); accountInfo.MonthsDisplayed = monthsList.ToArray(); if (caisDetails.AccountBalances.Any(x => x.AccountBalance.HasValue)) { accountInfo.BalanceHistory = caisDetails.AccountBalances .Where(x => x.AccountBalance.HasValue) .Select(x => x.AccountBalance.Value.ToString(CultureInfo.InvariantCulture)) .Reverse() .Aggregate((a, b) => a + "," + b); } accList.Add(accountInfo); } model.NumberOfAccounts = numberOfAccounts; model.NumberOfAccounts3M = numberOfAcc3M; model.NumberOfDefaults = numberOfDefaults; model.NumberOfLates = numberOfLates; model.LateStatus = AccountStatusDictionary.GetAccountStatus(lateStatus).LongDescription; model.DefaultAmount = defaultAmount; Log.DebugFormat("Accounts List length: {0}", accList.Count); accList.Sort(new AccountInfoComparer()); model.AccountsInformation = accList.ToArray(); model.ConsumerAccountsOverview.OpenAccounts_CC = accounts[0]; model.ConsumerAccountsOverview.OpenAccounts_Mtg = accounts[1]; model.ConsumerAccountsOverview.OpenAccounts_PL = accounts[2]; model.ConsumerAccountsOverview.OpenAccounts_Other = accounts[3]; model.ConsumerAccountsOverview.OpenAccounts_Total = accounts.Sum(); model.ConsumerAccountsOverview.WorstArrears_CC = AccountStatusDictionary.GetAccountStatus(worstStatus[0]).LongDescription; model.ConsumerAccountsOverview.WorstArrears_Mtg = AccountStatusDictionary.GetAccountStatus(worstStatus[1]).LongDescription; model.ConsumerAccountsOverview.WorstArrears_PL = AccountStatusDictionary.GetAccountStatus(worstStatus[2]).LongDescription; model.ConsumerAccountsOverview.WorstArrears_Other = AccountStatusDictionary.GetAccountStatus(worstStatus[3]).LongDescription; model.ConsumerAccountsOverview.WorstArrears_Total = AccountStatusDictionary.GetAccountStatus(GetWorstStatus(worstStatus)).LongDescription; model.ConsumerAccountsOverview.TotalCurLimits_CC = limits[0]; model.ConsumerAccountsOverview.TotalCurLimits_Mtg = limits[1]; model.ConsumerAccountsOverview.TotalCurLimits_PL = limits[2]; model.ConsumerAccountsOverview.TotalCurLimits_Other = limits[3]; model.ConsumerAccountsOverview.TotalCurLimits_Total = limits.Sum(); model.ConsumerAccountsOverview.Balance_CC = balances[0]; model.ConsumerAccountsOverview.Balance_Mtg = balances[1]; model.ConsumerAccountsOverview.Balance_PL = balances[2]; model.ConsumerAccountsOverview.Balance_Other = balances[3]; model.ConsumerAccountsOverview.Balance_Total = balances.Sum(); model.NOCs = eInfo.Nocs.Select(nocDetails => new NOCInfo { NOCReference = nocDetails.Reference, NOCLines = nocDetails.TextLine }).ToArray(); Log.DebugFormat("Error List: {0}", PrintErrorList(model.ErrorList)); using (this.tc.AddStep("GetConsumerHistoryModel time taken")) { model.ConsumerHistory = GetConsumerHistoryModel(customer, director); } return(model); }
} // constructor public ExperianConsumerData GetConsumerInfo( string firstName, string surname, string gender, DateTime?birthDate, InputLocationDetailsUKLocation ukLocation, InputLocationDetailsMultiLineLocation mlLocation, string applicationType, int customerId, int?directorId, bool checkInCacheOnly, bool isDirector, bool forceCheck ) { try { mlLocation = ShiftLocation(mlLocation); string postcode = GetPostcode(ukLocation, mlLocation); Log.InfoFormat("GetConsumerInfo: checking cache for {2} id {3} firstName: {0}, surname: {1} birthday: {4}, postcode: {5} gender {6} apptype: {7} \n {8} {9}", firstName, surname, isDirector ? "director" : "customer", isDirector ? directorId : customerId, birthDate, postcode, gender, applicationType, JsonConvert.SerializeObject(ukLocation, new JsonSerializerSettings { Formatting = Formatting.Indented }), JsonConvert.SerializeObject(mlLocation, new JsonSerializerSettings { Formatting = Formatting.Indented })); ExperianConsumerData cachedResponse = ObjectFactory.GetInstance <IEzServiceAccessor>() .LoadExperianConsumer(1, customerId, isDirector ? directorId : (int?)null, null); // debug mode if (surname.StartsWith("TestSurnameDebugMode") || surname == "TestSurnameOne" || surname == "TestSurnameFile") { //if (force check) or (no data in cache) or (data expired and not cache only mode) if (forceCheck || cachedResponse.ServiceLogId == null || (!checkInCacheOnly && cachedResponse.ServiceLogId != null && !CacheNotExpired(cachedResponse.InsertDate))) { var data = ConsumerDebugResult(surname, customerId); return(data); } return(cachedResponse); } // if test if (!forceCheck) { if (cachedResponse.ServiceLogId != null) { if (CacheNotExpired(cachedResponse.InsertDate) || checkInCacheOnly) { return(cachedResponse); } } else if (checkInCacheOnly) { return(null); } } // if return(GetServiceOutput(gender, ukLocation, mlLocation, applicationType, customerId, directorId, firstName, surname, birthDate, postcode)); } catch (Exception ex) { Log.Error(ex); return(new ExperianConsumerData { HasExperianError = true, Error = "Exception: " + ex.Message }); } // try } // GetConsumerInfo
private ExperianConsumerData BuildMain(OutputRoot outputRoot, int?customerId, int?directorId, DateTime?insertDate, long serviceLogId) { var data = new ExperianConsumerData { Applicants = new List <ExperianConsumerDataApplicant>(), Cais = new List <ExperianConsumerDataCais>(), ServiceLogId = serviceLogId, CustomerId = customerId, DirectorId = directorId, InsertDate = insertDate.HasValue ? insertDate.Value : DateTime.UtcNow }; if (outputRoot == null || outputRoot.Output == null || outputRoot.Output.Error != null) { if (outputRoot != null && outputRoot.Output != null) { Errors = string.Format("Error from service with code: {0}, severity: {1}, message: {2} \n", outputRoot.Output.Error.ErrorCode, outputRoot.Output.Error.Severity, outputRoot.Output.Error.Message); } else { Errors = "OutputRoot is null"; } data.HasExperianError = true; data.Error = Errors; return(data); } TryRead(() => { foreach (var applicant in outputRoot.Output.Applicant) { TryRead(() => { var app = new ExperianConsumerDataApplicant(); TryRead(() => app.ApplicantIdentifier = Convert.ToInt32(applicant.ApplicantIdentifier), "ApplicantIdentifier"); TryRead(() => app.Title = applicant.Name.Title, "Title"); TryRead(() => app.Forename = applicant.Name.Forename, "Forename"); TryRead(() => app.MiddleName = applicant.Name.MiddleName, "MiddleName"); TryRead(() => app.Surname = applicant.Name.Surname, "Surname"); TryRead(() => app.Suffix = applicant.Name.Suffix, "Suffix"); TryRead(() => app.DateOfBirth = new DateTime( int.Parse(applicant.DateOfBirth.CCYY.ToString(CultureInfo.InvariantCulture)), int.Parse(applicant.DateOfBirth.MM.ToString(CultureInfo.InvariantCulture)), int.Parse(applicant.DateOfBirth.DD.ToString(CultureInfo.InvariantCulture)), 0, 0, 0, DateTimeKind.Utc), "DateOfBirth", false); TryRead(() => app.Gender = applicant.Gender, "Gender"); data.Applicants.Add(app); }, "Applicant"); } }, "Applicants", false); TryRead(() => data.BureauScore = Convert.ToInt32(outputRoot.Output.ConsumerSummary.PremiumValueData.Scoring.E5S051), "BureauScore"); TryRead(() => data.CreditCardBalances = Convert.ToInt32(outputRoot.Output.ConsumerSummary.PremiumValueData.AdditDelphiBlocks.Utilisationblock.SPA04), "CreditCardBalances"); TryRead(() => data.ActiveCaisBalanceExcMortgages = Convert.ToInt32(outputRoot.Output.ConsumerSummary.PremiumValueData.AdditDelphiBlocks.Utilisationblock.SPA02), "ActiveCaisBalanceExcMortgages"); TryRead(() => data.NumCreditCards = Convert.ToInt32(outputRoot.Output.ConsumerSummary.PremiumValueData.AdditDelphiBlocks.APACSCCBehavrlData.NOMPMNPRL3M), "NumCreditCards"); TryRead(() => data.CreditLimitUtilisation = Convert.ToInt32(outputRoot.Output.ConsumerSummary.PremiumValueData.AdditDelphiBlocks.APACSCCBehavrlData.CLUNPRL1M), "CreditLimitUtilisation"); TryRead(() => data.CreditCardOverLimit = Convert.ToInt32(outputRoot.Output.ConsumerSummary.PremiumValueData.AdditDelphiBlocks.Utilisationblock.SPF131), "CreditCardOverLimit"); TryRead(() => data.PersonalLoanStatus = outputRoot.Output.ConsumerSummary.Summary.CAIS.NDHAC05, "PersonalLoanStatus"); TryRead(() => data.WorstStatus = outputRoot.Output.ConsumerSummary.Summary.CAIS.NDHAC09, "WorstStatus"); TryRead(() => data.WorstCurrentStatus = outputRoot.Output.FullConsumerData.ConsumerDataSummary.SummaryDetails.CAISSummary.WorstCurrent, "WorstCurrentStatus"); TryRead(() => data.WorstHistoricalStatus = outputRoot.Output.FullConsumerData.ConsumerDataSummary.SummaryDetails.CAISSummary.WorstHistorical, "WorstHistoricalStatus"); TryRead(() => data.TotalAccountBalances = Convert.ToInt32(outputRoot.Output.ConsumerSummary.Summary.CAIS.E1B10), "TotalAccountBalances"); TryRead(() => data.NumAccounts = Convert.ToInt32(outputRoot.Output.ConsumerSummary.Summary.CAIS.E1B01), "NumAccounts"); TryRead(() => data.NumCCJs = Convert.ToInt32(outputRoot.Output.ConsumerSummary.Summary.PublicInfo.E1A01), "NumCCJs"); TryRead(() => data.CCJLast2Years = Convert.ToInt32(outputRoot.Output.ConsumerSummary.Summary.PublicInfo.E1A03), "CCJLast2Years"); TryRead(() => data.TotalCCJValue1 = Convert.ToInt32(outputRoot.Output.ConsumerSummary.Summary.PublicInfo.E1A02), "TotalCCJValue1"); TryRead(() => data.TotalCCJValue2 = Convert.ToInt32(outputRoot.Output.ConsumerSummary.Summary.PublicInfo.E2G02), "TotalCCJValue2"); TryRead(() => data.EnquiriesLast6Months = Convert.ToInt32(outputRoot.Output.ConsumerSummary.Summary.CAPS.E1E02), "EnquiriesLast6Months"); TryRead(() => data.EnquiriesLast3Months = Convert.ToInt32(outputRoot.Output.ConsumerSummary.Summary.CAPS.E1E01), "EnquiriesLast3Months"); TryRead(() => data.MortgageBalance = Convert.ToInt32(outputRoot.Output.ConsumerSummary.Summary.CAIS.E1B11), "MortgageBalance"); TryRead(() => { if (null != outputRoot.Output.ConsumerSummary.PremiumValueData.AgeDoB.EA4S04) { data.CaisDOB = new DateTime(1900 + outputRoot.Output.ConsumerSummary.PremiumValueData.AgeDoB.EA4S04.YY, outputRoot.Output.ConsumerSummary.PremiumValueData.AgeDoB.EA4S04.MM, outputRoot.Output.ConsumerSummary.PremiumValueData.AgeDoB.EA4S04.DD, 0, 0, 0, DateTimeKind.Utc); } else if (null != outputRoot.Output.ConsumerSummary.PremiumValueData.AgeDoB.NDDOB) { data.CaisDOB = new DateTime(1900 + outputRoot.Output.ConsumerSummary.PremiumValueData.AgeDoB.NDDOB.YY, outputRoot.Output.ConsumerSummary.PremiumValueData.AgeDoB.NDDOB.MM, outputRoot.Output.ConsumerSummary.PremiumValueData.AgeDoB.NDDOB.DD, 0, 0, 0, DateTimeKind.Utc); } }, "CaisDOB", false); TryRead(() => data.CreditCommitmentsRevolving = Convert.ToInt32(outputRoot.Output.ConsumerSummary.PremiumValueData.AdditDelphiBlocks.Utilisationblock.SPH39), "CreditCommitmentsRevolving"); TryRead(() => data.CreditCommitmentsNonRevolving = Convert.ToInt32(outputRoot.Output.ConsumerSummary.PremiumValueData.AdditDelphiBlocks.Utilisationblock.SPH40), "CreditCommitmentsNonRevolving"); TryRead(() => data.MortgagePayments = Convert.ToInt32(outputRoot.Output.ConsumerSummary.PremiumValueData.AdditDelphiBlocks.Utilisationblock.SPH41), "MortgagePayments"); TryRead(() => data.Bankruptcy = (outputRoot.Output.ConsumerSummary.Summary.PublicInfo.EA1C01 == "Y"), "Bankruptcy"); TryRead(() => data.OtherBankruptcy = (outputRoot.Output.ConsumerSummary.Summary.PublicInfo.EA2I01 == "Y"), "OtherBankruptcy"); TryRead(() => data.CAISDefaults = Convert.ToInt32(outputRoot.Output.ConsumerSummary.Summary.CAIS.E1A05), "CAISDefaults"); TryRead(() => data.BadDebt = outputRoot.Output.ConsumerSummary.Summary.CAIS.E1B08, "BadDebt"); TryRead(() => data.NOCsOnCCJ = (outputRoot.Output.ConsumerSummary.Summary.NOC.EA4Q02 == "Y"), "NOCsOnCCJ"); TryRead(() => data.NOCsOnCAIS = (outputRoot.Output.ConsumerSummary.Summary.NOC.EA4Q04 == "Y"), "NOCsOnCAIS"); TryRead(() => data.NOCAndNOD = (outputRoot.Output.ConsumerSummary.Summary.NOC.EA4Q05 == "Y"), "NOCAndNOD"); TryRead(() => data.SatisfiedJudgement = (outputRoot.Output.ConsumerSummary.Summary.PublicInfo.EA4Q06 == "Y"), "SatisfiedJudgement"); TryRead(() => data.CII = Convert.ToInt32(outputRoot.Output.ConsumerSummary.PremiumValueData.CII.NDSPCII), "CII"); TryRead(() => data.CAISSpecialInstructionFlag = outputRoot.Output.ConsumerSummary.Summary.CAIS.EA1F04, "CAISSpecialInstructionFlag"); return(data); }
} // ToInputData private void FillNumOfLateConsumerAccounts(ExperianConsumerData oData) { this.numOfLateConsumerAccounts = 0; if ((oData == null) || (oData.Cais == null) || (oData.Cais.Count < 1)) { return; } List <ExperianConsumerDataCais> lst = oData.Cais.Where(cais => cais.LastUpdatedDate.HasValue && (cais.MatchTo == 1) && !string.IsNullOrWhiteSpace(cais.AccountStatusCodes) && (cais.LastUpdatedDate.Value <= Trail.InputData.DataAsOf) && (MiscUtils.CountMonthsBetween(cais.LastUpdatedDate.Value, Trail.InputData.DataAsOf) < 1) ) .ToList(); Log.Debug("Fill num of lates: {0} found.", Grammar.Number(lst.Count, "relevant account")); foreach (var cais in lst) { Log.Debug( "Fill num of lates cais id {0}: last updated = '{1}', match to = '{2}', statues = '{3}', now = {4}", cais.Id, cais.LastUpdatedDate.HasValue ? cais.LastUpdatedDate.Value.ToString("d/MMM/yyyy H:mm:ss", CultureInfo.InvariantCulture) : "-- null --", cais.MatchTo.HasValue ? cais.MatchTo.Value.ToString(CultureInfo.InvariantCulture) : "-- null --", cais.AccountStatusCodes, Trail.InputData.DataAsOf.ToString("d/MMM/yyyy H:mm:ss", CultureInfo.InvariantCulture) ); int nMonthCount = Math.Min(Trail.MyInputData.Reject_LateLastMonthsNum, cais.AccountStatusCodes.Length); Log.Debug( "Fill num of lates cais id {0}: month count is {1}, status count is {2}.", cais.Id, nMonthCount, cais.AccountStatusCodes.Length ); for (int i = 1; i <= nMonthCount; i++) { char status = cais.AccountStatusCodes[cais.AccountStatusCodes.Length - i]; Log.Debug("Fill num of lates cais id {0}: status[{1}] = '{2}'.", cais.Id, i, status); if (!lateStatuses.Contains(status)) { Log.Debug("Fill num of lates cais id {0} ain't no late: not a late status.", cais.Id); continue; } // if int nStatus = 0; int.TryParse(status.ToString(CultureInfo.InvariantCulture), out nStatus); Log.Debug("Fill num of lates cais id {0}: status[{1}] = '{2}'.", cais.Id, i, nStatus); if (nStatus > Trail.MyInputData.RejectionLastValidLate) { Log.Debug("Fill num of lates cais id {0} is late.", cais.Id); this.numOfLateConsumerAccounts++; break; } // if } // for i } // for each account } // FillLateConsumerAccounts