Beispiel #1
0
        /// <summary>
        /// Downloads and processes the data to extract top makelaars
        /// </summary>
        /// <param name="city"></param>
        /// <param name="withGarden"></param>
        /// <param name="pageSize">this parameter can be assigned by </param>
        /// <returns></returns>
        public IEnumerable <string> GetTopMakelaars(string city, bool withGarden = false, int take = 10)
        {
            try
            {
                var downloadTask = this.downloader.DownloadData(GetPath(city, 1, this.pageSize, withGarden));
                downloadTask.Wait();
                var result = downloadTask.Result;

                var totalPages = (int)result["Paging"]["AantalPaginas"].Value;
                var dict       = new Dictionary <string, int>();

                for (var i = 2; i <= totalPages; i++)
                {
                    foreach (var obj in result["Objects"])
                    {
                        var makelaarNaam = (string)obj["MakelaarNaam"].Value;
                        if (dict.ContainsKey(makelaarNaam))
                        {
                            dict[makelaarNaam] += 1;
                        }
                        else
                        {
                            dict.Add(makelaarNaam, 1);
                        }
                    }

                    // for demo purpose, or even usefull for some cases ...
                    OnProgressEventHandler?.Invoke(i - 1, totalPages);

                    Thread.Sleep(100);
                    downloadTask = this.downloader.DownloadData(GetPath(city, i, this.pageSize, withGarden));
                    downloadTask.Wait();
                    result = downloadTask.Result;
                }

                var sorted = (from entry in dict orderby entry.Value descending select $"{entry.Key} ({entry.Value})").Take(take);
                return(sorted);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Problem downloading data for [{ex.Message}]");
                return(null);
            }
        }
Beispiel #2
0
 public void Set_OnProgressDelegate(OnProgressEventHandler deleg)
 {
     OnProgressDelegate = deleg;
 }
Beispiel #3
0
 public bool Is_OnProgressDelegate(OnProgressEventHandler deleg)
 {
     return(OnProgressDelegate == deleg);
 }