/// <summary>
        /// Gets city item details for secondary tile
        /// </summary>
        /// <param name="parameterValue"></param>
        /// <param name="categoryName"></param>
        /// <param name="currentLocation"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public void GetTileCityItemDetails(string parameterValue, GovFinderData cityDetail, Altitude currentLocation, string compositeKey)
        {
            try
            {
                var responseText = string.Empty;
                if (NetworkInterface.GetIsNetworkAvailable())
                {
                    //HttpClient client = new HttpClient();
                    //HttpResponseMessage response = client.GetAsync(parameterValue).Result;

                    //response.EnsureSuccessStatusCode();
                    //string responseBody = response.Content.ReadAsStringAsync().Result;

                    //List<CityData> tempCityDataList = new List<CityData>();
                    //var dataSetItems = Newtonsoft.Json.JsonConvert.DeserializeObject<List<CityAllData>>(responseBody);
                    //if (dataSetItems != null)
                    //{
                    //    foreach (var item in dataSetItems)
                    //    {
                    //        try
                    //        {
                    //            POSH.Socrata.Entity.Models.CityData cityData = new POSH.Socrata.Entity.Models.CityData();
                    //            cityData.Coordinate = new Altitude();

                    //            if (!string.IsNullOrEmpty(item.address))
                    //            {
                    //                cityData.Address = item.address.ToString();
                    //            }
                    //            else if (!string.IsNullOrEmpty(item.human_address))
                    //            {
                    //                cityData.Address = item.human_address.ToString();
                    //            }
                    //            else if (!string.IsNullOrEmpty(item.street_address))
                    //            {
                    //                cityData.Address = item.street_address.ToString();
                    //            }
                    //            else
                    //            {
                    //                cityData.Address = "No address";
                    //            }

                    //            if (!string.IsNullOrEmpty(item.latitude))
                    //            {
                    //                cityData.Coordinate.Latitude = Convert.ToDouble(item.latitude.ToString());
                    //            }
                    //            else if (item.location != null && !string.IsNullOrEmpty(item.location.latitude))
                    //            {
                    //                cityData.Coordinate.Latitude = Convert.ToDouble(item.location.latitude.ToString());
                    //            }
                    //            else
                    //            {
                    //                cityData.Coordinate.Latitude = 0;
                    //            }

                    //            if (!string.IsNullOrEmpty(item.longitude))
                    //            {
                    //                cityData.Coordinate.Longitude = Convert.ToDouble(item.longitude.ToString());
                    //            }
                    //            else if (item.location != null && !string.IsNullOrEmpty(item.location.longitude))
                    //            {
                    //                cityData.Coordinate.Longitude = Convert.ToDouble(item.location.longitude.ToString());
                    //            }
                    //            else
                    //            {
                    //                cityData.Coordinate.Longitude = 0;
                    //            }

                    //            if (cityData.Coordinate.Latitude == 0 && cityData.Coordinate.Longitude == 0)
                    //            {
                    //                cityData.Distance = "No distance";
                    //            }
                    //            else
                    //            {
                    //                var distance = CityDetailsViewModel.CalculateDistance(currentLocation.Latitude, currentLocation.Longitude, cityData.Coordinate.Latitude, cityData.Coordinate.Longitude);
                    //                cityData.Distance = distance.ToString() + " miles";
                    //            }

                    //            if (!string.IsNullOrEmpty(item.phone))
                    //            {
                    //                cityData.Phone = item.phone.ToString();
                    //            }
                    //            else
                    //            {
                    //                cityData.Phone = "No phone number";
                    //            }

                    //            if (!string.IsNullOrEmpty(item.name))
                    //            {
                    //                cityData.Name = item.name.ToString();
                    //            }
                    //            else if (!string.IsNullOrEmpty(item.station_name))
                    //            {
                    //                cityData.Name = item.station_name.ToString();
                    //            }
                    //            else if (!string.IsNullOrEmpty(item.architect))
                    //            {
                    //                cityData.Name = item.architect.ToString();
                    //            }
                    //            else if (!string.IsNullOrEmpty(item.Event))
                    //            {
                    //                cityData.Name = item.Event.ToString();
                    //            }
                    //            else
                    //            {
                    //                cityData.Name = "No name";
                    //            }

                    //            if (!string.IsNullOrEmpty(item.sub_category))
                    //            {
                    //                cityData.SubTitle = item.sub_category;
                    //            }
                    //            else if (!string.IsNullOrEmpty(item.fuel_type_code))
                    //            {
                    //                cityData.SubTitle = item.fuel_type_code;
                    //            }
                    //            else if (!string.IsNullOrEmpty(item.building_code))
                    //            {
                    //                cityData.SubTitle = item.building_code;
                    //            }
                    //            else
                    //            {
                    //                cityData.SubTitle = "No subtitle";
                    //            }

                    //            if (!string.IsNullOrEmpty(item.image))
                    //            {
                    //                cityData.BackgroundImage = item.image;
                    //            }
                    //            else
                    //            {
                    //                cityData.BackgroundImage = "/Assets/CommunityCenters.png";
                    //            }

                    //            cityData.Category = categoryName;

                    //            cityData.CompositeKey = CityDetailsViewModel.GenerateCompositeKey(cityData);
                    //            cityData.Comments = this.GetCommentCount(cityData).Result;

                    //            tempCityDataList.Add(cityData);

                    //            if (currentLocation.Latitude != 0 && currentLocation.Longitude != 0 && this.MapCenterPoint.Latitude == 0 && this.MapCenterPoint.Longitude == 0)
                    //            {
                    //                this.MapCenterPoint = currentLocation;
                    //            }
                    //            else
                    //            {
                    //                if (this.MapCenterPoint.Latitude == 0 && this.MapCenterPoint.Longitude == 0)
                    //                {
                    //                    this.MapCenterPoint = cityData.Coordinate;
                    //                }
                    //            }
                    //        }
                    //        catch (Exception)
                    //        {
                    //            continue;
                    //        }
                    //    }
                    //}
                    //var sortList = tempCityDataList.OrderBy(item => item.Distance).ThenBy(item => item.Name).ToList();

                    //this.CityCategoryItemsList = new ObservableCollection<CityData>();
                    //this.CityCategoryPushpinsList = new ObservableCollection<CityData>();
                    //foreach (var item in sortList)
                    //{
                    //    item.IndexNo = this.CityCategoryItemsList.Count + 1;
                    //    this.CityCategoryItemsList.Add(item);
                    //    if (this.CityCategoryPushpinsList.Count < 40)
                    //    {
                    //        if (item.Coordinate.Latitude != 0 && item.Coordinate.Longitude != 0)
                    //        {
                    //            this.CityCategoryPushpinsList.Add(item);
                    //        }
                    //    }
                    //}

                    //if (this.CityCategoryItemsList.FirstOrDefault() != null)
                    //{
                    //    var pinnedItem = this.CityCategoryItemsList.Where(item => item.CompositeKey.ToLower() == compositeKey.ToLower()).FirstOrDefault();
                    //    if (pinnedItem != null)
                    //    {
                    //        if (pinnedItem.Coordinate.Latitude != 0 && pinnedItem.Coordinate.Longitude != 0)
                    //        {
                    //            this.MapCenterPoint = pinnedItem.Coordinate;
                    //        }
                    //        else
                    //        {
                    //            this.MapCenterPoint = currentLocation;
                    //        }

                    //        GetCityItemDetails(pinnedItem);
                    //    }
                    //}
                    
                    HttpClient client = new HttpClient();
                    HttpResponseMessage response = client.GetAsync(parameterValue).Result;
                    List<CityData> tempCityDataList = new List<CityData>();
                    if (response.IsSuccessStatusCode)
                    {
                        response.EnsureSuccessStatusCode();
                        responseText = response.Content.ReadAsStringAsync().Result;



                        XElement xmlData = XElement.Parse(responseText, LoadOptions.PreserveWhitespace);
                        foreach (XElement curElement in xmlData.Descendants("row").Descendants("row"))
                        {

                            try
                            {
                                POSH.Socrata.Entity.Models.CityData cityData = new POSH.Socrata.Entity.Models.CityData();
                                cityData.Coordinate = new Altitude();

                                cityData.Name = GetContents(curElement, cityDetail.Name);
                                cityData.SubTitle = GetContents(curElement, cityDetail.SubTitle);
                                cityData.Phone = GetContents(curElement, cityDetail.Phone);
                                cityData.BackgroundImage = "/Assets/CommunityCenters.png";

                                if (cityDetail.Latitude != "NA")
                                {
                                    if (cityDetail.Latitude == "location.latitude")
                                    {
                                        cityData.Coordinate.Latitude = Convert.ToDouble(curElement.Element("location").Attribute("latitude").Value);
                                    }
                                    else
                                    {
                                        cityData.Coordinate.Latitude = Convert.ToDouble(GetContents(curElement, cityDetail.Latitude));
                                    }
                                }
                                else
                                {
                                    cityData.Coordinate.Latitude = 0;
                                }

                                if (cityDetail.Longitude != "NA")
                                {
                                    if (cityDetail.Longitude == "location.longitude")
                                    {
                                        cityData.Coordinate.Longitude = Convert.ToDouble(curElement.Element("location").Attribute("longitude").Value);
                                    }
                                    else
                                    {
                                        cityData.Coordinate.Longitude = Convert.ToDouble(GetContents(curElement, cityDetail.Longitude));
                                    }
                                }
                                else
                                {
                                    cityData.Coordinate.Longitude = 0;
                                }


                                if (cityData.Coordinate.Latitude == 0 && cityData.Coordinate.Longitude == 0)
                                {
                                    cityData.Distance = "No distance";
                                }
                                else
                                {
                                    var distance = CityDetailsViewModel.CalculateDistance(currentLocation.Latitude, currentLocation.Longitude, cityData.Coordinate.Latitude, cityData.Coordinate.Longitude);
                                    cityData.Distance = distance.ToString() + " miles";
                                }



                                cityData.Category = cityDetail.DataSetName;
                                cityData.CompositeKey = CityDetailsViewModel.GenerateCompositeKey(cityData);
                                cityData.Comments = GetCommentCount(cityData).Result;
                                tempCityDataList.Add(cityData);
                               
                                if (currentLocation.Latitude != 0 && currentLocation.Longitude != 0 && this.MapCenterPoint.Latitude == 0 && this.MapCenterPoint.Longitude == 0)
                                {
                                    this.MapCenterPoint = currentLocation;
                                }
                                else
                                {
                                    if (this.MapCenterPoint.Latitude == 0 && this.MapCenterPoint.Longitude == 0)
                                    {
                                        this.MapCenterPoint = cityData.Coordinate;
                                    }
                                }
                            }
                            catch (Exception)
                            {
                                continue;
                            }
                        }
                    }
                    var sortList = tempCityDataList.OrderBy(item => item.Distance).ThenBy(item => item.Name).ToList();

                    this.CityCategoryItemsList = new ObservableCollection<CityData>();
                    this.CityCategoryPushpinsList = new ObservableCollection<CityData>();
                    foreach (var item in sortList)
                    {
                        item.IndexNo = this.CityCategoryItemsList.Count + 1;
                        this.CityCategoryItemsList.Add(item);
                        if (this.CityCategoryPushpinsList.Count < 40)
                        {
                            if (item.Coordinate.Latitude != 0 && item.Coordinate.Longitude != 0)
                            {
                                this.CityCategoryPushpinsList.Add(item);
                            }
                        }
                    }

                    if (this.CityCategoryItemsList.FirstOrDefault() != null)
                    {
                        var pinnedItem = this.CityCategoryItemsList.Where(item => item.CompositeKey.ToLower() == compositeKey.ToLower()).FirstOrDefault();
                        if (pinnedItem != null)
                        {
                            if (pinnedItem.Coordinate.Latitude != 0 && pinnedItem.Coordinate.Longitude != 0)
                            {
                                this.MapCenterPoint = pinnedItem.Coordinate;
                            }
                            else
                            {
                                this.MapCenterPoint = currentLocation;
                            }

                            GetCityItemDetails(pinnedItem);
                        }
                    }
                }
            }
            catch (Exception)
            {
                this.ErrorMessage = "There is an error on fetching data from server. Please try again...";
            }
        }
 /// <summary>
 /// constructor
 /// </summary>
 public CityDetailsViewModel()
 {
     this.AllCityCategoryItems = new Dictionary<string, List<CityData>>();
     this.CityCategoryItemsList = new ObservableCollection<Entity.Models.CityData>();
     this.MapCenterPoint = new Altitude();
     this.CityCategoryPushpinsList = new ObservableCollection<CityData>();
     this.CurrentLocationCoordinates = new Altitude();
     this.AllCityItems = new List<CityData>();
 }
 /// <summary>
 /// Loads data from secondary tile
 /// </summary>
 /// <param name="altitude"></param>
 /// <returns></returns>
 private void LoadTileData(Altitude altitude)
 {
     if (!NetworkInterface.GetIsNetworkAvailable())
     {
         MessageBox.Show(AppResources.NoInternetConnectionMessage, AppResources.NoInternetMessageTitle, MessageBoxButton.OK);
         return;
     }
     Task<string> task = Task<string>.Run<string>(async() =>
         {
             await App.ViewModel.LoadXML();
             var data = App.ViewModel.CityDataSetList.Where(obj => obj.ApiUrl.ToLower() == this.apiUrl.ToLower()).FirstOrDefault();
             if (data != null)
             {
                 App.ViewModel.CityCategoryDetailViewModel.GetTileCityItemDetails(this.apiUrl, data, altitude, this.compositeKey);
             }                    
             return "";
         });
     task.ContinueWith((Task<string> value) =>
         {
             SetDataContext();
         });
 }