private InfectionsStatsModel GetDayDataDiff(LiveUpdateData previousDayData, LiveUpdateData dayData) { return(new InfectionsStatsModel { Confirmed = GetIntOrDefault(dayData?.NumberDiagnosed) - GetIntOrDefault(previousDayData?.NumberDiagnosed), Hospitalized = GetIntOrDefault(0) - GetIntOrDefault(0), // TODO: update when we have data for hospitalized Monitored = GetIntOrDefault(dayData?.NumberMonitoredAtHome) - GetIntOrDefault(previousDayData?.NumberMonitoredAtHome), Date = new DateTimeOffset(dayData.Timestamp).ToUnixTimeSeconds(), DateString = dayData.Timestamp.ToShortDateString(), Cured = GetIntOrDefault(dayData?.NumberCured) - GetIntOrDefault(previousDayData?.NumberCured), InQuarantine = GetIntOrDefault(dayData?.NumberQuarantined) - GetIntOrDefault(previousDayData?.NumberQuarantined), InIcu = GetIntOrDefault(0) - GetIntOrDefault(0), // TODO: update when we have data for InIcu }); }
public static InfectionsStatsModel MapToInfectionsStatsModel(LiveUpdateData liveData) { if (liveData == null) { return(new InfectionsStatsModel()); } var data = new InfectionsStatsModel() { Confirmed = liveData.NumberDiagnosed ?? 0, Cured = liveData.NumberCured ?? 0, Hospitalized = 0, InQuarantine = liveData.NumberQuarantined ?? 0, Monitored = liveData.NumberMonitoredAtHome ?? 0, InIcu = 0, Date = new DateTimeOffset(liveData.Timestamp).ToUnixTimeSeconds(), DateString = liveData.Timestamp.ToShortDateString() }; return(data); }
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() }); }
public static InfectionsStatsModel MapToInfectionsStatsModel(LiveUpdateData liveData, ParsedDataModel parsedData) { if (liveData == null) { return(new InfectionsStatsModel()); } var data = new InfectionsStatsModel() { Confirmed = liveData.NumberDiagnosed ?? 0, Cured = liveData.NumberCured ?? 0, Hospitalized = parsedData.PatientsInfo.Count(p => p.Condition == PatientCondition.Hospitalised), InQuarantine = liveData.NumberQuarantined ?? 0, Monitored = liveData.NumberMonitoredAtHome ?? 0, Deaths = parsedData.PatientsInfo.Count(p => p.Condition == PatientCondition.Deceased), InIcu = parsedData.PatientsInfo.Count(p => p.Condition == PatientCondition.ICU), Date = new DateTimeOffset(liveData.Timestamp).ToUnixTimeSeconds(), DateString = liveData.Timestamp.ToShortDateString() }; return(data); }