Ejemplo n.º 1
0
        /// <summary>
        /// Get latest data available on Database.
        /// </summary>
        /// <returns></returns>
        public static List <Region> FetchDatabase()
        {
            List <Region>      regions = new List <Region>();
            CoronaWatchContext context = new CoronaWatchContext();

            DateTime        currentDate    = System.DateTime.UtcNow.Date;
            DateTime        latestDateOnDB = Convert.ToDateTime(context.ReportDBs.Max(r => r.Date)).Date;
            List <RegionDB> regionDBs      = context.RegionDBs.ToList();
            List <ReportDB> reportDBs      = context.ReportDBs.ToList();

            foreach (RegionDB regionDB in regionDBs)
            {
                ReportDB  reportDB  = reportDBs.Where(r => r.ISOCode == regionDB.ISOCode).OrderByDescending(r => r.Date).Select(r => r).FirstOrDefault();
                Statistic statistic = new Statistic((int)reportDB.Confirmed, (int)reportDB.Recovered, (int)reportDB.Death)
                {
                    StatisticID = reportDB.ISOCode
                };
                Report report = new Report(Convert.ToDateTime(reportDB.Date).Date, statistic);
                Region region = new Region(regionDB.Name, Region.EnumLevel.Country, regionDB.Slug, regionDB.ISOCode)
                {
                    Report = report
                };
                regions.Add(region);
            }

            // Sort by Name, actually unneccesary. Can be delete to improve performance
            regions.Sort((x, y) => x.Name.CompareTo(y.Name));
            return(regions);
        }
Ejemplo n.º 2
0
        public static void UpdateDatabase()
        {
            try
            {
                CoronaWatchContext context = new CoronaWatchContext();

                // Updating Region List, if exist
                InitializeDatabase();

                // Check if the current data for ReportDB is exist. Note that ReportDB is equivalent to Report.
                // Different Name used to avoid confusion and ambiguity
                var client = new RestClient(API + "summary")
                {
                    Timeout = -1
                };
                var           request  = new RestRequest(Method.GET);
                IRestResponse response = client.Execute(request);
                var           json     = SimpleJson.DeserializeObject(response.Content);
                JObject       obj      = JObject.Parse(json.ToString());
                JsonArray     array    = (JsonArray)SimpleJson.DeserializeObject(obj["Countries"].ToString());

                foreach (JsonObject jsonObject in array)
                {
                    //DateTime APIdate = Convert.ToDateTime(Regex.Match(jsonObject["Date"].ToString(), @"\d{4}-\d{2}-\d{2}").Value);
                    DateTime APIdate     = DateTime.Parse(jsonObject["Date"].ToString(), null, System.Globalization.DateTimeStyles.RoundtripKind);
                    string   CountryName = jsonObject["CountryCode"].ToString();
                    if (context.ReportDBs.Where(r => r.Date == APIdate && r.ISOCode == CountryName).FirstOrDefault() == null)
                    {
                        ReportDB reportDB = new ReportDB
                        {
                            ISOCode   = jsonObject["CountryCode"].ToString(),
                            Confirmed = Convert.ToInt32(jsonObject["TotalConfirmed"].ToString()),
                            Recovered = Convert.ToInt32(jsonObject["TotalRecovered"].ToString()),
                            Death     = Convert.ToInt32(jsonObject["TotalDeaths"].ToString())
                        };
                        reportDB.Active = reportDB.Confirmed - reportDB.Recovered - reportDB.Death;
                        reportDB.Date   = APIdate;
                        context.ReportDBs.Add(reportDB);
                        context.SaveChanges();
                    }
                }
                MessageBox.Show("Successfully Updated DB");
            }
            catch (Exception e)
            {
                if (e.Message == "Invalid JSON string")
                {
                    MessageBox.Show(e.Message + "\nPlease Check Your Connection", "Error", MessageBoxButton.OK);
                }
                else
                {
                    MessageBox.Show(e.Message, "Error");
                }
            }
        }
Ejemplo n.º 3
0
        static void Main()
        {
            #region Testing Aldo
            try
            {
                var client = new RestClient(API + "summary")
                {
                    Timeout = -1
                };
                var           request  = new RestRequest(Method.GET);
                IRestResponse response = client.Execute(request);
                var           json     = SimpleJson.DeserializeObject(response.Content);
                JObject       obj      = JObject.Parse(json.ToString());
                JsonArray     array    = (JsonArray)SimpleJson.DeserializeObject(obj["Countries"].ToString());

                CoronaWatchContext context = new CoronaWatchContext();

                foreach (JsonObject jsonObject in array)
                {
                    string ISOCode = jsonObject["CountryCode"].ToString();
                    Console.WriteLine(ISOCode);
                    if (context.RegionDBs.Where(r => r.ISOCode == ISOCode).FirstOrDefault() == null)
                    {
                        RegionDB regionDB = new RegionDB
                        {
                            ISOCode = jsonObject["CountryCode"].ToString(),
                            Name    = jsonObject["Country"].ToString(),
                            Slug    = jsonObject["Slug"].ToString()
                        };
                        context.RegionDBs.Add(regionDB);
                        context.SaveChanges();
                    }
                    Console.WriteLine("ABC");
                }
            }
            catch (Exception e)
            {
                if (e.Message == "Invalid JSON string")
                {
                    Console.WriteLine(e.Message + "\nPlease Check Your Connection Error");
                }
                else
                {
                    Console.WriteLine(e.Message + "Error");
                }
            }
            #endregion

            Console.ReadLine();
        }
Ejemplo n.º 4
0
        public static void InitializeDatabase()
        {
            try
            {
                var client = new RestClient(API + "summary")
                {
                    Timeout = -1
                };
                var           request  = new RestRequest(Method.GET);
                IRestResponse response = client.Execute(request);
                var           json     = SimpleJson.DeserializeObject(response.Content);
                JObject       obj      = JObject.Parse(json.ToString());
                JsonArray     array    = (JsonArray)SimpleJson.DeserializeObject(obj["Countries"].ToString());

                CoronaWatchContext context = new CoronaWatchContext();

                foreach (JsonObject jsonObject in array)
                {
                    string ISOCode = jsonObject["CountryCode"].ToString();
                    if (context.RegionDBs.Where(r => r.ISOCode == ISOCode).FirstOrDefault() == null)
                    {
                        RegionDB regionDB = new RegionDB
                        {
                            ISOCode = jsonObject["CountryCode"].ToString(),
                            Name    = jsonObject["Country"].ToString(),
                            Slug    = jsonObject["Slug"].ToString()
                        };
                        context.RegionDBs.Add(regionDB);
                        context.SaveChanges();
                    }
                }
            }
            catch (Exception e)
            {
                if (e.Message == "Invalid JSON string")
                {
                    MessageBox.Show(e.Message + "\nPlease Check Your Connection", "Error", MessageBoxButton.OK);
                }
                else
                {
                    MessageBox.Show(e.Message, "Error");
                }
            }
        }
Ejemplo n.º 5
0
 private List <Region> GetRegion()
 {
     using (CoronaWatchContext context = new CoronaWatchContext())
     {
         List <Region>   regions   = new List <Region>();
         List <RegionDB> regionDBs = context.RegionDBs.ToList();
         foreach (RegionDB regionDB in regionDBs)
         {
             Region region = new Region()
             {
                 Name    = regionDB.Name,
                 Slug    = regionDB.Slug,
                 ISOCode = regionDB.ISOCode,
             };
             regions.Add(region);
         }
         return(regions);
     }
 }
Ejemplo n.º 6
0
        /*
         * public bool? IsAllItemsSelected
         * {
         *  get
         *  {
         *      var selected = _items.Select(item => item.IsSelected).Distinct().ToList();
         *      return selected.Count == 1 ? selected.Single() : (bool?)null;
         *  }
         *  set
         *  {
         *      if (value.HasValue)
         *      {
         *          SelectAll(value.Value, Items);
         *          OnPropertyChanged();
         *      }
         *  }
         * }
         *
         * private static void SelectAll(bool select, IEnumerable<RegionGridsViewModel> models)
         * {
         *  foreach (var model in models)
         *  {
         *      model.IsSelected = select;
         *  }
         * }
         */



        public static ObservableCollection <RegionGridsViewModel> GenerateData()
        {
            CoronaWatchContext context = new CoronaWatchContext();

            if (context.ReportDBs.Count() == 0)
            {
                JHUDataService.UpdateDatabase();
            }

            List <Region> regions = JHUDataService.FetchDatabase();
            ObservableCollection <RegionGridsViewModel> regionGrids = new ObservableCollection <RegionGridsViewModel>();

            foreach (Region reg in regions)
            {
                RegionGridsViewModel regGrid = new RegionGridsViewModel(reg);
                regionGrids.Add(regGrid);
            }

            _lastUpdate = Convert.ToDateTime(context.ReportDBs.OrderByDescending(r => r.Date).FirstOrDefault().Date);
            return(regionGrids);
        }