コード例 #1
0
ファイル: Agent.cs プロジェクト: vijayamazon/ezbob
        }         // 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
コード例 #2
0
ファイル: Agent.cs プロジェクト: vijayamazon/ezbob
        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
コード例 #3
0
        }         // 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
コード例 #4
0
ファイル: Agent.cs プロジェクト: vijayamazon/ezbob
        }         // 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
コード例 #5
0
ファイル: Agent.cs プロジェクト: vijayamazon/ezbob
        }         // 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
コード例 #6
0
        }         // 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