private static void ImportVenus(string section, string[] categories, string keyword)
        {
            using (var dbContext = new DistrictsInTownModelContainer())
            {
                int chunkSize = 50;
                int offset = 0;

                ForesquareVenueResult result;
                do
                {
                    result = ExploreVenues(offset, chunkSize, "Berlin, DE", section, categories, keyword).Result;
                    offset += chunkSize;

                    WriteVenues(result.Venues);

                    foreach (var venue in result.Venues)
                        AddVenueToDatabase(dbContext, venue);

                    try
                    {
                        dbContext.SaveChanges();
                    }
                    catch (Exception error)
                    {

                    }

                    Console.WriteLine("Total results: {0}", result.TotalResults);
                }
                while (offset < result.TotalResults);
            }
        }
        /// <summary>
        ///     Gets a collection with object of type <see cref="Place" /> filtered by keywords.
        /// </summary>
        /// <param name="keyword">A list of keywords to narrow the result.</param>
        /// <returns>A collection of <see cref="Place" /> items.</returns>
        public IEnumerable<Place> Get(IList<string> keyword)
        {
            if (!keyword.Any())
            {
                return Enumerable.Empty<Place>();
            }

            using (var container = new DistrictsInTownModelContainer())
            {
                return ToPlaceList(container.Places.Where(p => keyword.Contains(p.Keyword)));
            }
        }
        private static void AddVenueToDatabase(DistrictsInTownModelContainer dbContext, ForesquareVenue venue)
        {
            if (String.IsNullOrEmpty(venue.ZipCode))
                return;

            dbContext.Places.Add(new Places
            {
                Location = DbGeography.FromText(String.Format("POINT ({0} {1})", venue.Longitude, venue.Latitude)),
                Keyword = venue.Keyword,
                Score = venue.Score,
                Source = venue.Source,
                Zip = venue.ZipCode
            });
        }
        private void AddArticlesToDB(DistrictsInTownModelContainer dbContext, KeyValuePair<string, List<News>> district, decimal min, decimal max)
        {
            dbContext.Places.RemoveRange(dbContext.Places.Where(p => p.Source.StartsWith("ipool_")));
            foreach (var news in district.Value)
            {

                dbContext.Places.Add(new Places
                {
                    Location = DbGeography.FromText(district.Key),
                    Keyword = "popular",
                    Score = (double) news.GetScore(min, max),
                    Source = "ipool_" + news.ID,
                    Zip = Program.PLZ.ContainsKey(district.Key) ? Program.PLZ[district.Key] : "10409"
                });
            }
        }
        /// <summary>
        ///     Saves <see cref="Place" /> items with new zip codes.
        /// </summary>
        /// <param name="places">The <see cref="Place" /> items that should be saved.</param>
        public void This(IEnumerable<Place> places)
        {
            using (var container = new DistrictsInTownModelContainer())
            {
                foreach (var place in places)
                {
                    var placeToUpdate = container.Places.SingleOrDefault(p => p.Source == place.Source);

                    if (placeToUpdate == null)
                    {
                        continue;
                    }

                    placeToUpdate.Zip = place.ZipCode;
                }

                container.SaveChanges();
            }
        }
        public void Save(Dictionary<string, List<News>> news)
        {
            decimal min = news.Min(n => n.Value.Min(m => m.RawScore));
            decimal max = news.Max(n => n.Value.Max(m => m.RawScore));

            using (var dbContext = new DistrictsInTownModelContainer())
            {
                foreach (var district in news)
                    AddArticlesToDB(dbContext, district, min, max);

                try
                {
                    dbContext.SaveChanges();
                }
                catch (Exception error)
                {
                    Console.WriteLine(error.StackTrace);
                }

                Console.WriteLine("Total results: {0}", news.Sum(n => n.Value.Count));
            }
        }
        /// <summary>
        ///     Gets a collection with all available objects of type <see cref="Place" />.
        /// </summary>
        /// <returns>A collection of <see cref="Place" /> items.</returns>
        public IEnumerable<Place> Get()
        {
            var container = new DistrictsInTownModelContainer();

            return ToPlaceList(container.Places);
        }