public List <CovidGlobalCaseCountDADto> FetchCasesFromFile(Metrics metrics, Locations locations) { //Needs fixing TextReader reader = new StreamReader(path); CsvReader csvReader = new CsvReader(reader, CultureInfo.InvariantCulture); dynamic records = csvReader.GetRecords <dynamic>(); var bALRecords = FetchLocationsFromFile().Item1; var headerRow = FetchLocationsFromFile().Item2; List <CovidGlobalCaseCountBLDto> bLLCaseCountRecords = new List <CovidGlobalCaseCountBLDto>(); int id = 1; Date latestDate = covidDataRepository.GetLastUpdateDate(metrics.ToDALMetrics(), locations.ToDALocations()).Date; foreach (var rec in records) { IDictionary <string, object> caseCounts = rec; foreach (var cases in caseCounts) { if (cases.Key != "State" && cases.Key != "Country" && cases.Key != "Lat" && cases.Key != "Long" && DateTime.Compare((DateTime.ParseExact(cases.Key, "M/d/yy", System.Globalization.CultureInfo.InvariantCulture)), latestDate) > 0) { CovidGlobalCaseCountBLDto caseRecord = new CovidGlobalCaseCountBLDto { dbCompositeKey = "Change this", Date = DateTime.ParseExact(cases.Key, "M/d/yyyy", System.Globalization.CultureInfo.InvariantCulture), Count = Convert.ToInt32(cases.Value) }; bLLCaseCountRecords.Add(caseRecord); } } id++; } var dALCaseCountRecords = Utilities.MapCaseCountsBLDTOtoDADTO(bLLCaseCountRecords); return(dALCaseCountRecords); }
public List <CovidGlobalCaseCountDADto> FetchGlobalCasesFromAPI(Metrics metrics, Locations location) { WebRequest request = WebRequest.Create(configuration.GetSection("AppSettings")["covidConfirmedCasesAPI"]); if (metrics == Metrics.DEATHS) { request = WebRequest.Create(configuration.GetSection("AppSettings")["covidDeathsAPI"]); } else if (metrics == Metrics.RECOVERIES) { request = WebRequest.Create(configuration.GetSection("AppSettings")["covidRecoveriesAPI"]); } request.Method = "GET"; WebResponse response = request.GetResponse(); Stream dataStream = response.GetResponseStream(); StreamReader readerStream = new StreamReader(dataStream); Console.WriteLine(((HttpWebResponse)response).StatusDescription); string responseFromServer = readerStream.ReadToEnd(); //Console.WriteLine(responseFromServer); response.Close(); TextReader reader = new StringReader(responseFromServer); CsvReader csvReader = new CsvReader(reader, CultureInfo.InvariantCulture); dynamic records = csvReader.GetRecords <dynamic>(); List <CovidGlobalCaseCountBLDto> bALCaseCountRecords = new List <CovidGlobalCaseCountBLDto>(); Date latestDate = covidDataRepository.GetLastUpdateDate(metrics.ToDALMetrics(), location.ToDALocations()).Date; //IDictionary<string, object> caseCounts = new IDictionary; string csvRecordCompositeKey = ""; int counterKeys = 0; foreach (var rec in records) { counterKeys = 0; csvRecordCompositeKey = ""; foreach (KeyValuePair <string, object> count in rec) { if (count.Key == "Province/State" || count.Key == "Country/Region" || count.Key == "Lat" || count.Key == "Long") { csvRecordCompositeKey += (string)count.Value == "" ? "Null" + "_" : count.Value + "_"; } if (counterKeys > 3) { if (DateTime.Compare(DateTime.ParseExact(count.Key, "M/d/yy", System.Globalization.CultureInfo.InvariantCulture), latestDate) > 0) { CovidGlobalCaseCountBLDto caseRecord = new CovidGlobalCaseCountBLDto(); caseRecord.Date = DateTime.ParseExact(count.Key, "M/d/yy", System.Globalization.CultureInfo.InvariantCulture); caseRecord.Count = Convert.ToInt32(count.Value); caseRecord.dbCompositeKey = csvRecordCompositeKey.Remove(csvRecordCompositeKey.Length - 1); bALCaseCountRecords.Add(caseRecord); } } counterKeys++; } } var dALCaseCountRecords = Utils.Utilities.MapCaseCountsBLDTOtoDADTO(bALCaseCountRecords); return(dALCaseCountRecords); }
public static CovidCaseCountDADto ToCaseCountstDADto(this CovidGlobalCaseCountBLDto rec) { return(new CovidCaseCountDADto { dbCompositeKey = rec.dbCompositeKey, Date = rec.Date, Count = rec.Count }); }