static CaseNumbers GetCurrentState(string state) { Console.WriteLine($"Get Current State: {state}"); var cases = new CaseNumbers(DateTime.Today); var jsonString = GetJsonString($"https://api.covidtracking.com/v1/states/{state}/current.json"); if (!string.IsNullOrWhiteSpace(jsonString)) { try { var settings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore }; var jsonData = JsonConvert.DeserializeObject <StateResultData>(jsonString, settings); if (jsonData != null) { cases.Confirmed = jsonData.positive; cases.Deaths = jsonData.death; cases.Recovered = jsonData.recovered; cases.Hospitalized = jsonData.hospitalizedCurrently; cases.HospitalizedChange = jsonData.hospitalizedIncrease; } } catch (Exception ex) { Console.WriteLine(ex.Message); } } return(cases); }
private static void WriteCsvResults(List <ResultData> resultData) { var txtFile = $"{DateTime.Now.ToString("MMdd")}_csv.txt"; var txtLines = new List <string>(); txtLines.Add("Date Cases(World) Deaths(World) Recovered(World) Cases(US) Deaths(US) Recovered(US)"); for (var i = startDate; i < DateTime.Today; i = i.AddDays(1)) { var dayList = resultData.Where(d => d.date == i && d.confirmed != ""); var worldCases = new CaseNumbers(i); var usCases = new CaseNumbers(i); foreach (var item in dayList) { double.TryParse(item.confirmed, out double confirmed); double.TryParse(item.deaths, out double deaths); double.TryParse(item.recovered, out double recovered); worldCases.Confirmed += confirmed; worldCases.Deaths += deaths; worldCases.Recovered += recovered; if (item.countryRegion == "US") { usCases.Confirmed += confirmed; usCases.Deaths += deaths; usCases.Recovered += recovered; } } var line = $"{i:yyyy-MM-dd} {worldCases.Confirmed} {worldCases.Deaths} {worldCases.Recovered} {usCases.Confirmed} {usCases.Deaths} {usCases.Recovered}"; txtLines.Add(line); } File.WriteAllLines(Path.Combine(filePath, txtFile), txtLines); Console.WriteLine("Write to world file successful"); }
static CaseNumbers GetCurrentCountry(string country) { Console.WriteLine($"Get Current Country: {country}"); var cases = new CaseNumbers(DateTime.Today); var jsonString = GetJsonString($"https://covid19.mathdro.id/api/countries/{country}"); if (!string.IsNullOrWhiteSpace(jsonString)) { try { var jsonData = JsonConvert.DeserializeObject <CountryResultData>(jsonString); cases.Confirmed = (jsonData.confirmed != null) ? jsonData.confirmed.value : 0; cases.Deaths = (jsonData.deaths != null) ? jsonData.deaths.value : 0; cases.Recovered = (jsonData.recovered != null) ? jsonData.recovered.value : 0; } catch (Exception ex) { Console.WriteLine(ex.Message); } } return(cases); }
static CaseNumbers GetDailyResults(DateTime date) { Console.WriteLine($"GetDailyResults: {date}"); var cases = new CaseNumbers(date); var jsonString = GetJsonString($"https://covid19.mathdro.id/api/daily/{date.ToString("MM-dd-yyyy")}"); if (!string.IsNullOrWhiteSpace(jsonString)) { try { var jsonData = JsonConvert.DeserializeObject <List <ResultData> >(jsonString); foreach (var item in jsonData) { if (!string.IsNullOrWhiteSpace(item.confirmed)) { double.TryParse(item.confirmed, out double confirmed); cases.Confirmed += confirmed; } if (!string.IsNullOrWhiteSpace(item.deaths)) { double.TryParse(item.deaths, out double deaths); cases.Deaths += deaths; } if (!string.IsNullOrWhiteSpace(item.recovered)) { double.TryParse(item.recovered, out double recovered); cases.Recovered += recovered; } } } catch (Exception ex) { Console.WriteLine(ex.Message); } } return(cases); }
private static List <Region> SortResults(List <ResultData> resultData, List <VaccinationData> vacsList, List <VaccinationData> vacsUSList) { var regionList = new List <Region>(); var countryList = GetCountryList(); var stateList = GetStateList(); for (var i = startDate; i < DateTime.Today; i = i.AddDays(1)) { Console.WriteLine($"Sorting {i}"); var dayList = resultData.Where(d => d.date == i && d.confirmed != ""); foreach (var item in dayList) { var caseNumbers = new CaseNumbers(i); double.TryParse(item.confirmed, out double confirmed); double.TryParse(item.deaths, out double deaths); double.TryParse(item.recovered, out double recovered); caseNumbers.Confirmed = confirmed; caseNumbers.Deaths = deaths; caseNumbers.Recovered = recovered; var region = regionList.SingleOrDefault(r => r.Name == item.countryRegion); if (region == null) { region = new Region(item.countryRegion); var countryInfo = countryList.countries.SingleOrDefault(c => c.name == region.Name); if (countryInfo != null) { region.Iso2 = countryInfo.iso2; region.Iso3 = countryInfo.iso3; region.CurrentCases = GetCurrentCountry(region.Iso2); } foreach (var vac in vacsList.Where(v => v.iso_code == region.Iso3)) { var vaccineNumber = new VaccinationNumbers(vac.date); vaccineNumber.Total = vac.total_vaccinations; vaccineNumber.Daily = vac.daily_vaccinations_raw; vaccineNumber.Partial = vac.people_vaccinated; vaccineNumber.Fully = vac.people_fully_vaccinated; region.Vaccinations.Add(vaccineNumber); } if (region.Vaccinations.Count == 0) { region.Vaccinations.Add(new VaccinationNumbers(DateTime.Today.AddDays(-1))); } if (region.Vaccinations.SingleOrDefault(v => v.Date == DateTime.Today.AddDays(-1)) == null) { var previousVac = region.Vaccinations.OrderByDescending(v => v.Date).First(); var newVac = new VaccinationNumbers(DateTime.Today.AddDays(-1)); newVac.Total = previousVac.Total; newVac.Partial = previousVac.Partial; newVac.Fully = previousVac.Fully; region.Vaccinations.Add(newVac); } regionList.Add(region); } var stateName = item.provinceState; if (string.IsNullOrWhiteSpace(stateName)) { stateName = item.countryRegion; } var state = region.States.SingleOrDefault(s => s.Name == stateName); if (state == null) { state = new State(stateName); if (region.Iso2 == "US") { var stateInfo = stateList.states.SingleOrDefault(s => s.State == state.Name); if (stateInfo != null) { state.Abbr = stateList.states.SingleOrDefault(s => s.State == state.Name).Code; state.Population = stateList.states.SingleOrDefault(s => s.State == state.Name).Population; if (!string.IsNullOrWhiteSpace(state.Abbr)) { state.CurrentCases = GetCurrentState(state.Abbr); } } foreach (var vac in vacsUSList.Where(v => v.location.Contains(state.Name))) { var vaccineNumber = new VaccinationNumbers(vac.date); vaccineNumber.Total = vac.total_vaccinations; vaccineNumber.Daily = vac.daily_vaccinations_raw; vaccineNumber.Partial = vac.people_vaccinated; vaccineNumber.Fully = vac.people_fully_vaccinated; state.Vaccinations.Add(vaccineNumber); } if (state.Vaccinations.Count == 0) { state.Vaccinations.Add(new VaccinationNumbers(DateTime.Today.AddDays(-1))); } if (state.Vaccinations.Where(v => v.Date == DateTime.Today.AddDays(-1)) == null) { var previousVac = state.Vaccinations.OrderByDescending(v => v.Date).First(); var newVac = new VaccinationNumbers(DateTime.Today.AddDays(-1)); newVac.Total = previousVac.Total; newVac.Partial = previousVac.Partial; newVac.Fully = previousVac.Fully; state.Vaccinations.Add(newVac); } } state.Cases.Add(caseNumbers); region.States.Add(state); } else { var cases = state.Cases.SingleOrDefault(c => c.Date == caseNumbers.Date); if (cases == null) { state.Cases.Add(caseNumbers); } else { cases.Confirmed += caseNumbers.Confirmed; cases.Deaths += caseNumbers.Deaths; cases.Recovered += caseNumbers.Recovered; } } } } return(regionList); }
public async Task CreateCaseNumbers(CaseNumbers caseNumbers) { caseNumbers.TimeStamp = DateTime.Now; await _context.CaseNumbers.InsertOneAsync(caseNumbers); }