Пример #1
0
        private async Task GetCovidData(string countyName, int criticalDaysCount)
        {
            var covidRecords = await CovidDataService.GetCovidDataByCounty(countyName);

            DateTime lastUpdate = covidRecords.Select(x => x.Date).OrderByDescending(x => x.Date).FirstOrDefault();

            LastUpdateDate = lastUpdate;

            var covidDataHelper = new CovidDataHelper();

            covidDataHelper.PopulateAggregatesCovidData(covidRecords, SelectedCounty, criticalDaysCount);
            covidDataHelper.PopulateCountyAggregates(covidRecords, SelectedCounty, lastUpdate, criticalDaysCount);

            CovidDataList = covidRecords;
            StateHasChanged();
        }
Пример #2
0
        public static async Task <HttpResponseMessage> GetData([HttpTrigger(AuthorizationLevel.Anonymous, "get")] HttpRequest req, ILogger log)
        {
            string FilterString = req.Query["filter"];
            string latString    = req.Query["latitude"];
            string lonString    = req.Query["longitude"];

            log.LogInformation("Filter: " + FilterString);
            log.LogInformation("Latitude: " + latString);
            log.LogInformation("Longitude: " + lonString);

            List <string> FilterParts = new List <string>();

            if (FilterString != null)
            {
                List <string> Splitter = new List <string>();
                Splitter.Add(",");
                string[] parts = FilterString.Split(Splitter.ToArray(), StringSplitOptions.None);
                foreach (string p in parts)
                {
                    FilterParts.Add(p.Replace("_", " "));
                }
                log.LogInformation(FilterParts.Count.ToString() + " filters");
            }
            else
            {
                log.LogInformation("No filters supplied!");
            }

            log.LogInformation("Downloading data...");
            CovidDataHelper cdh    = new CovidDataHelper();
            Area            global = await cdh.GetGlobalDataAsync();

            //Filtering based on the filters
            Area core = null;

            if (FilterParts.Count > 0)
            {
                log.LogInformation("Filtering data...");
                core = cdh.ChainFilter(global, FilterParts.ToArray());
            }
            else
            {
                core = global;
            }

            if (core == null)
            {
                throw new Exception();
            }


            //Sort by distance
            if (latString != null && lonString != null)
            {
                log.LogInformation("Converting lat & lon to float...");
                float mlat = 0;
                float mlon = 0;
                try
                {
                    mlat = Convert.ToSingle(latString);
                    mlon = Convert.ToSingle(lonString);
                }
                catch
                {
                    throw new Exception();
                }

                log.LogInformation("Sorting based on provided latitude and longitude...");
                Area[] sorted = cdh.DistanceSort(core.areas, mlat, mlon);

                //Set it as the areas child now
                core.areas = sorted;
            }
            else
            {
                log.LogInformation("No need to sort by distance because a lat and long were not provided.");
            }

            //Return
            string json = JsonConvert.SerializeObject(core);
            HttpResponseMessage ToReturn = new HttpResponseMessage(HttpStatusCode.OK);
            StringContent       sc       = new StringContent(json, Encoding.UTF8, "application/json");

            ToReturn.Content = sc;
            return(ToReturn);
        }