private QuickStatsV2Model HandleGetQuickstatsV2Data(HistoricalPdfStats currentPdfData)
        {
            _logger.LogInformation($"Hanling {nameof(GetQuickstatsV2Data)}");

            var response = new QuickStatsV2Model()
            {
                History = new InfectionsStatsV2Model[0],
                Totals  = new InfectionsStatsV2Model()
            };

            response.DataLastUpdatedOn       = currentPdfData?.LasUpdatedOn ?? 0;
            response.DataLastUpdatedOnString = currentPdfData?.LasUpdatedOnString;

            if (currentPdfData?.CurrentDayStats == null)
            {
                return(response);
            }

            response.Totals = MapToInfectionsStatsV2Model(currentPdfData.CurrentDayStats);

            var history = currentPdfData.HistoricalData?
                          .Select(x => x.Value)
                          .Select(MapToInfectionsStatsV2Model)
                          .ToList() ?? new List <InfectionsStatsV2Model>();

            history.Add(response.Totals);

            response.History = history.OrderBy(x => x.DateString).Skip(1).ToArray();

            return(response);
        }
        private GenderStatsV2Model HandleGetGenderStatsV2(HistoricalPdfStats currentPdfData)
        {
            _logger.LogInformation($"Hanling {nameof(GetGenderStatsV2)}");

            var response = new GenderStatsV2Model();

            if (currentPdfData?.CurrentDayStats != null)
            {
                response.DatePublished       = currentPdfData.CurrentDayStats.ParsedOn;
                response.DatePublishedString = currentPdfData.CurrentDayStats.ParsedOnString;
                var percentageOfChildren = currentPdfData.CurrentDayStats.PercentageOfChildren;
                var percentageOfMen      = currentPdfData.CurrentDayStats.PercentageOfMen;
                var percentageOfWomen    = currentPdfData.CurrentDayStats.PercentageOfWomen;

                response.PercentageOfChildren = percentageOfChildren;
                response.PercentageOfMen      = percentageOfMen;
                response.PercentageOfWomen    = percentageOfWomen;
                response.TotalPercentage      = percentageOfChildren + percentageOfWomen + percentageOfMen;
                response.TotalNumber          = currentPdfData.CurrentDayStats.NumberInfected;
            }

            response.DataLastUpdatedOn       = currentPdfData?.LasUpdatedOn ?? 0;
            response.DataLastUpdatedOnString = currentPdfData?.LasUpdatedOnString;

            return(response);
        }
Ejemplo n.º 3
0
        private LastDataUpdateDetailsModel HandleGetLastDataUpdateDetails(HistoricalPdfStats currentPdfData)
        {
            _logger.LogInformation($"Hanling {nameof(GetLastDataUpdateDetails)}");

            var result = new LastDataUpdateDetailsModel();

            result.DataLastUpdatedOn       = currentPdfData?.LasUpdatedOn ?? 0;
            result.DataLastUpdatedOnString = currentPdfData?.LasUpdatedOnString;

            return(result);
        }
        private CountiesInfectionsModel HandleGetCountiesInfections(HistoricalPdfStats data)
        {
            var updateDetails = GetLastUpdatedDates(data, "counties");

            return(new CountiesInfectionsModel
            {
                Data = data?.CurrentDayStats?.CountyInfectionsNumbers?.Select(x => MapToCountyInfectionModel(x.Key, x.Value)).ToArray() ?? new CountyInfectionModel[0],
                LastUpdated = updateDetails.lastUpdatedOn,
                LastUpdatedString = updateDetails.lastUpdatedOnString,
                Stale = updateDetails.stale
            });
        }
        private AverageAgeModel HandleGetAverageAge(HistoricalPdfStats data)
        {
            var updateDetails = GetLastUpdatedDates(data, "averageAge");

            return(new AverageAgeModel()
            {
                LastUpdated = updateDetails.lastUpdatedOn,
                LastUpdatedString = updateDetails.lastUpdatedOnString,
                Stale = updateDetails.stale,
                Value = data?.CurrentDayStats?.AverageAge
            });
        }
        private LastDataUpdateDetailsModel HandleGetLastDataUpdateDetails(HistoricalPdfStats data)
        {
            _logger.LogInformation($"Hanling {nameof(GetLastDataUpdateDetails)}");

            var result        = new LastDataUpdateDetailsModel();
            var updateDetails = GetLastUpdatedDates(data, "");

            result.DataLastUpdatedOn       = updateDetails.lastUpdatedOn;
            result.DataLastUpdatedOnString = updateDetails.lastUpdatedOnString;

            result.Charts = data?.Charts?
                            .Select(x => new { key = x.Key, value = MapToChartDataDetailsModel(x.Value) })
                            .ToDictionary(x => x.key, y => y.value) ?? new Dictionary <string, ChartDataDetailsModel>();

            return(result);
        }
Ejemplo n.º 7
0
        private AgeHistogramV2Model HandleGetAgeHistogramV2(HistoricalPdfStats currentPdfData)
        {
            _logger.LogInformation($"Hanling {nameof(GetAgeHistogramV2)}");

            var response = new AgeHistogramV2Model()
            {
                Histogram = new Dictionary <AgeRange, int>()
            };

            if (currentPdfData?.CurrentDayStats != null)
            {
                response.DatePublished       = currentPdfData.CurrentDayStats.ParsedOn;
                response.DatePublishedString = currentPdfData.CurrentDayStats.ParsedOnString;
                response.Histogram           = currentPdfData.CurrentDayStats.DistributionByAge;
                response.Total = currentPdfData.CurrentDayStats.DistributionByAge.Sum(x => x.Value);
            }

            response.DataLastUpdatedOn       = currentPdfData?.LasUpdatedOn ?? 0;
            response.DataLastUpdatedOnString = currentPdfData?.LasUpdatedOnString;

            return(response);
        }
        private DailyStatsV2Model HandleGetDailyStatsV2(HistoricalPdfStats currentData)
        {
            _logger.LogInformation($"Hanling {nameof(GetDailyStatsV2)}");
            if (currentData?.CurrentDayStats == null)
            {
                return(null);
            }

            DailyStatsV2Model response = new DailyStatsV2Model()
            {
                CurrentDay = MapToDailyStats(currentData.CurrentDayStats)
            };

            if (currentData.HistoricalData != null)
            {
                var mappedLists = currentData.HistoricalData.Values
                                  .OrderBy(x => x.ParsedOnString)
                                  .Select(MapToDailyStats)
                                  .ToList();

                mappedLists.Insert(0, new DailyStats());
                mappedLists.Add(response.CurrentDay);

                response.History = mappedLists
                                   .Select((el, i) => new { index = i, data = el })
                                   .Where(x => x.index > 0)
                                   .Select(x => GetDailyStatsDiff(x.data, mappedLists[x.index - 1]))
                                   .Skip(1)
                                   .ToArray();
            }

            var updateDetails = GetLastUpdatedDates(currentData, "dailyStats");

            response.DataLastUpdatedOn       = updateDetails.lastUpdatedOn;
            response.DataLastUpdatedOnString = updateDetails.lastUpdatedOnString;
            response.Stale = updateDetails.stale;

            return(response);
        }
        private AgeHistogramV2Model HandleGetAgeHistogramV2(HistoricalPdfStats data)
        {
            _logger.LogInformation($"Hanling {nameof(GetAgeHistogramV2)}");
            var updateDetails = GetLastUpdatedDates(data, "ageHistogram");

            var response = new AgeHistogramV2Model
            {
                Histogram = new Dictionary <AgeRange, int>()
            };

            if (data?.CurrentDayStats != null)
            {
                response.DatePublished       = data.CurrentDayStats.ParsedOn;
                response.DatePublishedString = data.CurrentDayStats.ParsedOnString;
                response.Histogram           = data.CurrentDayStats.DistributionByAge;
                response.Total = data.CurrentDayStats.DistributionByAge.Sum(x => x.Value);
            }

            response.DataLastUpdatedOn       = updateDetails.lastUpdatedOn;
            response.DataLastUpdatedOnString = updateDetails.lastUpdatedOnString;
            response.Stale = updateDetails.stale;

            return(response);
        }
Ejemplo n.º 10
0
        private (string lastUpdatedOnString, long lastUpdatedOn, bool stale) GetLastUpdatedDates(HistoricalPdfStats data, string chartKey)
        {
            if (data?.Charts?.ContainsKey(chartKey) ?? false)
            {
                var chartDataDetails = data.Charts[chartKey];

                var lastUpdatedOnString = string.IsNullOrEmpty(chartDataDetails.LastUpdatedOn) ? data.LasUpdatedOnString : chartDataDetails.LastUpdatedOn;
                return(lastUpdatedOnString, -1, chartDataDetails.Stale);
            }


            return(data?.LasUpdatedOnString, -1, false);
        }