private void SetRatio(Area region, RegionRateRecord record) { if (record.Daily.HasValue) { record.Rate = (record.Daily.Value * 100000) / (double)region.TotalPopulation(); } else { record.Rate = null; } }
public Result <RegionRateRecord> Transform(List <Area> regions, QueryResponce <RegionBreakdownQueryModel> resultToday, QueryResponce <RegionBreakdownQueryModel> resultYesterday) { var records = new List <RegionRateRecord>(); var todayRecords = resultToday.Data.Where(d => d.Date == TargetDate.Date).ToList(); var yesterdayRecords = resultYesterday.Data.Where(d => d.Date == TargetDate.AddDays(-1).Date).ToList(); foreach (var region in regions) { var today = todayRecords.FirstOrDefault(r => r.Code == region.Code); var yesterday = yesterdayRecords.FirstOrDefault(r => r.Code == region.Code); var record = new RegionRateRecord() { Name = region.DisplayName(), Date = TargetDate.Date, Daily = today?.DailyCases, Delta = today?.DailyCases - yesterday?.DailyCases }; SetRatio(region, record); records.Add(record); } records = records.OrderByDescending(r => r.Rate).ToList(); return(new Result <RegionRateRecord>() { Records = records, QueryRecords = new List <QueryRecord>() { new QueryRecord() { Name = QueryNameToday, Url = resultToday.Url }, new QueryRecord() { Name = QueryNameYesterday, Url = resultYesterday.Url } } }); }