private string GetUri(CovidParameters covidParameters) { var uriBuilder = new UriBuilder(_httpClient.BaseAddress.AbsoluteUri + covidParameters.Uri); var query = HttpUtility.ParseQueryString(uriBuilder.Query); if (covidParameters.From > DateTime.MinValue && covidParameters.To > DateTime.MinValue) { query["from"] = covidParameters.From.ToString("yyyy-MM-dd'T'HH:mm:ss.fffffff'Z'"); query["to"] = covidParameters.To.ToString("yyyy-MM-dd'T'HH:mm:ss.fffffff'Z'"); uriBuilder.Query = query.ToString(); } return(uriBuilder.ToString().Replace(_httpClient.BaseAddress.AbsoluteUri, "")); }
public async Task <List <CovidDTO> > GetCovidDataAsync(CovidParameters covidParameters) { var uriWithParameters = GetUri(covidParameters); var httpResponse = await _httpClient.GetAsync(uriWithParameters); var covidDataList = new List <CovidDTO>(); if (httpResponse.IsSuccessStatusCode) { var content = await httpResponse.Content.ReadAsStringAsync(); covidDataList = JsonConvert.DeserializeObject <List <CovidDTO> >(content); return(covidDataList); } return(covidDataList); }
private async Task <bool> SaveCovidDataIntoDb() { var covidParameters = new CovidParameters(); var haveToSaveData = false; if (_covidDbContext.CovidData.Count() == 0) { covidParameters.Uri = uriDayOneTotal; haveToSaveData = true; } else { var lastSavedDate = _covidDbContext.CovidData.OrderByDescending(d => d.Date).First().Date; if (lastSavedDate < DateTime.Now) { covidParameters.Uri = uriByCountryTotal; covidParameters.From = lastSavedDate.AddDays(1); covidParameters.To = DateTime.Now; haveToSaveData = true; } } if (haveToSaveData) { var covidData = await GetCovidAsync(covidParameters); if (covidData.Count > 0) { covidData.OrderByDescending(d => d.Date); _covidDbContext.AddRange(covidData); _covidDbContext.SaveChanges(); return(true); } return(false); } return(false); }
private async Task <List <CovidDTO> > GetCovidAsync(CovidParameters covidParameters) { return(await _covidService.GetCovidDataAsync(covidParameters)); }