Esempio n. 1
0
        private static void ProcessLoanDetails()
        {
            GC.Collect();
            while (true)
            {
                Business.PrimaryListings primaryListings = new Business.PrimaryListings();

                var primaryLoan = primaryListings.GetRandomNonDetailedLoan();
                if (primaryLoan == null)
                {
                    Console.WriteLine("Ran out of rows in thread #" + Thread.CurrentThread.ManagedThreadId);
                    Thread.CurrentThread.Abort();
                    break;
                }

                Stopwatch stopwatch = new Stopwatch();
                stopwatch.Start();
                HtmlWeb  htmlWeb               = new HtmlWeb();
                var      htmlDocumentsPage     = htmlWeb.Load("https://www.mintos.com/en/" + primaryLoan.ID);
                var      getAllTables          = htmlDocumentsPage.DocumentNode.Descendants("table");
                HtmlNode extraInformationTable = getAllTables.ToList()[1];
                var      tableRowDescriptions  = extraInformationTable.SelectNodes(extraInformationTable.XPath + "//td[@class='field-description']");
                var      tableRowValues        = extraInformationTable.SelectNodes(extraInformationTable.XPath + "//td[@class='value']");

                Business.LoanDetails businessLoanDetails = new Business.LoanDetails();
                var loanDetails = businessLoanDetails.GetDetails(tableRowDescriptions, tableRowValues);
                var loanID      = businessLoanDetails.AddDetails(loanDetails);

                primaryListings.UpdateLoanDetailsID(loanID, primaryLoan);

                stopwatch.Stop();
                Console.WriteLine("Thead " + Thread.CurrentThread.ManagedThreadId + " " + primaryLoan.ID + "  Time: " + stopwatch.ElapsedMilliseconds);
            }
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            Console.WriteLine("1 - Read CSV file and insert Listings in Database.\n" +
                              "2 - Process Loans with no details\n" +
                              "3 - Process CSV then get Details");
            string userInput = Console.ReadLine();

            if (userInput == "1")
            {
                ProcessCSVFile();
            }

            else if (userInput == "2")
            {
                int i = 0;
                while (i < int.Parse(ConfigurationManager.AppSettings["NumberOfThreads"]))
                {
                    Thread t1 = new Thread(ProcessLoanDetails);
                    t1.Start();
                    i++;
                }
                while (true)
                {
                    Business.PrimaryListings primaryListings = new Business.PrimaryListings();

                    var primaryLoan = primaryListings.GetRandomNonDetailedLoan();
                    if (primaryLoan == null)
                    {
                        break;
                    }
                    Thread.Sleep(5000);
                }
            }

            else if (userInput == "3")
            {
                ProcessCSVFile();
                int i = 0;
                while (i < int.Parse(ConfigurationManager.AppSettings["NumberOfThreads"]))
                {
                    Thread t1 = new Thread(ProcessLoanDetails);
                    t1.Start();
                    i++;
                }
                while (true)
                {
                    Business.PrimaryListings primaryListings = new Business.PrimaryListings();

                    var primaryLoan = primaryListings.GetRandomNonDetailedLoan();
                    if (primaryLoan == null)
                    {
                        break;
                    }
                    Thread.Sleep(5000);
                }
            }
        }
Esempio n. 3
0
        private static void ProcessCSVFile()
        {
            string csvPath         = ConfigurationManager.AppSettings["CSVPath"];
            string csvFinishedPath = ConfigurationManager.AppSettings["csvFinishedPath"];
            int    csvAddLimit     = int.Parse(ConfigurationManager.AppSettings["AddEveryXcsvRecords"]);
            int    csvCounter      = 0;

            Business.PrimaryListings primaryListings = new Business.PrimaryListings();

            var files = Directory.GetFiles(csvPath, "*.csv");

            foreach (var item in files)
            {
                List <PrimaryLoan> listOfLoans = new List <PrimaryLoan>();
                using (var reader = new StreamReader(item))
                    using (var csv = new CsvReader(reader))
                    {
                        bool isHeader = true;
                        while (csv.Read())
                        {
                            if (isHeader)
                            {
                                isHeader = false;
                                continue;
                            }
                            PrimaryLoan primaryLoanToAdd = new PrimaryLoan();

                            primaryLoanToAdd.Country                         = csv.GetField(0);
                            primaryLoanToAdd.ID                              = csv.GetField(1);
                            primaryLoanToAdd.Issue_Date                      = DateTime.ParseExact(csv.GetField(2), "dd.MM.yyyy", CultureInfo.InvariantCulture);
                            primaryLoanToAdd.Closing_Date                    = DateTime.ParseExact(csv.GetField(3), "dd.MM.yyyy", CultureInfo.InvariantCulture);
                            primaryLoanToAdd.Loan_Type                       = csv.GetField(4);
                            primaryLoanToAdd.Amortization_Method             = csv.GetField(5);
                            primaryLoanToAdd.Loan_Originator                 = csv.GetField(6);
                            primaryLoanToAdd.Loan_Amount                     = decimal.Parse(csv.GetField(7));
                            primaryLoanToAdd.Remaining_Principal             = decimal.Parse(csv.GetField(8));
                            primaryLoanToAdd.LTV                             = decimal.Parse(csv.GetField(9));
                            primaryLoanToAdd.Interest_Rate                   = decimal.Parse(csv.GetField(10));
                            primaryLoanToAdd.Term                            = csv.GetField(11);
                            primaryLoanToAdd.Payments_Received               = int.Parse(csv.GetField(12));
                            primaryLoanToAdd.Status                          = csv.GetField(13);
                            primaryLoanToAdd.Amount_Available_for_Investment = decimal.Parse(csv.GetField(14));
                            primaryLoanToAdd.Buyback_Guarantee               = csv.GetField(15);
                            primaryLoanToAdd.My_Investments                  = decimal.Parse(csv.GetField(16));
                            primaryLoanToAdd.Currency                        = csv.GetField(17);
                            decimal aprDecimal = 0;
                            primaryLoanToAdd.Borrower_APR = decimal.TryParse(csv.GetField(18), out aprDecimal)?(decimal?)aprDecimal:null;

                            listOfLoans.Add(primaryLoanToAdd);
                            csvCounter++;
                            if (csvCounter >= csvAddLimit)
                            {
                                primaryListings.UpdateOrAddPrimaryLoans(listOfLoans);
                                listOfLoans = new List <PrimaryLoan>();
                                csvCounter  = 0;
                            }
                        }
                    }
                primaryListings.UpdateOrAddPrimaryLoans(listOfLoans);

                File.Move(item, csvFinishedPath + DateTime.UtcNow.ToString("yyyy-MM-dd-hh_mm_ss") + ".csv");
            }
        }