Example #1
0
 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;
            }
        }