private async Task <List <GraphRecord> > GetTotalCasesDonePerDayAsync() { var casesRecorded = (await TestCasesService.GetCummilativeCases()).ToList(); var casesPerDay = new[] { casesRecorded[0] }.Concat(casesRecorded.Zip(casesRecorded.Skip(1), (first, second) => new CaseStatus { Count = second.Count - first.Count, Date = second.Date, District = second.District })); return(casesPerDay.CastAsGraphRecord().ToList()); }
private async Task <List <GraphRecord> > GetTestStatsAsync() { const double keralaPopulationInMillion = 36; var casesRecorded = (await TestCasesService.GetCummilativeCases()).ToList(); var casesPerDay = new[] { casesRecorded[0] }.Concat(casesRecorded.Zip(casesRecorded.Skip(1), (first, second) => new CaseStatus { Count = second.Count - first.Count, Date = second.Date, District = second.District })); var result = new List <GraphRecord>(); result.Add(new GraphRecord { Date = casesRecorded.Max(x => x.Date), Key = "Total Tests", Value = casesRecorded.Max(x => x.Count) }); result.Add(new GraphRecord { Date = casesRecorded.Max(x => x.Date), Key = "Tests Per Million", Value = Math.Round(casesRecorded.Max(x => x.Count) / keralaPopulationInMillion) }); result.Add(new GraphRecord { Date = casesRecorded.Max(x => x.Date), Key = "Av. Tests(Last 5 Days)", Value = casesPerDay.OrderByDescending(x => x.Date).Take(5).Average(x => x.Count) }); result.Add(new GraphRecord { Date = casesRecorded.Max(x => x.Date), Key = "Max Tests On One Day", Value = casesPerDay.Skip(1).Max(x => x.Count) }); result.Add(new GraphRecord { Date = casesRecorded.Last().Date, Key = "Tests on Last Day", Value = casesPerDay.Last().Count }); return(result); }