public QueryResponce <T> DoQuery() { var urlGenerator = new UrlGenerator() { Options = Options, StructureType = typeof(T) }; var url = urlGenerator.GetUrl(); var client = new QueryClient() { Url = url }; var textResult = ""; textResult = client.DoQuery(); if (string.IsNullOrEmpty(textResult)) { var nullResult = new QueryResponce <T>() { Data = new List <T>(), Length = 0, Pagination = null, Url = url }; return(nullResult); } var json = JsonConvert.DeserializeObject <QueryResponce <T> >(textResult); json.Url = url; return(json); }
public QueryResponce <T> GetEmptyQuery() { var urlGenerator = new UrlGenerator() { Options = Options, StructureType = typeof(T) }; var url = urlGenerator.GetUrl(); var nullResult = new QueryResponce <T>() { Data = new List <T>(), Length = 0, Pagination = null, Url = url }; return(nullResult); }
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 } } }); }
public Result <RegionProgressRecord> Transform(List <Area> regions, QueryResponce <RegionVaccineProgressQueryModel> resultToday, QueryResponce <RegionVaccineProgressQueryModel> resultYesterday) { var records = new List <RegionProgressRecord>(); var todayRecords = resultToday.Data.Where(d => d.Date == TargetDate.Date.AddDays(-1).Date).ToList(); var yesterdayRecords = resultYesterday.Data.Where(d => d.Date == TargetDate.AddDays(-2).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 regionStats = region; long? firstDoseTotal = null; long? firstDoseNew = null; double?firstDosePercentageProgress = null; double?firstDoseIncrease = null; if (today?.FirstDoseNew != null && today?.FirstDoseCum != null) { firstDoseTotal = today?.FirstDoseCum; firstDoseNew = today?.FirstDoseNew; firstDosePercentageProgress = ((double)today.FirstDoseCum / (double)regionStats.TwelveOrMorePopulation()) * (double)100; if (yesterday?.FirstDoseCum != null) { var percentageYesterday = ((double)yesterday.FirstDoseCum / (double)regionStats.TwelveOrMorePopulation()) * (double)100; firstDoseIncrease = firstDosePercentageProgress - percentageYesterday; } } long? secondDoseTotal = null; long? secondDoseNew = null; double?secondDosePercentageProgress = null; double?secondDoseIncrease = null; if (today?.SecondDoseNew != null && today?.SecondDoseCum != null) { secondDoseTotal = today?.SecondDoseCum; secondDoseNew = today?.SecondDoseNew; secondDosePercentageProgress = ((double)today.SecondDoseCum / (double)regionStats.TwelveOrMorePopulation()) * (double)100; if (yesterday?.SecondDoseCum != null) { var percentageYesterday = ((double)yesterday.SecondDoseCum / (double)regionStats.TwelveOrMorePopulation()) * (double)100; secondDoseIncrease = secondDosePercentageProgress - percentageYesterday; } } long? thirdDoseTotal = null; long? thirdDoseNew = null; double?thirdDosePercentageProgress = null; double?thirdDoseIncrease = null; if (today?.ThirdDoseNew != null && today?.ThirdDoseCum != null) { thirdDoseTotal = today?.ThirdDoseCum; thirdDoseNew = today?.ThirdDoseNew; thirdDosePercentageProgress = ((double)today.ThirdDoseCum / (double)regionStats.TwelveOrMorePopulation()) * (double)100; if (yesterday?.ThirdDoseCum != null) { var percentageYesterday = ((double)yesterday.ThirdDoseCum / (double)regionStats.TwelveOrMorePopulation()) * (double)100; thirdDoseIncrease = thirdDosePercentageProgress - percentageYesterday; } } var record = new RegionProgressRecord() { Name = region.DisplayName(), Date = TargetDate.Date, FirstDoseTotal = firstDoseTotal, FirstDoseDailyIncrease = firstDoseNew, FirstDosePercentageProgress = firstDosePercentageProgress, FirstDoseIncrease = firstDoseIncrease, SecondDoseTotal = secondDoseTotal, SecondDoseDailyIncrease = secondDoseNew, SecondDosePercentageProgress = secondDosePercentageProgress, SecondDoseIncrease = secondDoseIncrease, ThirdDoseTotal = thirdDoseTotal, ThirdDoseDailyIncrease = thirdDoseNew, ThirdDosePercentageProgress = thirdDosePercentageProgress, ThirdDoseIncrease = thirdDoseIncrease }; records.Add(record); } records = records.OrderByDescending(r => r.FirstDosePercentageProgress).ToList(); return(new Result <RegionProgressRecord>() { Records = records, QueryRecords = new List <QueryRecord>() { new QueryRecord() { Name = QueryNameToday, Url = resultToday.Url }, new QueryRecord() { Name = QueryNameYesterday, Url = resultYesterday.Url } } }); }