Exemplo n.º 1
0
        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
Exemplo n.º 2
0
        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
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        }         // 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);
        }
Exemplo n.º 7
0
        }         // 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