Beispiel #1
0
        private static void WriteWorldResults(Region usRegion, List <VaccinationData> vaccinations)
        {
            // https://github.com/owid/covid-19-data/blob/master/public/data/vaccinations/vaccinations.csv

            var countdown      = File.ReadAllLines(filePath + "Countdown.txt")[0].Split(';');
            var countdownDay   = DateTime.Parse(countdown[0]);
            var countdownEvent = countdown[1];

            var previousId  = File.ReadAllLines(filePath + "Previously.txt")[0].Split(' ')[1];
            var previousURL = "https://www.shacknews.com/chatty?id=" + previousId;

            var checkDate       = DateTime.Today.AddDays(-2);
            var txtFile         = $"{DateTime.Now.ToString("MMdd")}_World.txt";
            var lines           = new List <string>();
            var current         = GetCurrentWorld();
            var change          = GetDailyResults(checkDate);
            var usChange        = usRegion.Change(DateTime.Today.AddDays(-1));
            var worldPopulation = 7742277000.0;

            usRegion.Population = 330079000.0;

            var worldVaccine         = vaccinations.OrderByDescending(v => v.date).FirstOrDefault();
            var worldVaccinePrevious = vaccinations.OrderByDescending(v => v.date).Skip(1).FirstOrDefault();
            var worldVaccineChange   = new VaccinationNumbers(DateTime.Today)
            {
                Total   = worldVaccine.total_vaccinations - worldVaccinePrevious.total_vaccinations,
                Partial = worldVaccine.people_vaccinated - worldVaccinePrevious.people_vaccinated,
                Fully   = worldVaccine.people_fully_vaccinated - worldVaccinePrevious.people_fully_vaccinated
            };
            var worldVaccinePercents = new VaccinationNumbers(DateTime.Today)
            {
                Total   = worldVaccine.total_vaccinations * 100.0 / worldPopulation,
                Partial = worldVaccine.people_vaccinated * 100.0 / worldPopulation,
                Fully   = worldVaccine.people_fully_vaccinated * 100.0 / worldPopulation
            };

            var usVaccine         = usRegion.Vaccinations.OrderByDescending(v => v.Date).FirstOrDefault();
            var usVaccinePercents = usRegion.VaccinePercentage();

            lines.Add($"*[b{{Corona Bucket}}b]*: {(countdownDay - DateTime.Today).Days} Days Till {countdownEvent}");
            lines.Add("");
            lines.Add($"b{{World Wide}}b totals s[pop. {worldPopulation.ToString("N0", CultureInfo.CurrentCulture)}]s:");
            lines.Add($"*[n[Total Doses Administered]n]*: {worldVaccine.total_vaccinations.ToString("N0", CultureInfo.CurrentCulture)} (+{worldVaccineChange.Total.ToString("N0", CultureInfo.CurrentCulture)})");
            //lines.Add($"*[At Least 1st Dose]*: {worldVaccine.people_vaccinated.ToString("N0", CultureInfo.CurrentCulture)} s[{(worldVaccinePercents.Partial).ToString("N2", CultureInfo.CurrentCulture)}%]s (+{worldVaccineChange.Partial.ToString("N0", CultureInfo.CurrentCulture)})");
            lines.Add($"*[b{{Fully Vaccinated}}b]*: {worldVaccine.people_fully_vaccinated.ToString("N0", CultureInfo.CurrentCulture)} s[{(worldVaccinePercents.Fully).ToString("N2", CultureInfo.CurrentCulture)}%]s (+{worldVaccineChange.Fully.ToString("N0", CultureInfo.CurrentCulture)})");
            lines.Add($"y{{Cases}}y: {current.Confirmed.ToString("N0", CultureInfo.CurrentCulture)} (+{(current.Confirmed - change.Confirmed).ToString("N0", CultureInfo.CurrentCulture)})");
            lines.Add($"r{{Deaths}}r: {current.Deaths.ToString("N0", CultureInfo.CurrentCulture)} (+{(current.Deaths - change.Deaths).ToString("N0", CultureInfo.CurrentCulture)})");
            lines.Add($"g{{Recovered}}g: {current.Recovered.ToString("N0", CultureInfo.CurrentCulture)} (+{(current.Recovered - change.Recovered).ToString("N0", CultureInfo.CurrentCulture)})");
            lines.Add($"p[Unresolved]p: {current.Unresolved.ToString("N0", CultureInfo.CurrentCulture)} (+{(current.Unresolved - change.Unresolved).ToString("N0", CultureInfo.CurrentCulture)})");
            lines.Add("");
            lines.Add($"r{{U}}rb[S]bb{{A}}b s[pop. {usRegion.Population.ToString("N0", CultureInfo.CurrentCulture)}]s totals:");
            lines.Add($"*[Total Doses]*: {usVaccine.Total.ToString("N0", CultureInfo.CurrentCulture)} (+{usRegion.VaccineChange().Total.ToString("N0", CultureInfo.CurrentCulture)})");
            lines.Add($"*[At Least 1st Dose]*: {usVaccine.Partial.ToString("N0", CultureInfo.CurrentCulture)} s[{(usVaccinePercents.Partial).ToString("N2", CultureInfo.CurrentCulture)}%]s (+{usRegion.VaccineChange().Partial.ToString("N0", CultureInfo.CurrentCulture)})");
            lines.Add($"*[Fully Vaccinated]*: {usVaccine.Fully.ToString("N0", CultureInfo.CurrentCulture)} s[{(usVaccinePercents.Fully).ToString("N2", CultureInfo.CurrentCulture)}%]s (+{usRegion.VaccineChange().Fully.ToString("N0", CultureInfo.CurrentCulture)})");
            lines.Add($"Cases: {usRegion.CurrentCases.Confirmed.ToString("N0", CultureInfo.CurrentCulture)} (+{usChange.Confirmed.ToString("N0", CultureInfo.CurrentCulture)})");
            lines.Add($"Deaths: {usRegion.CurrentCases.Deaths.ToString("N0", CultureInfo.CurrentCulture)} (+{usChange.Deaths.ToString("N0", CultureInfo.CurrentCulture)})");

            lines.Add("");
            lines.Add("b{/[COOL NEW VISUALS!]/}b (thanks y{watcherxp}y)");
            lines.Add("JHU’s Daily COVID-19 Data in Motion");
            lines.Add("https://coronavirus.jhu.edu/covid-19-daily-video");
            lines.Add("");
            lines.Add("Johns Hopkins University COVID-19 Dashboard");
            lines.Add("https://gisanddata.maps.arcgis.com/apps/opsdashboard/index.html#/bda7594740fd40299423467b48e9ecf6");
            lines.Add("");
            lines.Add("NYTimes US Hotspot Tracker");
            lines.Add("https://www.nytimes.com/interactive/2020/us/coronavirus-us-cases.html?#hotspots");
            lines.Add("");
            lines.Add("Folding @Home");
            lines.Add("https://foldingathome.org/");
            lines.Add("Join the Shacknews Folding@Home team to help fight COVID-19 https://apps.foldingathome.org/teamstats/team50784.html");
            lines.Add("");
            lines.Add($"#COVID19{DateTime.Today.ToString("yyyyMMdd")}");
            lines.Add($"Previously in the bucket: {previousURL}");

            File.WriteAllLines(Path.Combine(filePath, txtFile), lines);
        }
Beispiel #2
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);
        }