public StopDetailViewModel(Stop stop) { Routes = new ObservableCollection<Route>(); Alerts = new ObservableCollection<Alert>(); SelectedStop = stop; refreshTimer = new DispatcherTimer(); refreshTimer.Tick += TimerDue; refreshTimer.Interval = new TimeSpan(0, 0, 15); tileId = stop.StopName; }
public static async Task<XDocument> GetSearchPredictionsAsync(Stop stop, Route route) { var url = baseUrls["searchPrediction"] + stop.stopId + "&routeTag=" + route.RouteNumber; //Make sure to pull from the network and not cache everytime predictions are refreshed client.DefaultRequestHeaders.IfModifiedSince = DateTime.Now; try { var response = await client.GetAsync(new Uri(url)); response.EnsureSuccessStatusCode(); var reader = await response.Content.ReadAsStringAsync(); xmlDoc = XDocument.Parse(reader); } catch (Exception) { await ErrorHandler.NetworkError("Error getting predictions. Check network connection and try again."); throw; } return xmlDoc; }
public static async Task FavoriteSearchAsync(Stop stop) { string title = stop.StopName; if (title.Contains("Inbound")) { title = title.Replace(" Inbound", ""); } if (title.Contains("Outbound")) { title = title.Replace(" Outbound", ""); } //var _stopsAsyncConnection = new SQLiteAsyncConnection("muni.sqlite"); var connection = new SQLiteAsyncConnection(() => DbConnection(muniDbPath)); //string query = "SELECT * FROM BusStops WHERE StopName = \'" + title + "\'"; var results = await connection.Table<Stop>().Where(s => s.StopName == title).ToListAsync(); //If stop name not found in db, most likely a stop that was a duplicate and merged so reverse it and search again if(!results.Any()) { string [] temp = title.Split('&'); title = temp[1].Substring(1) + " & " + temp[0].Substring(0, (temp[0].Length - 1)); //query = "SELECT * FROM BusStops WHERE StopName = \'" + title + "\'"; results = await connection.Table<Stop>().Where(s => s.StopName == title).ToListAsync(); } foreach (Stop fav in results) { await AddFavoriteAsync(stop); } }
public static async Task RemoveFavoriteAsync(Stop stop) { string q = "DELETE FROM FavoriteData WHERE Id IS " + stop.favId; //var _favoritesAsyncConnection = new SQLiteAsyncConnection(favoriteDbPath); favoritesConnection = new SQLiteAsyncConnection(() => DbConnection(favoriteDbPath)); await favoritesConnection.QueryAsync<Favorite>(q); await LoadFavoritesAsync(); }
public static async Task AddFavoriteAsync(Stop stop) { //var _favoritesAsyncConnection = new SQLiteAsyncConnection(favoriteDbPath); favoritesConnection = new SQLiteAsyncConnection(() => DbConnection(favoriteDbPath)); await favoritesConnection.InsertAsync(new Favorite { Name = stop.StopName, Routes = stop.Routes, Tags = stop.StopTags, Lat = stop.Latitude, Lon = stop.Longitude }); await LoadFavoritesAsync(); }
private void LoadFavorites() { List<Favorite> favorites = DatabaseHelper.FavoritesList; FavoriteStops.Clear(); if (favorites.Count == 0) { NoFavoritesText = "Add favorites by pressing \uE00A on a stop"; } else { NoFavoritesText = ""; foreach (Favorite fav in favorites) { Stop favStop = new Stop(fav.Name, "", fav.Routes, fav.Tags, fav.Lat, fav.Lon); favStop.favId = fav.Id; FavoriteStops.Add(favStop); } } //Check if any stops in NearbyStops are also favorites so users have the ability to remove them SyncFavoriteIds(); //FavoritesDistances(); if (sorted) SortFavorites(); }
public async Task StopSelectedAsync(Stop stop) { SelectedStop = stop; string title = SelectedStop.StopName; if (title.Contains("Inbound")) { SelectedStop.StopName = title.Replace(" Inbound", ""); } if (title.Contains("Outbound")) { SelectedStop.StopName = title.Replace(" Outbound", ""); } //string[] temp = SelectedStop.StopName.Split('&'); //string reversed; //if (temp.Count() > 1) //{ // reversed = temp[1].Substring(1) + " & " + temp[0].Substring(0, (temp[0].Length - 1)); //} //else reversed = ""; try { var xmlDoc = await WebHelper.GetSearchPredictionsAsync(SelectedStop, SelectedRoute); //Get bus predictions for stop SearchTimes = await Task.Run(() => ParseHelper.ParseSearchTimesAsync(xmlDoc)); Stop tempStop = await GetStopAsync(); if (tempStop != null) SelectedStop = tempStop; IsFavorite = DatabaseHelper.FavoritesList.Any(f => f.Name == SelectedStop.StopName); if (IsFavorite) SyncFavoriteIds(); } catch(Exception) { throw; } }