Пример #1
0
        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);
        }
Пример #2
0
        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");
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
 public async Task CreateCaseNumbers(CaseNumbers caseNumbers)
 {
     caseNumbers.TimeStamp = DateTime.Now;
     await _context.CaseNumbers.InsertOneAsync(caseNumbers);
 }