public async Task <FindVenuesWebModel> FindSnookerVenues2(Location location, string country, int radiusInMeters, string searchQuery, int maxCount) { string url = WebApiUrl + "Venues/FindSnooker2?radiusInMeters=" + radiusInMeters.ToString("F0"); url += "&country=" + country; url += "&maxCount=" + maxCount; if (location != null) { url += "&latitude=" + location.Latitude + "&longitude=" + location.Longitude; } if (searchQuery == null) { searchQuery = ""; } searchQuery = searchQuery.Trim(); if (searchQuery.Length > 0) { url += "&searchQuery=" + System.Net.WebUtility.UrlEncode(searchQuery); } try { string json = await this.sendGetRequestAndReceiveResponse(url, true); FindVenuesWebModel result = JsonConvert.DeserializeObject <FindVenuesWebModel>(json); TraceHelper.TraceInfo("FindSnookerVenues2 - ok"); return(result); } catch (Exception exc) { TraceHelper.TraceException("FindSnookerVenues2 exception", exc); LastException = exc; LastExceptionUrl = url; return(null); } }
void doOnVenuesLoaded(FindVenuesWebModel venuesFromWeb) { TraceHelper.TraceInfoForResponsiveness("doOnVenuesLoaded"); this.venues = venuesFromWeb != null ? venuesFromWeb.Venues : null; this.fillMap(); this.fillList(); this.layoutForTheList.Padding = new Thickness(0); if (venues == null) { this.labelStatus.Text = "Couldn't load venues. Internet issues?"; this.panelStatus.IsVisible = true; } else if (venuesFromWeb != null && venuesFromWeb.TotalCountAvailable > MaxVenuesToLoad) { this.labelStatus.Text = "Showing random " + MaxVenuesToLoad.ToString() + " venues within the map area."; this.layoutForTheList.Padding = new Thickness(0, 30, 0, 0); this.panelStatus.IsVisible = true; } else { this.labelStatus.Text = "-"; this.panelStatus.IsVisible = false; } bool isMapOnDifferentCommunity = false; if (venuesFromWeb != null && venuesFromWeb.ClosestMetro != null) { if (this.CurrentCommunity.MetroID > 0 && this.CurrentCommunity.MetroID != venuesFromWeb.ClosestMetro.ID) { isMapOnDifferentCommunity = true; } if (this.CurrentCommunity.MetroID <= 0 && this.CurrentCommunity.Country != null && venuesFromWeb.ClosestMetro.Country != this.CurrentCommunity.Country.ThreeLetterCode) { isMapOnDifferentCommunity = true; } } if (isMapOnDifferentCommunity) { this.communitySelectorControl.AnimateWithRed(); } this.communitySelectorControl.IsAskToTapVisible = isMapOnDifferentCommunity == true && this.IsFindVenueMode == false; }
public FindVenuesWebModel FindSnooker2(int radiusInMeters, string country, int maxCount, string searchQuery = "", double?latitude = null, double?longitude = null) { Location location = null; if (latitude != null && longitude != null) { location = new Location(latitude.Value, longitude.Value); } Country countryObj = Country.Get(country); // load venues var loadedVenues = new VenuesLogic(db).FindVenues2(location, radiusInMeters, countryObj, searchQuery, true); int allVenuesCount = loadedVenues.Count; // keep up to maxCount venues List <VenueWebModel> venues; if (allVenuesCount <= maxCount) { venues = loadedVenues; } else { venues = new List <VenueWebModel>(); Random random = new Random(); for (int i = 0; i < maxCount; ++i) { int index = random.Next(loadedVenues.Count - 1); venues.Add(loadedVenues[index]); loadedVenues.RemoveAt(index); } } FindVenuesWebModel model = new FindVenuesWebModel(); model.Venues = venues; if (location != null) { model.ClosestMetro = new MetrosLogic(db).GetClosestMetro(location); } model.TotalCountAvailable = allVenuesCount; return(model); }