Example #1
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");
            }
        }