public CoronaDto(CoronaResponse response) : base(response) { if (response != null) { LastChecked = response.ListCovidData.LastChecked; Covid19s = new ObservableCollection <Covid19Stats>(response.ListCovidData.Covid19Stats); } }
async Task LoadcoronaData() { if (String.IsNullOrEmpty(Querry)) { await Application.Current.MainPage.DisplayAlert("Erreur", "Vous n'avez pas saisi.", "OK"); } if (IsBusy) { return; } IsBusy = true; var client = HttpService.GetInstance(); try { var result = await client.GetAsync($"https://api.thevirustracker.com/free-api?countryTimeline=" + Querry); var serializedResponse = await result.Content.ReadAsStringAsync(); CoronaResponse response = JsonConvert.DeserializeObject <CoronaResponse>(serializedResponse); if (response.CountryData == null || response.CountryStats == null) { Device.BeginInvokeOnMainThread(async() => { await App.Current.MainPage.DisplayAlert("Erreur", "Pays non trouvé", "OK"); }); IsBusy = false; return; } //Transformation de la propriété CountryStats de CoronaResponse en Dictionnaire car ses propriétés sont dynamiques (dates) Dictionary <string, object> dicStats = JsonConvert.DeserializeObject <Dictionary <string, object> >(response.CountryStats.FirstOrDefault().ToString()); //Récupération de l'objet correspondant à la date de la veille dans le dictionnaire var value = dicStats[DateTime.Now.AddDays(-1).ToString("M/d/yy")]; //Deserialisation de l'objet en CountryStatistic CountryStatistic stats = JsonConvert.DeserializeObject <CountryStatistic>(value.ToString()); ShowInfo = true; CountryName = response.CountryData.FirstOrDefault().Info.Name; NewCases = stats.NewCases; NewDeaths = stats.NewDeaths; TotalCases = stats.TotalCases; TotalRecoveries = stats.TotalRecoveries; TotalDeaths = stats.TotalDeaths; Date = DateTime.Now.AddDays(-1).ToString("dd/MM/yyyy"); IsBusy = false; } catch (Exception e) { Device.BeginInvokeOnMainThread(async() => { await App.Current.MainPage.DisplayAlert("Erreur", "Pays non trouvé", "OK"); }); IsBusy = false; } }