public void DITaxesCalculator() { // Define flag to stop reading the rest of the document after DI1 entries are read bool entriesFlagDI1 = false; foreach (string line in File.ReadLines(bdfilePath)) { if (line.Substring(21, 3).Equals("DI1")) { entriesFlagDI1 = true; // Now calculating each tax string taxDate = line.Substring(36, 8); int cotationAj = int.Parse(line.Substring(231, 13)); int workingDays = int.Parse(line.Substring(388, 5)); double DITax = Math.Pow((10000000.0 / (cotationAj)), (252.0 / workingDays)) - 1; DITaxes.Add(taxDate, DITax); } else { if (entriesFlagDI1) { // There are no more DI1 entries to read on the file, interrupt in order to have better performance break; } } } // Saving the computed results on a XML file for faster retrieval if the same Date is requested later BDDownloader.SaveDates(DITaxes, curveDate); }
protected void LoadDate_Click(object sender, EventArgs e) { // First check if the date is already on the server as a XML file. If thats the case, wont need to parse the whole BD txt file from string XMLFile = BDDownloader.findDateOnServer(Calendar1.SelectedDate); if (!(XMLFile.Equals("XML NOT FOUND"))) { // XML is on the server, only need to retrieve the taxes from the file // Updating flag DateisLoded = true; // DI1 taxes calculator init TaxesCalc = new TaxesCalculator(XMLFile, Calendar1.SelectedDate); TaxesCalc.DITaxesRetrieve(); } // If XML file is not found, download de BD from the internet else { string downloadedFile = BDDownloader.GetBDfromDate(Calendar1.SelectedDate); // If there are results from previous iteration, clean it Clean_Results(); if (downloadedFile.Equals("WebException ERROR")) { // Write something to text in the middle Clean_Results(); TaxesTitle.Text = "<h2>" + "Não foi possível obter as taxas do dia carregado (" + Calendar1.SelectedDate.ToShortDateString() + ") </h2>"; // Early return, did not succeed in getting taxes of the SelectedDate, also saving variable states ViewState["DateisLoaded"] = false; ViewState["TaxesCalc"] = TaxesCalc; return; } else { // Updating flag DateisLoded = true; // DI1 taxes calculator init TaxesCalc = new TaxesCalculator(downloadedFile, Calendar1.SelectedDate); TaxesCalc.DITaxesCalculator(); } } // Writing the Taxes table TaxesTitle.Text = "<h2>" + "Taxas DI de " + Calendar1.SelectedDate.ToShortDateString() + "</h2>"; StringBuilder TaxesListTemp = new StringBuilder(); TaxesListTemp.Append("<div id = \"DITaxesTable\" style=\"overflow: auto; max-height: 19em;\"> <table class=\"table table-bordered\"><thead> <tr> <th>Data</th><th>Taxa DI</th></tr></thead><tbody>"); foreach (KeyValuePair <string, double> tax in TaxesCalc.GetDITaxes()) { TaxesListTemp.Append("<tr><td>" + (tax.Key.Substring(6, 2) + @"/" + tax.Key.Substring(4, 2) + @"/" + tax.Key.Substring(0, 4)) + "</td> <td>" + (tax.Value).ToString("P") + " </td></tr>"); } TaxesListTemp.Append("</tbody></table></div>"); TaxesList.Text = TaxesListTemp.ToString(); // Saving the variables values between Sessions ViewState["DateisLoaded"] = DateisLoded; ViewState["TaxesCalc"] = TaxesCalc; }