public async Task <QuickStatsModel> Handle(GetQuickstatsData request, CancellationToken cancellationToken) { var data = await _dataService.GetCurrentData(); var latestStats = GetLatestStatsFromLivedata(data); return(new QuickStatsModel { DatePublished = data?.DatePublished, DatePublishedString = data?.DatePublishedString, Totals = ParsedDataToApiModelsMapper.MapToInfectionsStatsModel(latestStats, data), History = data?.LiveUpdateData.OrderBy(x => x.Timestamp).Select(x => ParsedDataToApiModelsMapper.MapToInfectionsStatsModel(x, data)).ToArray() }); }
public async Task <DailyStatsModel> Handle(GetDailyStats request, CancellationToken cancellationToken) { var data = await _dataService.GetCurrentData(); if (data?.LiveUpdateData == null) { return(new DailyStatsModel() { History = new InfectionsStatsModel[0] }); } if (data.LiveUpdateData.Length == 1) { return(new DailyStatsModel() { DatePublished = data?.DatePublished, DatePublishedString = data?.DatePublishedString, History = new InfectionsStatsModel[] { ParsedDataToApiModelsMapper.MapToInfectionsStatsModel(data.LiveUpdateData.First(), data) } }); } List <InfectionsStatsModel> history = new List <InfectionsStatsModel>(); List <LiveUpdateData> oderedLiveData = data.LiveUpdateData.OrderBy(x => x.Timestamp).ToList(); LiveUpdateData previousDayData = null; foreach (var dayData in oderedLiveData) { var dayStats = GetDayDataDiff(previousDayData, dayData); history.Add(dayStats); previousDayData = dayData; } return(new DailyStatsModel() { DatePublished = data?.DatePublished, DatePublishedString = data?.DatePublishedString, History = history.ToArray() }); }