Beispiel #1
0
        }         // Parse

        public CallCredit Save(CallCredit data)
        {
            if (data == null)
            {
                return(null);
            }


            Log.Info("Saving CallCredit data into DB...");

            ConnectionWrapper con = DB.GetPersistent();

            con.BeginTransaction();

            try {
                var arg = DB.CreateTableParameter <CallCredit>("Tbl", new List <CallCredit> {
                    data
                });


                //Log.Debug("\n\n\n\n\n\n\n\n\n\nSaveCallCredit - begin: {0}\n\n\n\n\n\n\n\n\n\n", data.Error.Length);

                long CallCreditID = DB.ExecuteScalar <long>(con, "SaveCallCredit", CommandSpecies.StoredProcedure, arg);

                //Log.Debug("\n\n\n\n\n\n\n\n\n\nSaveCallCredit - end, new id = {0}\n\n\n\n\n\n\n\n\n\n", CallCreditID);

                if (data.ApplicantData.Any())
                {
                    SaveCallCreditData(data.ApplicantData, CallCreditID, con);
                }

                if (data.Amendments.Any())
                {
                    SaveCallCreditAmendments(data.Amendments, CallCreditID, con);
                }

                if (data.ApplicantAddresses.Any())
                {
                    SaveCallCreditApplicantAddresses(data.ApplicantAddresses, CallCreditID, con);
                }

                if (data.ApplicantNames.Any())
                {
                    SaveCallCreditApplicantNames(data.ApplicantNames, CallCreditID, con);
                }

                if (data.Email.Any())
                {
                    SaveCallCreditEmail(data.Email, CallCreditID, con);
                }

                if (data.Telephone.Any())
                {
                    SaveCallCreditTelephone(data.Telephone, CallCreditID, con);
                }
            } catch (Exception ex) {
                Log.Warn(ex, "Failed to save CallCredit data");
                con.Rollback();
                return(null);
            }

            con.Commit();
            Log.Info("Saving CallCredit data into DB complete");
            return(data);
        }         // Save
        public CallCredit Build(CT_SearchResult response, int?customerId, int?directorId, DateTime?insertDate, long serviceLogId)
        {
            /*Console.WriteLine(response.token);
             * return null;*/


            var result = new CallCredit {
                ApplicantData      = new List <CallCreditData>(),
                Amendments         = new List <CallCreditAmendments>(),
                ApplicantAddresses = new List <CallCreditApplicantAddresses>(),
                ApplicantNames     = new List <CallCreditApplicantNames>(),
                Email     = new List <CallCreditEmail>(),
                Telephone = new List <CallCreditTelephone>(),

                MP_ServiceLogId = serviceLogId,
                CustomerId      = customerId,
                DirectorId      = directorId,
                InsertDate      = insertDate ?? DateTime.UtcNow
            };


            if (response == null || response.creditreport == null)
            {
                result.HasCallCreditError = true;
                result.Error = "Creditreport is null";
                return(result);
            }

            //report attributes
            TryRead(() => result.LinkType       = response.creditreport.linktype, "report link type", false);
            TryRead(() => result.ReportSearchID = response.creditreport.searchid, "report search ID", false);

            //response set
            TryRead(() => result.PayLoadData   = XSerializer.Serialize(response.payload), "Client's own data", false);
            TryRead(() => result.YourReference = response.yourreference, "User reference as part of search definition", false);
            TryRead(() => result.Token         = response.token, "Client's own data", false);
            //request details as part of response
            TryRead(() => result.SchemaVersionCR   = response.creditrequest.schemaversion, "The version of the schema for credit request", false);
            TryRead(() => result.DataSetsCR        = (int)response.creditrequest.datasets, "Search datasets required for credit request, values 0 to 511", false);
            TryRead(() => result.Score             = Convert.ToBoolean(response.creditrequest.score), "Score request check");
            TryRead(() => result.Purpose           = response.creditrequest.purpose, "Credit request search purpose");
            TryRead(() => result.CreditType        = response.creditrequest.credittype, "Credit type");
            TryRead(() => result.BalorLim          = (int)response.creditrequest.balorlim, "Balance or credit limit applied for", false);
            TryRead(() => result.Term              = response.creditrequest.term, "Term of loan applied for", false);
            TryRead(() => result.Transient         = Convert.ToBoolean(response.creditrequest.transient), "financial (transient) association check", false);
            TryRead(() => result.AutoSearch        = Convert.ToBoolean(response.creditrequest.autosearch), "auto-searching of undeclared addresses check", false);
            TryRead(() => result.AutoSearchMaximum = (int)response.creditrequest.autosearchmaximum, "Maximum number of addresses to auto-search", false);
            //jobdetails
            TryRead(() => result.UniqueSearchID = response.jobdetails.searchid, "Unique identifier for Credit Reports", false);
            TryRead(() => result.CastInfo       = response.jobdetails.cast, "CastInfo - Callcredit System Specific Information", false);
            TryRead(() => result.PSTV           = response.jobdetails.pstv, "PSTV - Callcredit System Specific Information", false);
            TryRead(() => result.LS             = response.jobdetails.ls, "LS - Callcredit System Specific Information", false);
            result.SearchDate = TryReadDate(() => response.jobdetails.searchdate, "Date and time that Search was carried out ", false);
            //linkrequest
            TryRead(() => result.SchemaVersionLR = response.linkrequest.schemaversion, "The version of the schema for link request", false);
            TryRead(() => result.DataSetsLR      = (int)response.linkrequest.datasets, "Search datasets required for link request, values 0 to 511", false);
            TryRead(() => result.OrigSrchLRID    = response.linkrequest.origsrchid, "Original report searchid", false);
            TryRead(() => result.NavLinkID       = response.linkrequest.navlinkid, "Link navigation identifier of the link to be followed (either Address or Associate Link)", false);
            //subsequent equest
            TryRead(() => result.SchemaVersionSR = response.secondaryrequest.schemaversion, "The version of the schema for subsequent request", false);
            TryRead(() => result.DataSetsLR      = (int)response.secondaryrequest.datasets, "Search datasets required for subsequent request, values 0 to 511", false);
            TryRead(() => result.OrigSrchSRID    = response.secondaryrequest.origsrchid, "Original report searchid", false);

            //request applicant details as part of response
            result.Dob = TryReadDate(() => response.creditrequest.applicant[0].dob, "Applicant's date Of birth");
            TryRead(() => result.Hho      = Convert.ToBoolean(response.creditrequest.applicant[0].hho), "Household override check", false);
            TryRead(() => result.TpOptOut = Convert.ToBoolean(response.creditrequest.applicant[0].tpoptout), "Third party data opt out check");

            //applicant demographics
            //person
            TryRead(() => result.CustomerStatus  = response.creditrequest.applicant[0].applicantdemographics.person.customerstatus, "Customer Applicant Status Code ", false);
            TryRead(() => result.MaritalStatus   = response.creditrequest.applicant[0].applicantdemographics.person.maritalstatus, "Applicant's Marital Status Code", false);
            TryRead(() => result.TotalDependents = (int)response.creditrequest.applicant[0].applicantdemographics.person.totaldependents, "Total number of dependent children", false);
            TryRead(() => result.LanguageVerbal  = response.creditrequest.applicant[0].applicantdemographics.person.language, "Language Code", false);
            //Identity
            TryRead(() => result.Type1 = response.creditrequest.applicant[0].applicantdemographics.person.identity[0].type, "Identity Type Code 1", false);
            TryRead(() => result.Type2 = response.creditrequest.applicant[0].applicantdemographics.person.identity[1].type, "Identity Type Code 2", false);
            TryRead(() => result.Type3 = response.creditrequest.applicant[0].applicantdemographics.person.identity[2].type, "Identity Type Code 3", false);
            TryRead(() => result.Type4 = response.creditrequest.applicant[0].applicantdemographics.person.identity[3].type, "Identity Type Code 4", false);
            //Accommodation
            TryRead(() => result.AccommodationType = response.creditrequest.applicant[0].applicantdemographics.accommodation.type, "Accommodation Type Code", false);
            TryRead(() => result.PropertyValue     = (int)response.creditrequest.applicant[0].applicantdemographics.accommodation.propertyvalue, "Estimate of how much the property is worth", false);
            TryRead(() => result.MortgageBalance   = (int)response.creditrequest.applicant[0].applicantdemographics.accommodation.mortgagebalance, "The total amount of the mortgage still to be repaid", false);
            TryRead(() => result.MonthlyRental     = (int)response.creditrequest.applicant[0].applicantdemographics.accommodation.monthlyrental, "The price that the applicant pays the home's owner for using the home", false);
            TryRead(() => result.ResidentialStatus = response.creditrequest.applicant[0].applicantdemographics.accommodation.residentialstatus, "Residential Status Code", false);
            //employment
            TryRead(() => result.Occupation       = response.creditrequest.applicant[0].applicantdemographics.employment.occupation, "Occupation Code", false);
            TryRead(() => result.EmploymentStatus = response.creditrequest.applicant[0].applicantdemographics.employment.employmentstatus, "Employment Status Code", false);
            result.ExpiryDate = TryReadDate(() => response.creditrequest.applicant[0].applicantdemographics.employment.expirydate, "Employment Expiry Data - dependent on the Employment Status Code", false);
            TryRead(() => result.EmploymentRecency     = response.creditrequest.applicant[0].applicantdemographics.employment.employmentrecency, "Employment Recency Code", false);
            TryRead(() => result.EmployerCategory      = response.creditrequest.applicant[0].applicantdemographics.employment.employercategory, "Employer Category Code", false);
            TryRead(() => result.TimeAtCurrentEmployer = response.creditrequest.applicant[0].applicantdemographics.employment.timeatcurrentemployer, "Total number of months with the current employer", false);
            //account
            TryRead(() => result.SortCode      = response.creditrequest.applicant[0].applicantdemographics.account.sortcode, "Bank sort code of main banking relationship", false);
            TryRead(() => result.AccountNumber = response.creditrequest.applicant[0].applicantdemographics.account.accountnumber, "Account number of main banking relationship", false);
            TryRead(() => result.TimeAtBank    = response.creditrequest.applicant[0].applicantdemographics.account.timeatbank, "Total number of months with the current bank", false);
            TryRead(() => result.PaymentMethod = response.creditrequest.applicant[0].applicantdemographics.account.paymentmethod, "Account's Payment Method Code", false);
            TryRead(() => result.FinanceType   = response.creditrequest.applicant[0].applicantdemographics.account.financetype, "Finance/Non Finance Type Code", false);
            //expenditure
            TryRead(() => result.TotalDebitCards        = (int)response.creditrequest.applicant[0].applicantdemographics.expenditure.totaldebitcards, "Total number of cheque of debit cards linked directly to the customer's bank account", false);
            TryRead(() => result.TotalCreditCards       = (int)response.creditrequest.applicant[0].applicantdemographics.expenditure.totalcreditcards, "Total number of credit or charge cards used to purchase goods and services on credit", false);
            TryRead(() => result.MonthlyUnsecuredAmount = (int)response.creditrequest.applicant[0].applicantdemographics.expenditure.monthlyunsecuredamount, "Monthly unsecured financial obligation owed to creditors", false);
            //main incom details
            TryRead(() => result.AmountPr        = (int)response.creditrequest.applicant[0].applicantdemographics.income.primary.amount, "Amount of main income received according to frequency", false);
            TryRead(() => result.TypePr          = response.creditrequest.applicant[0].applicantdemographics.income.primary.type, "Main income Type Code", false);
            TryRead(() => result.PaymentMethodPr = response.creditrequest.applicant[0].applicantdemographics.income.primary.paymentmethod, "Main income Payment Method Code", false);
            TryRead(() => result.FrequencyPr     = response.creditrequest.applicant[0].applicantdemographics.income.primary.frequency, "Main income Frequency Code", false);
            //any additional incom details
            TryRead(() => result.AmountAd        = (int)response.creditrequest.applicant[0].applicantdemographics.income.additional.amount, "Amount of additional income received according to frequency", false);
            TryRead(() => result.TypeAd          = response.creditrequest.applicant[0].applicantdemographics.income.additional.type, "Additional income Type Code", false);
            TryRead(() => result.PaymentMethodAd = response.creditrequest.applicant[0].applicantdemographics.income.additional.paymentmethod, "Additional income Payment Method Code", false);
            TryRead(() => result.FrequencyAd     = response.creditrequest.applicant[0].applicantdemographics.income.additional.frequency, "Additional income Frequency Code", false);

            CT_creditreport creditreport = response.creditreport;

            result.ApplicantData = BuildData(creditreport);

            result.Amendments         = GetAmendments(response.secondaryrequest);
            result.ApplicantAddresses = GetApplicantAddresses(response.creditrequest);
            result.ApplicantNames     = GetApplicantNames(response.creditrequest);
            result.Email                = GetEmail(response.creditrequest.applicant[0].applicantdemographics);
            result.Telephone            = GetTelephone(response.creditrequest.applicant[0].applicantdemographics);
            result.ApplicantData[0].Tpd = GetTpd(creditreport.applicant[0].tpd);

            const int maxErrorLength = 4000;

            result.Error = (!string.IsNullOrEmpty(Errors) && Errors.Length > maxErrorLength) ? Errors.Substring(0, maxErrorLength) : Errors;

            result.HasParsingError = HasParsingError;

            return(result);            //Object with searchdata
        }