Пример #1
0
        }         // LoadCustomerRegions

        private void LoadCustomerMarketplaces()
        {
            Msg("Loans stats: loading customer marketplaces...");

            CustomerMarketplaces = new SortedDictionary <int, LoanStatsMarketplaces>();

            m_oDB.ForEachRowSafe((sr, bRowsetStart) => {
                int nCustomerID             = sr["CustomerID"];
                int nMarketplaceTypeID      = sr["MarketplaceTypeID"];
                string sMarketplaceTypeName = sr["MarketplaceType"];
                DateTime oCreated           = sr["Created"];

                if (CustomerMarketplaces.ContainsKey(nCustomerID))
                {
                    CustomerMarketplaces[nCustomerID].Add(nMarketplaceTypeID, sMarketplaceTypeName, oCreated);
                }
                else
                {
                    CustomerMarketplaces[nCustomerID] = new LoanStatsMarketplaces(nMarketplaceTypeID, sMarketplaceTypeName, oCreated);
                }

                return(ActionResult.Continue);
            }, "RptLoanStats_Marketplaces", CommandSpecies.StoredProcedure);

            Msg("Loans stats: loading customer marketplaces complete.");
        }         // LoadCustomerMarketplaces
Пример #2
0
        }         // constructor

        public List <LoanStatsReportEntry> Generate()
        {
            var oResult = new List <LoanStatsReportEntry>();

            foreach (KeyValuePair <int, List <LoanStatsDataEntry> > pair in Data)
            {
                int nCustomerID = pair.Key;

                foreach (LoanStatsDataEntry lse in pair.Value)
                {
                    var lre = new LoanStatsReportEntry();
                    oResult.Add(lre);

                    lre.IsFirstLoan = lse.IsLoanIssued ? ((lse.IsFirstLoan ? "" : "not ") + "first") : "";

                    lre.ClientLoanOrderNo   = lse.LoanSeqNo;
                    lre.TypeOfLoan          = lse.ApprovedType;
                    lre.CustomerSelection   = lse.IsLoanTypeSelectionAllowed ? 1 : 0;
                    lre.DiscountPlan        = lse.DiscountPlanName;
                    lre.Offline             = lse.IsOffline ? "offline" : "online";
                    lre.LoanID              = lse.IsLoanIssued ? lse.LoanID : (int?)null;
                    lre.ClientID            = lse.CustomerID;
                    lre.ClientName          = lse.CustomerName;
                    lre.DateFirstApproved   = lse.FirstDecisionDate;
                    lre.DateLastApproved    = lse.LastDecisionDate.Date;
                    lre.NewOrOldClient      = lse.IsNewClient ? "new" : "old";
                    lre.LoanOffered         = lse.ApprovedSum;
                    lre.InterestRate        = lse.ApprovedRate;
                    lre.LoanIssued          = lse.IsLoanIssued ? lse.LoanAmount : (decimal?)null;
                    lre.IsLoanIssued        = lse.IsLoanIssued ? "yes" : "no";
                    lre.LoanIssueDate       = lse.IsLoanIssued ? lse.IssueDate : (DateTime?)null;
                    lre.LoanDuration        = lse.IsLoanIssued ? lse.LoanTerm : (int?)null;
                    lre.CreditScore         = lse.CreditScore;
                    lre.TotalAnnualTurnover = lse.AnnualTurnover;
                    lre.Medal = ((object)lse.Medal).ToString().ToLower();

                    SortedDictionary <int, int> oMarketplaceCount = CustomerMarketplaces.ContainsKey(lse.CustomerID)
                                                ? CustomerMarketplaces[lse.CustomerID].Count(lse.FirstDecisionDate)
                                                : LoanStatsMarketplaces.Count();

                    foreach (KeyValuePair <int, int> mpc in oMarketplaceCount)
                    {
                        lre.MarketplaceCount[mpc.Key] = mpc.Value;
                    }

                    lre.PaypalTotal = CustomerPaypalTotals.ContainsKey(lse.CustomerID)
                                                ? CustomerPaypalTotals[lse.CustomerID].Calculate(lse.FirstDecisionDate)
                                                : 0;

                    lre.Gender      = lse.Gender.ToString().ToLower();
                    lre.YearOfBirth = lse.BirthDate.Year;

                    switch (lse.MaritalStatus)
                    {
                    case MaritalStatus.Married:
                        lre.FamilyStatus = 1;
                        break;

                    case MaritalStatus.Single:
                        lre.FamilyStatus = 0;
                        break;

                    case MaritalStatus.Divorced:
                        lre.FamilyStatus = 2;
                        break;

                    case MaritalStatus.Widowed:
                        lre.FamilyStatus = 3;
                        break;

                    case MaritalStatus.LivingTogether:
                        lre.FamilyStatus = 4;
                        break;

                    case MaritalStatus.Separated:
                        lre.FamilyStatus = 5;
                        break;

                    case MaritalStatus.Other:
                        lre.FamilyStatus = 0;
                        break;

                    default:
                        throw new ArgumentOutOfRangeException(
                                  "MaritalStatus",
                                  (object)lse.MaritalStatus,
                                  "Unsupported marital status."
                                  );
                    }                     // switch

                    if (lse.IsHomeOwner)
                    {
                        lre.HomeOwnership = 1;
                    }
                    else
                    {
                        switch (lse.PropertyStatusDescription.ToLower())
                        {
                        case "social house":
                            lre.HomeOwnership = 3;
                            break;

                        case "renting":
                            lre.HomeOwnership = 0;
                            break;

                        case "living with parents":
                            lre.HomeOwnership = 2;
                            break;

                        default:
                            lre.HomeOwnership = null;
                            break;
                        }                         // switch
                    }

                    switch (lse.TypeOfBusiness)
                    {
                    case TypeOfBusiness.Entrepreneur:
                    case TypeOfBusiness.SoleTrader:
                        lre.TypeOfBusiness = 0;
                        break;

                    case TypeOfBusiness.LLP:
                    case TypeOfBusiness.Limited:
                        lre.TypeOfBusiness = 2;
                        break;

                    case TypeOfBusiness.PShip3P:
                    case TypeOfBusiness.PShip:
                        lre.TypeOfBusiness = 1;
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }                     // switch

                    lre.SourceRef = lse.ReferenceSource;

                    lre.Category1 = "";                     // TODO
                    lre.Category2 = "";                     // TODO
                    lre.Category3 = "";                     // TODO

                    lre.Region = CustomerRegions.ContainsKey(nCustomerID) ? CustomerRegions[nCustomerID] : "";

                    lre.LastCashRequestID = lse.RequestIDHistory[lse.RequestIDHistory.Count - 1];
                }         // for each entry
            }             // for each customer

            return(oResult);
        }         // Generate