Пример #1
0
        public CommonParams(HttpRequestMessage request)
        {
            if (request?.GetQueryNameValuePairs() == null)
            {
                return;
            }
            var value = request.GetQueryNameValuePairs().FirstOrDefault(x => x.Key == "TimeOutInMill").Value;

            if (value != null)
            {
                TimeoutInMill = NullSafe.NullSafeInteger(value, TimeoutInMill);
            }

            //THIS IS ALSO USED BY ZILLOW 'single user request'
            value = request.GetQueryNameValuePairs().FirstOrDefault(x => x.Key == "UseOnlyThisUserId").Value;
            if (value != null)
            {
                UseOnlyThisUserId = NullSafe.NullSafeInteger(value, UseOnlyThisUserId);
            }

            value = request.GetQueryNameValuePairs().FirstOrDefault(x => x.Key == "DebugModeType").Value;
            if (value != null)
            {
                EnumLib.TryParse(value, out DebugModeType);
            }
        }
Пример #2
0
            public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
            {
                JToken token = JToken.Load(reader);

                switch (token.Type)
                {
                case JTokenType.Integer:
                    return(token.ToObject <int>());

                case JTokenType.Float:
                    return(token.ToObject <int>());

                case JTokenType.String:
                    return(int.Parse(token.ToString()));

                case JTokenType.Boolean:
                    return(NullSafe.NullSafeInteger(token, 0));

                case JTokenType.Null:
                    return(objectType == typeof(int?));

                default:
                    throw new JsonSerializationException("Unexpected token type: " + token.Type);
                }
            }
Пример #3
0
        protected void Application_Start()
        {
            new DataConnections();

            var formatters    = GlobalConfiguration.Configuration.Formatters;
            var jsonFormatter = formatters.JsonFormatter;

            jsonFormatter.SerializerSettings = JsonSettings;

            LeadWebServices = new ApiWebServices(DataContextType.Database, DataConnections.DataContextLoanTekRead).Get(new Filter
            {
                PropertySearchItems = new List <SearchAndCompare.ColumnSearchItem>
                {
                    new SearchAndCompare.ColumnSearchItem
                    {
                        Column      = "CategoryType",
                        CompareType = Types.SearchAndCompare.CompareType.EqualTo,
                        SearchTerm  = Types.Api.ApiCategoryTypes.CRM.ToString()
                    }
                }
            });


            GlobalConfiguration.Configure(WebApiConfig.Register);
            GlobalConfiguration.Configuration.Filters.Add(new CustomExceptionFilterAttribute());

            ApiObject = new LeadsClientsApi()
            {
                Versions = new List <Version>()
                {
                    new Version()
                    {
                        MajorVersionId = 1,
                        MinorVersionId = 1,
                        VersionStatus  = Types.Api.VersionStatusType.Beta,
                        Created        = Convert.ToDateTime("04/01/2016"),
                        LastUpdated    = Convert.ToDateTime("07/08/2016")
                    }
                }
            };

            var clientId = 399;

            Debug.WriteLine("ClientId:" + clientId + " LeadsController Auth key:" + AuthToken.EncryptAuthKey(clientId, NewLeadsController.ApiObject.ApiName));
            Debug.WriteLine("ClientId:" + clientId + " WidgetController Auth key:" + AuthToken.EncryptAuthKey(clientId, WidgetController.WebServiceName));

            string key = ConfigurationManager.AppSettings.AllKeys.FirstOrDefault(x => x.ToLower().Equals("useonlythisuserid"));

            Global.UseOnlyThisUserId = NullSafe.NullSafeInteger(ConfigurationManager.AppSettings[key], 0);

            key = ConfigurationManager.AppSettings.AllKeys.FirstOrDefault(x => x.ToLower().Equals("Types.Api.ServerStatusType"));
            Global.ServerStatusType = EnumLib.TryParse <Types.Api.ApiStatusType>((key != null) ? ConfigurationManager.AppSettings[key] : ((Debugger.IsAttached) ? Types.Api.ApiStatusType.Testing : Types.Api.ApiStatusType.Live).ToString());

            if (!Debugger.IsAttached)
            {
                this.initCommonData();
            }
        }
Пример #4
0
        private void setPort(string s)
        {
            int ss = NullSafe.NullSafeInteger(s.Split(' ').LastOrDefault());

            if (ss < 1)
            {
                Console.WriteLine("Invalid portvalue:" + ss);
            }
            Global.Config.Port = ss;
            Global.Config.SaveConfig();
            setResponse("Port set to:" + ss);
        }
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            //use with the attribute [SkipMyGlobalActionFilter]
            if (actionContext.ActionDescriptor.GetCustomAttributes <SkipMyGlobalActionFilterAttribute>(false).Any())
            {
                return;
            }

            //new Task(() => { ).Start(); //this will execute in its own thread allowing the request to continue processing independently of the 'Save'
            //var durationInMilli = (DateTime.Now - startTime).Milliseconds;
            //Debug.WriteLine("PreProcessQuoteRequestFilter hit...pre-process time: " + durationInMilli);

            var newRequest = new AApiRequest();

            actionContext.Request.Properties[Global.ARequestPropertyName] = newRequest;
            Task.Run(() =>
            {
                newRequest.LocalServerName = Global.LocalServerName;
                newRequest.ApiName         = Global.ApiObject.ApiName;
                newRequest.ApiEndPoint     = actionContext.Request.RequestUri.AbsolutePath.ToLower();
                newRequest.Url             = actionContext.Request.RequestUri.AbsoluteUri;
                newRequest.RemoteIP        = ClientInfo.GetIPAddress(actionContext.Request);
                try
                {
                    foreach (var key in actionContext.ActionArguments.Keys)
                    {
                        switch (key.ToLower())
                        {
                        case "authtoken": newRequest.AuthToken = actionContext.ActionArguments[key].ToString(); break;

                        case "clientid": newRequest.ClientId = NullSafe.NullSafeInteger(actionContext.ActionArguments[key]); break;

                        //case "request": (actionContext.ActionArguments[key] is string) ? newRequest.RawRequest = actionContext.ActionArguments[key].ToString() : ; break;
                        //case "loanpricerloanrequest": newRequest.RawRequest = JsonConvert.SerializeObject(actionContext.ActionArguments[key]); break;
                        case "commonparams": break;

                        default:
                            newRequest.RawRequest = (actionContext.ActionArguments[key] is string) ? newRequest.RawRequest = actionContext.ActionArguments[key].ToString() : JsonConvert.SerializeObject(actionContext.ActionArguments.FirstOrDefault()); break;
                        }
                    }
                }
                catch (Exception ex) { newRequest.RawRequest = "ERROR trying to read Content:" + ex.Message; }
                if (string.IsNullOrEmpty(newRequest.RawRequest))
                {
                    newRequest.RawRequest = actionContext.Request.RequestUri.Query;
                }
                newRequest.Save();
            });

            base.OnActionExecuting(actionContext);
        }
Пример #6
0
        public HttpResponseMessage AddBankrateXmlLead(HttpRequestMessage request)
        {
            this.ResponseFormatter = new XmlMediaTypeFormatter();

            const string endpoint         = "AddNewLead/Bankrate/XML";
            const int    bankrateClientId = 903;
            const int    bankrateUserId   = 2383;

            var encryptedClientId = this.Request.RequestUri.ParseQueryString()["c"];
            int clientId          = !string.IsNullOrEmpty(encryptedClientId) ? NullSafe.NullSafeInteger(Encryption.DecryptString(encryptedClientId)) : 0;

            if (clientId != bankrateClientId)
            {
                return(this.CreateErrorResponse(HttpStatusCode.Unauthorized, "Client is not valid for this web service.", endpoint));
            }

            bool checkForDuplicate = false;

            return(this.processXmlLead(request, encryptedClientId, bankrateUserId, endpoint, checkForDuplicate));
        }
Пример #7
0
        private HttpResponseMessage processXmlLead(HttpRequestMessage request, string encryptedClientId, int defaultUserId, string endpoint, bool checkForDuplicate = true)
        {
            this.ResponseFormatter = new XmlMediaTypeFormatter();

            var startTime = DateTime.Now;

            if (string.IsNullOrEmpty(encryptedClientId))
            {
                return(this.CreateErrorResponse(HttpStatusCode.BadRequest, "Missing encrypted client id.", endpoint));
            }

            var     clientId = NullSafe.NullSafeInteger(Encryption.DecryptString(encryptedClientId));
            AClient client   = Master.Lists.Clients.GetClientById(clientId);

            if (!client?.Active ?? true) //if null or not active reject...
            {
                return(this.CreateErrorResponse(HttpStatusCode.Unauthorized, "Client is invalid.", endpoint));
            }

            //http://stackoverflow.com/questions/1127431/xmlserializer-giving-filenotfoundexception-at-constructor
            //Error is thrown here, this is 'expected' beaviour. Just ignore...
            var serializer = new XmlSerializer(typeof(MortgageLead));
            var dataLead   = (MortgageLead)serializer.Deserialize(request.Content.ReadAsStreamAsync().Result);

            ALeadsResponse response = new ALeadsResponse();

            response.ApiEndPoint             = endpoint;
            response.ClientDefinedIdentifier = dataLead.SourceLeadId;

            Lead lead;

            bool doInsert = true;

            if (checkForDuplicate)
            {
                ActionResponse <Lead> actionResponse = this.duplicateCheck(clientId, dataLead);
                if (actionResponse.Success) //true = dupicate
                {
                    doInsert         = false;
                    response.Status  = StatusType.Complete;
                    response.Message = "Duplicate";
                    response.LoanTekDefinedIdentifier = actionResponse.DataObject.Id.ToString();
                }
            }
            if (doInsert && (lead = LegacyLead.ConvertXmlSchema(dataLead)) != null)
            {
                lead.ClientID = clientId;

                //reset UserId to 0 if the User's ClientId does not match this client
                if (lead.UserID > 0 && Users.GetUserById(lead.UserID.GetValueOrDefault())?.ClientId != clientId)
                {
                    lead.UserID = 0;
                }
                if (lead.UserID == 0)
                {
                    lead.UserID = defaultUserId;
                }

                ActionResponse <Lead> actionResponse = new Biz.Contacts.Leads.Objects.Leads(DataContextType.Database, DataConnections.DataContextBankrateWrite).PutWithResponse(lead);
                if (actionResponse.Success)
                {
                    response.Status  = StatusType.Complete;
                    response.Message = Types.Processing.StatusType.Success.ToString();
                    response.LoanTekDefinedIdentifier = actionResponse.DataObject?.Id.ToString();
                }
                else
                {
                    response.Status  = StatusType.Error;
                    response.Message = response.Message;
                }
            }

            response.ExecutionTimeInMillisec = (int)(DateTime.Now - startTime).TotalMilliseconds;
            return(Request.CreateResponse(HttpStatusCode.OK, response, this.ResponseFormatter));
        }
Пример #8
0
        public static Lead ConvertXmlSchema(MortgageLead dataLead)
        {
            if (dataLead == null)
            {
                return(null);
            }

            Lead lead = new Lead();

            LoanTekAPI.SetLeadDefaults(lead);
            lead.UserID = dataLead.UserId.ToInt();

            if (string.IsNullOrEmpty(dataLead.Status))
            {
                dataLead.Status = LeadStatus.Assigned.ToString();
            }

            LeadStatus leadStatus;

            if (Enum.TryParse(dataLead.Status, out leadStatus))
            {
                lead.StatusID = (int)leadStatus;
            }
            else
            {
                lead.StatusID = (int)LeadStatus.Unassigned;
            }

            #region Address update / cleanup

            var state = string.Empty;
            var zip   = string.Empty;
            if (dataLead.Borrower != null)
            {
                if (string.IsNullOrEmpty(dataLead.Borrower?.MailState))
                {
                    if (dataLead.Property != null)
                    {
                        state = dataLead.Property?.PropertyState;
                        zip   = dataLead.Property?.PropertyZip;
                    }
                }
                else
                {
                    state = dataLead.Borrower?.MailState;
                    zip   = dataLead.Borrower?.MailZip;
                }
            }
            if (string.IsNullOrEmpty(state) && !string.IsNullOrEmpty(zip))
            {
                using (LeadsDataContext dc = new LeadsDataContext())
                {
                    var result = dc.LeadsGetStateAbbreviationByZipCode(zip).FirstOrDefault();

                    if (result != null)
                    {
                        state = NullSafe.NullSafeString(result.stateabbv);
                    }
                }
            }
            if (!string.IsNullOrEmpty(state))
            {
                if (dataLead.Borrower != null)
                {
                    if (string.IsNullOrEmpty(dataLead.Borrower?.MailState))
                    {
                        dataLead.Borrower.MailState = state;
                    }
                }
                if (dataLead.Property != null)
                {
                    if (string.IsNullOrEmpty(dataLead.Property?.PropertyState))
                    {
                        dataLead.Property.PropertyState = state;
                    }
                }
            }

            #endregion

            #region Name update / cleanup

            if (dataLead.Borrower != null)
            {
                if (dataLead.Borrower?.FirstName != null)
                {
                    lead.FirstName = NullSafe.NullSafeString(dataLead.Borrower?.FirstName);
                }
                if (dataLead.Borrower?.LastName != null)
                {
                    lead.LastName = NullSafe.NullSafeString(dataLead.Borrower?.LastName);
                }
                if (string.IsNullOrEmpty(dataLead.Borrower?.LastName))
                {
                    var nameList = NullSafe.NullSafeString(dataLead.Borrower?.FirstName).Split(' ').ToList();
                    switch (nameList.Count)
                    {
                    case 1:
                        lead.FirstName = nameList[0];
                        break;

                    case 2:
                        lead.FirstName = nameList[0];
                        lead.LastName  = nameList[1];
                        break;

                    case 3:
                        lead.FirstName  = nameList[0];
                        lead.MiddleName = nameList[1];
                        lead.LastName   = nameList[2];
                        break;

                    case 4:
                        if (nameList.Count(w => w == "and") > 0)
                        {
                            lead.FirstName  = $"{nameList[0]} {nameList[1]} {nameList[2]}";
                            lead.MiddleName = string.Empty;
                            lead.LastName   = nameList[3];
                        }
                        else
                        {
                            lead.FirstName  = nameList[0];
                            lead.MiddleName = nameList[1];
                            lead.LastName   = $"{nameList[2]} {nameList[3]}";
                        }
                        break;
                    }
                }
            }

            #endregion

            if (dataLead.Borrower != null)
            {
                if (NullSafe.NullSafeString(dataLead?.Borrower?.GrossMonthlyIncome).Split('-').Length > 1)
                {
                    var income = NullSafe.NullSafeString(dataLead?.Borrower?.GrossMonthlyIncome).Split('-')[0];
                    dataLead.Borrower.GrossMonthlyIncome = income;
                }
                if (NullSafe.NullSafeString(dataLead?.Borrower?.FicoScore).Split('-').Length > 1)
                {
                    var fico = NullSafe.NullSafeString(dataLead?.Borrower?.FicoScore).Split('-')[0];
                    dataLead.Borrower.FicoScore = fico;
                }
            }

            lead.LenderId               = dataLead.LenderId;
            lead.PartnerId              = dataLead.PartnerId;
            lead.EmailScore             = NullSafe.NullSafeString(dataLead?.EmailScore);
            lead.HasMobilePhone         = NullSafe.NullSafeString(dataLead?.HasMobilePhone);
            lead.HasRecentPhoneActivity = NullSafe.NullSafeString(dataLead?.HasRecentPhoneActivity);
            lead.PhoneScore             = NullSafe.NullSafeString(dataLead?.PhoneScore);
            lead.ReferralType           = NullSafe.NullSafeString(dataLead?.ReferralType);
            lead.JornayaLeadId          = NullSafe.NullSafeString(dataLead?.JornayaLeadId);

            lead.CountyID = 0;
            lead.AdditionalInformation = NullSafe.NullSafeString(dataLead.AdditionalInformation).Replace("Unknown", "");
            lead.Age                    = NullSafe.NullSafeInteger(dataLead?.Borrower?.Age, 0);
            lead.AnnualIncome           = NullSafe.NullSafeInteger(dataLead?.Borrower?.GrossMonthlyIncome, 0) * 12;
            lead.Assigned               = DateTime.Now;
            lead.Created                = DateTime.Now;
            lead.CreditProfile          = NullSafe.NullSafeString(dataLead?.Borrower?.CreditRating).Replace("Unknown", "");
            lead.DateOfBirth            = NullSafe.NullSafeString(dataLead?.Borrower?.DateOfBirth).Replace("Unknown", "");
            lead.EmployerName           = NullSafe.NullSafeString(dataLead?.Borrower?.EmployerName).Replace("Unknown", "");
            lead.EmploymentLength       = NullSafe.NullSafeString(dataLead?.Borrower?.EmploymentLength).Replace("Unknown", "");
            lead.EmploymentLengthPeriod = NullSafe.NullSafeString(dataLead?.Borrower?.EmploymentLengthPeriod).Replace("Unknown", "");
            lead.EmploymentStatus       = NullSafe.NullSafeString(dataLead?.Borrower?.EmploymentStatus).Replace("Unknown", "");
            lead.FicoScore              = NullSafe.NullSafeInteger(dataLead?.Borrower?.FicoScore, 0);
            if (string.IsNullOrEmpty(lead.CreditProfile))
            {
                lead.CreditProfile = LoanTekAPI.GetCreditProfile((int)lead.FicoScore);
            }
            lead.FirstName          = StringUtilities.PropCase(StringUtilities.RemoveCharactersButKeepSpaces(lead.FirstName));
            lead.GrossMonthlyIncome = NullSafe.NullSafeInteger(dataLead?.Borrower?.GrossMonthlyIncome, 0);
            lead.HasCoBorrower      = dataLead.CoBorrower != null;
            lead.IPAddress          = NullSafe.NullSafeString(dataLead.IPAddress);
            if (lead.IPAddress.Length > 24)
            {
                lead.IPAddress = lead.IPAddress.Substring(0, 24);
            }
            lead.IsDeleted             = false;
            lead.IsVerified            = true;
            lead.LastName              = StringUtilities.PropCase(StringUtilities.RemoveCharactersButKeepSpaces(lead.LastName));
            lead.LiquidAssetsValue     = NullSafe.NullSafeInteger(dataLead?.Borrower?.LiquidAssetsValue, 0);
            lead.MailAddress           = StringUtilities.PropCase(NullSafe.NullSafeString(dataLead?.Borrower?.MailAddress).Replace("Unknown", ""));
            lead.MailAddress2          = StringUtilities.PropCase(NullSafe.NullSafeString(dataLead?.Borrower?.MailAddress2).Replace("Unknown", ""));
            lead.MailCity              = StringUtilities.PropCase(NullSafe.NullSafeString(dataLead?.Borrower?.MailCity).Replace("Unknown", ""));
            lead.MailState             = LocationServices.GetStateAbbreviation(NullSafe.NullSafeString(dataLead?.Borrower?.MailState).Replace("Unknown", "")).ToUpper();
            lead.MailZip               = NullSafe.NullSafeString(dataLead?.Borrower?.MailZip).Replace("Unknown", "");
            lead.MaritalStatus         = NullSafe.NullSafeString(dataLead?.Borrower?.MaritalStatus).Replace("Unknown", "");
            lead.MiddleName            = StringUtilities.PropCase(StringUtilities.RemoveCharacters(lead.MiddleName ?? string.Empty));
            lead.MonthlyDebt           = NullSafe.NullSafeInteger(dataLead?.Borrower?.MonthlyDebt, 0);
            lead.ResidenceLength       = NullSafe.NullSafeString(dataLead?.Borrower?.ResidenceLength).Replace("Unknown", "");
            lead.ResidenceLengthPeriod = NullSafe.NullSafeString(dataLead?.Borrower?.ResidenceLengthPeriod).Replace("Unknown", "");
            lead.SourceCreated         = NullSafe.NullSafeDate(dataLead.SourceCreated);
            lead.SourceFilterID        = LoanTekAPI.GetSourceFilterId(NullSafe.NullSafeInteger(dataLead.LeadSourceId, 0), NullSafe.NullSafeString(dataLead?.Loan?.LoanType).Replace("Unknown", ""));
            lead.SourceID              = NullSafe.NullSafeInteger(dataLead.LeadSourceId, 0);
            lead.SourceLeadID          = string.IsNullOrEmpty(dataLead.SourceLeadId) ? Guid.NewGuid().ToString() : NullSafe.NullSafeString(dataLead.SourceLeadId).Replace("Unknown", "");
            lead.SpouseFirstName       = StringUtilities.PropCase(NullSafe.NullSafeString(dataLead?.Borrower?.SpouseFirstName).Replace("Unknown", ""));
            lead.SpouseLastName        = StringUtilities.PropCase(NullSafe.NullSafeString(dataLead?.Borrower?.SpouseLastName).Replace("Unknown", ""));
            lead.SSN = StringUtilities.RemoveCharacters(NullSafe.NullSafeString(dataLead?.Borrower?.SSN).Replace("Unknown", ""));
            if (dataLead.Property != null)
            {
                lead.StateID = NullSafe.NullSafeInteger(dataLead?.Property?.PropertyState, 0);
            }
            //lead.StatusID = (int)LeadStatus.Assigned;
            if (dataLead.Declarations != null)
            {
                lead.Bankruptcy           = NullSafe.NullSafeBoolean(dataLead.Declarations.Bankruptcy);
                lead.BankruptcyType       = NullSafe.NullSafeString(dataLead.Declarations.BankruptcyType).Replace("Unknown", "");
                lead.FirstTimeBuyer       = NullSafe.NullSafeBoolean(dataLead.Declarations.FirstTimeBuyer);
                lead.FHAEligible          = NullSafe.NullSafeBoolean(dataLead.Declarations.FHAEligible);
                lead.Foreclosed           = NullSafe.NullSafeBoolean(dataLead.Declarations.Foreclosed);
                lead.HomeOwner            = NullSafe.NullSafeBoolean(dataLead.Declarations.HomeOwner);
                lead.NeedPurchaseREAgent  = NullSafe.NullSafeBoolean(dataLead.Declarations.NeedPurchaseREAgent);
                lead.NeedSellingREAgent   = NullSafe.NullSafeBoolean(dataLead.Declarations.NeedSellingREAgent);
                lead.RealEstateAgentName  = StringUtilities.PropCase(NullSafe.NullSafeString(dataLead.Declarations.RealEstateAgentName).Replace("Unknown", ""));
                lead.RealEstateAgentPhone = StringUtilities.RemoveCharacters(NullSafe.NullSafeString(dataLead.Declarations.RealEstateAgentPhone).Replace("Unknown", ""));
                lead.VADisabled           = NullSafe.NullSafeBoolean(dataLead.Declarations.VADisabled);
                lead.VAEligible           = NullSafe.NullSafeBoolean(dataLead.Declarations.VAEligible);
                lead.VAFirstTime          = NullSafe.NullSafeBoolean(dataLead.Declarations.VAFirstTime);
                lead.VAType                   = NullSafe.NullSafeString(dataLead.Declarations.VAType).Replace("Unknown", "");
                lead.Veteran                  = NullSafe.NullSafeBoolean(dataLead.Declarations.Veteran);
                lead.WorkingWithRealtor       = NullSafe.NullSafeBoolean(dataLead.Declarations.WorkingWithRealtor);
                lead.EligibleForFHAStreamline = NullSafe.NullSafeBoolean(dataLead.Declarations.FHAStreamLineEligible);
                lead.EligibleForHARP          = NullSafe.NullSafeBoolean(dataLead.Declarations.HARPEligible);
            }
            if (dataLead.CoBorrower != null)
            {
                if (NullSafe.NullSafeString(dataLead?.CoBorrower?.CoBorrowerFicoScore).Split('-').Length > 1)
                {
                    var fico = NullSafe.NullSafeString(dataLead?.CoBorrower?.CoBorrowerFicoScore).Split('-')[0];
                    dataLead.CoBorrower.CoBorrowerFicoScore = fico;
                }
                lead.CoBorrowerAddress           = StringUtilities.PropCase(NullSafe.NullSafeString(dataLead?.CoBorrower?.CoBorrowerAddress).Replace("Unknown", ""));
                lead.CoBorrowerAge               = NullSafe.NullSafeInteger(dataLead?.CoBorrower?.CoBorrowerAge, 0);
                lead.CoBorrowerAnnualIncome      = NullSafe.NullSafeInteger(dataLead?.CoBorrower?.CoBorrowerAnnualIncome, 0);
                lead.CoBorrowerCity              = StringUtilities.PropCase(NullSafe.NullSafeString(dataLead?.CoBorrower?.CoBorrowerCity).Replace("Unknown", ""));
                lead.CoBorrowerCreditProfile     = NullSafe.NullSafeString(dataLead?.CoBorrower?.CreditRating).Replace("Unknown", "");
                lead.CoBorrowerDateOfBirth       = NullSafe.NullSafeString(dataLead?.CoBorrower?.CoBorrowerDateOfBirth).Replace("Unknown", "");
                lead.CoBorrowerFicoScore         = NullSafe.NullSafeInteger(dataLead?.CoBorrower?.CoBorrowerFicoScore, 0);
                lead.CoBorrowerFirstName         = StringUtilities.PropCase(NullSafe.NullSafeString(dataLead?.CoBorrower?.CoBorrowerFirstName).Replace("Unknown", ""));
                lead.CoBorrowerLastName          = StringUtilities.PropCase(NullSafe.NullSafeString(dataLead?.CoBorrower?.CoBorrowerLastName).Replace("Unknown", ""));
                lead.CoBorrowerLiquidAssetsValue = NullSafe.NullSafeInteger(dataLead?.CoBorrower?.CoBorrowerLiquidAssetsValue, 0);
                lead.CoBorrowerMonthlyIncome     = NullSafe.NullSafeInteger(dataLead?.CoBorrower?.CoBorrowerMonthlyIncome, 0);
                lead.CoBorrowerSSN               = StringUtilities.RemoveCharacters(NullSafe.NullSafeString(dataLead?.CoBorrower?.CoBorrowerSSN).Replace("Unknown", ""));
                lead.CoBorrowerState             = NullSafe.NullSafeString(dataLead?.CoBorrower?.CoBorrowerState).Replace("Unknown", "").ToUpper();
                lead.CoBorrowerVeteran           = NullSafe.NullSafeBoolean(dataLead?.CoBorrower?.CoBorrowerVeteran);
                lead.CoBorrowerZip               = NullSafe.NullSafeString(dataLead?.CoBorrower?.CoBorrowerZip).Replace("Unknown", "");
            }
            if (dataLead.ContactInfo != null)
            {
                lead.BestTimeToCall = NullSafe.NullSafeString(dataLead?.ContactInfo?.BestTimeToCall).Replace("Unknown", "");
                lead.Email          = NullSafe.NullSafeString(dataLead?.ContactInfo?.Email).ToLower();
                lead.Phone1         = StringUtilities.RemoveCharacters(NullSafe.NullSafeString(dataLead?.ContactInfo?.Phone1).Replace("Unknown", ""));
                lead.Phone1Type     = NullSafe.NullSafeString(dataLead?.ContactInfo?.Phone1Type).Replace("Unknown", "");
                lead.Phone2         = StringUtilities.RemoveCharacters(NullSafe.NullSafeString(dataLead?.ContactInfo?.Phone2).Replace("Unknown", ""));
                lead.Phone2Type     = NullSafe.NullSafeString(dataLead?.ContactInfo?.Phone2Type).Replace("Unknown", "");
                lead.Phone3         = StringUtilities.RemoveCharacters(NullSafe.NullSafeString(dataLead?.ContactInfo?.Phone3).Replace("Unknown", ""));
                lead.Phone3Type     = NullSafe.NullSafeString(dataLead?.ContactInfo?.Phone3Type).Replace("Unknown", "");
                lead.Phone4         = StringUtilities.RemoveCharacters(NullSafe.NullSafeString(dataLead?.ContactInfo?.Phone4).Replace("Unknown", ""));
                lead.Phone4Type     = NullSafe.NullSafeString(dataLead?.ContactInfo?.Phone4Type).Replace("Unknown", "");
            }
            if (dataLead.Loan != null)
            {
                lead.CashOut = NullSafe.NullSafeDecimal(StringUtilities.RemoveAllButNumericAndDecimal(dataLead?.Loan?.CashOut));
                if (lead.CashOut > 0)
                {
                    lead.WantsCashOut = true;
                }
                lead.DownPayment           = NullSafe.NullSafeInteger(dataLead?.Loan?.DownPayment, 0);
                lead.FirstMortgageBalance  = NullSafe.NullSafeInteger(dataLead?.Loan?.FirstMortgageBalance, 0);
                lead.FirstMortgagePayment  = NullSafe.NullSafeInteger(dataLead?.Loan?.FirstMortgagePayment, 0);
                lead.FirstMortgageRate     = NullSafe.NullSafeDecimal(dataLead?.Loan?.FirstMortgageRate);
                lead.FirstMortgageRateType = NullSafe.NullSafeString(dataLead?.Loan?.FirstMortgageRateType).Replace("Unknown", "");
                lead.FirstMortgageTerm     = NullSafe.NullSafeInteger(dataLead?.Loan?.FirstMortgageTerm, 0);
                lead.LoanAmount            = NullSafe.NullSafeInteger(dataLead?.Loan?.LoanAmount, 0);
                lead.LoanPurpose           = lead.CashOut > 0 ? "Cash Out" : NullSafe.NullSafeString(dataLead?.Loan?.LoanPurpose).Replace("Unknown", "");
                lead.LoanTimeFrame         = NullSafe.NullSafeString(dataLead?.Loan?.LoanTimeFrame).Replace("Item", "").Replace("Unknown", "");
                lead.LoanToValue           = NullSafe.NullSafeDecimal(dataLead?.Loan?.LoanToValue);
                lead.LoanType = NullSafe.NullSafeString(dataLead?.Loan?.LoanType).Replace("Unknown", "");
                lead.SecondMortgageBalance  = NullSafe.NullSafeInteger(dataLead?.Loan?.SecondMortgageBalance, 0);
                lead.SecondMortgagePayment  = NullSafe.NullSafeInteger(dataLead?.Loan?.SecondMortgagePayment, 0);
                lead.SecondMortgageRate     = NullSafe.NullSafeDecimal(dataLead?.Loan?.SecondMortgageRate);
                lead.SecondMortgageRateType = NullSafe.NullSafeString(dataLead?.Loan?.SecondMortgageRateType).Replace("Unknown", "");
                lead.SecondMortgageTerm     = NullSafe.NullSafeInteger(dataLead?.Loan?.SecondMortgageTerm, 0);
                lead.LoanProgramType        = NullSafe.NullSafeString(dataLead?.Loan?.LoanProgramType).Replace("Unknown", "");
                lead.LoanProgramName        = NullSafe.NullSafeString(dataLead?.Loan?.LoanProgramName).Replace("Unknown", "");
                lead.CurrentLender          = NullSafe.NullSafeString(dataLead?.Loan?.CurrentLender).Replace("\n", "").Replace("Your Current Lender", "");
                lead.DateOfLoan             = NullSafe.NullSafeString(dataLead?.Loan?.DateOfLoan);
            }
            if (dataLead.Property != null)
            {
                lead.PropertyAddress       = StringUtilities.PropCase(NullSafe.NullSafeString(dataLead?.Property?.PropertyAddress)).Replace("Unknown", "");
                lead.PropertyAddress2      = StringUtilities.PropCase(NullSafe.NullSafeString(dataLead?.Property?.PropertyAddress2)).Replace("Unknown", "");
                lead.PropertyCity          = StringUtilities.PropCase(NullSafe.NullSafeString(dataLead?.Property?.PropertyCity)).Replace("Unknown", "");
                lead.PropertyCounty        = StringUtilities.PropCase(NullSafe.NullSafeString(dataLead?.Property?.PropertyCounty)).Replace("Unknown", "");
                lead.PropertyDescription   = NullSafe.NullSafeString(dataLead?.Property?.PropertyDescription).Replace("Unknown", "");
                lead.PropertyFound         = NullSafe.NullSafeString(dataLead?.Property?.PropertyFound).Replace("Item", "");
                lead.PropertyNumberOfUnits = NullSafe.NullSafeInteger(dataLead?.Property?.PropertyNumberOfUnits, 0);
                lead.PropertyPurchasedYear = NullSafe.NullSafeInteger(dataLead?.Property?.PropertyPurchasedYear, 0);
                lead.PropertyPurchasePrice = NullSafe.NullSafeInteger(dataLead?.Property?.PropertyPurchasePrice, 0);
                lead.PropertyState         = LocationServices.GetStateAbbreviation(NullSafe.NullSafeString(dataLead?.Property?.PropertyState).Replace("Unknown", "")).ToUpper();
                lead.PropertyType          = NullSafe.NullSafeString(dataLead?.Property?.PropertyType).Replace("Unknown", "");
                lead.PropertyUsage         = NullSafe.NullSafeString(dataLead?.Property?.PropertyUsage).Replace("Unknown", "");
                lead.PropertyValue         = NullSafe.NullSafeInteger(dataLead?.Property?.PropertyValue, 0);
                lead.PropertyYearBuilt     = NullSafe.NullSafeInteger(dataLead?.Property?.PropertyYearBuilt, 0);
                lead.PropertyZip           = NullSafe.NullSafeString(dataLead?.Property?.PropertyZip).Replace("Unknown", "");
            }

            return(lead);
        }