} // constructor public virtual Agent Init() { Trail = new ApprovalTrail(Args.CustomerID, Args.CashRequestID, Args.NlCashRequestID, Log) { Amount = Args.SystemCalculatedAmount, }; using (Trail.AddCheckpoint(ProcessCheckpoints.Initializtion)) { Now = DateTime.UtcNow; MetaData = new MetaData(); Payments = new List <Payment>(); Funds = new AvailableFunds(); Turnover = new AutoApprovalTurnover { TurnoverType = Args.TurnoverType, }; Turnover.Init(); OriginationTime = new OriginationTime(Log); Cfg = InitCfg(); DirectorNames = new List <Name>(); HmrcBusinessNames = new List <NameForComparison>(); } // using timer step return(this); } // Init
protected virtual void ProcessRow(SafeReader sr) { LastRowType = null; RowType nRowType; string sRowType = sr.ContainsField("DatumType", "RowType") ? sr["DatumType"] : sr["RowType"]; if (!Enum.TryParse(sRowType, out nRowType)) { Log.Alert("Unsupported row type encountered: '{0}'.", sRowType); return; } // if LastRowType = nRowType; Log.Debug("Auto approve agent, processing input row of type {0}.", sRowType); switch (nRowType) { case RowType.MetaData: sr.Fill(MetaData); break; case RowType.Payment: Payments.Add(sr.Fill <Payment>()); break; case RowType.OriginationTime: OriginationTime.Process(sr); break; case RowType.Turnover: Turnover.Add(sr.Fill <TurnoverDbRow>()); break; case RowType.DirectorName: DirectorNames.Add(new Name(sr["FirstName"], sr["LastName"])); break; case RowType.HmrcBusinessName: if (sr["BelongsToCustomer"]) { HmrcBusinessNames.Add(new NameForComparison(sr["Name"])); } break; case RowType.ExperianConsumerDataCais: this.caisAccounts.Add(sr.Fill <ExperianConsumerDataCaisAccounts>()); break; case RowType.CompanyDissolutionDate: MetaData.CompanyDissolutionDate = sr["CompanyDissolutionDate"]; break; default: throw new ArgumentOutOfRangeException(); } // switch } // ProcessRow
} // FullInit public void FullInit( DateTime oDataAsOf, Configuration oCfg, Arguments oArgs, MetaData oMetaData, IEnumerable <Payment> oPayments, OriginationTime oOriginationTime, AutoApprovalTurnover oTurnover, AvailableFunds oFunds, List <Name> oDirectorNames, IEnumerable <NameForComparison> oHmrcBusinessNames ) { PartialInit(oDataAsOf, oCfg, oArgs, oMetaData, oPayments, oDirectorNames, oHmrcBusinessNames); SetSeniority(oOriginationTime.Seniority); SetAvailableFunds(oFunds.Available, oFunds.Reserved); SetTurnoverData(oTurnover); } // FullInit
} // GatherAvailableFunds /// <summary> /// Collects customer data from DB. Can be overridden to provide /// specific customer data instead of the current one. /// </summary> protected virtual void GatherData() { this.caisAccounts.Clear(); Cfg.Load(); DB.ForEachRowSafe( ProcessRow, "LoadAutoApprovalData", CommandSpecies.StoredProcedure, new QueryParameter("CustomerID", Args.CustomerID), new QueryParameter("Now", Now) ); MetaData.NumOfDefaultAccounts = ExperianConsumerDataExt.FindNumOfPersonalDefaults( this.caisAccounts, Cfg.Reject_Defaults_Amount, Now.AddMonths(-1 * Cfg.Reject_Defaults_MonthsNum) ); OriginationTime.FromExperian(MetaData.IncorporationDate); GatherAvailableFunds(); Trail.MyInputData.FullInit( Now, Cfg, Args, MetaData, Payments, OriginationTime, Turnover, Funds, DirectorNames, HmrcBusinessNames ); MetaData.Validate(); } // GatherData
} // constructor public virtual Agent Init() { Trail = new RejectionTrail( Args.CustomerID, Args.CashRequestID, Args.NLCashRequestID, Log, CurrentValues.Instance.AutomationExplanationMailReciever, CurrentValues.Instance.MailSenderEmail, CurrentValues.Instance.MailSenderName ); Trail.SetTag(this.tag); Now = DateTime.UtcNow; Cfg = InitCfg(); MetaData = new MetaData(); OriginationTime = new OriginationTime(Log); UpdateErrors = new List <MpError>(); this.annualTurnover = 0; this.quarterTurnover = 0; return(this); } // Init
} // constructor /// <summary> /// Retrieves customer's rejection input data /// </summary> /// <param name="dataAsOf">optional parameter to retrieve historical data for rejection</param> /// <returns></returns> public RejectionInputData GetRejectionInputData(DateTime?dataAsOf) { DateTime now = dataAsOf ?? DateTime.UtcNow; var model = new RejectionInputData(); AutoRejectionInputDataModelDb dbData = this.db.FillFirst <AutoRejectionInputDataModelDb>( "AV_GetRejectionData", CommandSpecies.StoredProcedure, new QueryParameter("@CustomerId", this.customerId) ); var originationTime = new OriginationTime(this.log); this.db.ForEachRowSafe( originationTime.Process, "LoadCustomerMarketplaceOriginationTimes", CommandSpecies.StoredProcedure, new QueryParameter("CustomerId", this.customerId) ); originationTime.FromExperian(dbData.IncorporationDate); double days = originationTime.Since.HasValue ? (now - originationTime.Since.Value).TotalDays : 0; CaisStatusesCalculation consumerCaisStatusesCalculation = new CaisStatusesCalculation(this.db, this.log); List <CaisStatus> consumerCais = consumerCaisStatusesCalculation.GetConsumerCaisStatuses(this.customerId); ConsumerLatesModel lates = consumerCaisStatusesCalculation.GetLates( this.customerId, now, this.configs.RejectionLastValidLate, this.configs.Reject_LateLastMonthsNum, consumerCais ); var consumerDefaults = consumerCaisStatusesCalculation.GetDefaults( this.customerId, now, this.configs.Reject_Defaults_Amount, this.configs.Reject_Defaults_MonthsNum, consumerCais ); var businessCais = this.dbHelper.GetBusinessCaisStatuses(this.customerId); var businessDefaults = consumerCaisStatusesCalculation.GetDefaults( this.customerId, now, this.configs.Reject_Defaults_CompanyAmount, this.configs.Reject_Defaults_CompanyMonthsNum, businessCais ); RejectionTurnover turnover = GetTurnoverForRejection(now); var data = new RejectionInputData { IsBrokerClient = dbData.IsBrokerClient, CustomerStatus = dbData.CustomerStatus, ConsumerScore = dbData.ExperianScore, BusinessScore = dbData.CompanyScore, WasApproved = dbData.WasApproved, NumOfDefaultConsumerAccounts = consumerDefaults.NumOfDefaults, NumOfDefaultBusinessAccounts = businessDefaults.NumOfDefaults, DefaultAmountInConsumerAccounts = consumerDefaults.DefaultsAmount, DefaultAmountInBusinessAccounts = businessDefaults.DefaultsAmount, HasMpError = dbData.HasErrorMp, HasCompanyFiles = dbData.HasCompanyFiles, BusinessSeniorityDays = (int)days, AnnualTurnover = turnover.Annual, QuarterTurnover = turnover.Quarter, NumOfLateConsumerAccounts = lates.NumOfLates, ConsumerLateDays = lates.LateDays, ConsumerDataTime = dbData.ConsumerDataTime, }; model.Init(now, data, this.configs); return(model); } // GetRejectionInputData