public async Task <bool> SaveRouteAsync(Route route) { bool IsSuccesful = true; //If the name is used, disregard List <int> IsTaken = await Database.QueryAsync <int>("SELECT RouteID FROM DatabaseRoute WHERE Name = ?", new object[] { route.Name }); if (IsTaken.Count != 0) { return(false); //IsSuccesful = false; } //Otherwise insert it. DatabaseRoute forDatabase = DatabaseRoute.ToDatabaseRoute(route); await Database.InsertAsync(forDatabase); foreach (Waypoint w in route.WayPoints) { int existingID = await Database.ExecuteScalarAsync <int>("SELECT WaypointID FROM DatabasePOI WHERE Latitude = ? AND Longitude = ?", new object[] { w.Latitude, w.Longitude }); if (existingID == 0) { int waypointID = await SaveWaypoint(w); await Database.ExecuteAsync("INSERT INTO RouteBinds VALUES(?, ?)", new object[] { forDatabase.RouteID, waypointID }); } else { await Database.ExecuteAsync("INSERT INTO RouteBinds VALUES(?, ?)", new object[] { forDatabase.RouteID, existingID }); } } return(IsSuccesful); }
public async Task <Route> GetVisitedRoute() { List <DatabaseRoute> results = await Database.QueryAsync <DatabaseRoute>("SELECT * FROM DatabaseRoute WHERE RouteID = 998"); if (results.Count == 0) { return(null); } else { return(DatabaseRoute.ToRoute(results[0])); } }
public async Task <Route> GetRouteAsync(String routeName) { List <DatabaseRoute> results = await Database.QueryAsync <DatabaseRoute>("SELECT * FROM DatabaseRoute WHERE Name = ? AND RouteID <> 999 AND RouteID <> 998", new object[] { routeName }); if (results.Count == 0) { return(null); } else { return(DatabaseRoute.ToRoute(results[0])); } }
public async Task EditRouteAsync(string oldRouteName, Route newRoute) { //Remember the Database ID of the route int id = Database.QueryAsync <DatabaseRoute>("SELECT * FROM \"DatabaseRoute\" WHERE \"Name\" = ? AND RouteID <> 999 AND RouteID <> 998", new object[] { oldRouteName }).Result[0].RouteID; //And remove it await DeleteRouteAsync(oldRouteName); //Now create & insert the new route DatabaseRoute forDatabase = DatabaseRoute.ToDatabaseRouteIDless(newRoute, id); await Database.InsertAsync(forDatabase); //Then bind the waypoints foreach (Waypoint newWaypoint in newRoute.WayPoints) { int existingID = await Database.ExecuteScalarAsync <int>("SELECT WaypointID FROM DatabasePOI WHERE Latitude = ? AND Longitude = ?", new object[] { newWaypoint.Latitude, newWaypoint.Longitude }); if (existingID == 0) { //In the case it's a new waypoint, save and bind to this route int waypointID = await SaveWaypoint(newWaypoint); await Database.ExecuteAsync("INSERT INTO RouteBinds VALUES(?, ?)", new object[] { forDatabase.RouteID, waypointID }); } else { //But if it exists, edit waypoint if neccesary, check if the bind persisted and then insert await EditWaypointAsync(DatabasePOI.ToWaypoint( Database.QueryAsync <DatabasePOI>("SELECT * FROM DatabasePOI WHERE Latitude = ? AND Longitude = ?", new object[] { newWaypoint.Latitude, newWaypoint.Longitude }).Result[0]) , newWaypoint); List <RouteBind> binds = await Database.QueryAsync <RouteBind>("SELECT WaypointID FROM RouteBinds WHERE RouteID = ? AND RouteID <> 999 AND RouteID <> 998 AND WaypointID = ?", new object[] { id, existingID }); if (binds.Count == 0) { await Database.ExecuteAsync("INSERT INTO RouteBinds VALUES(?, ?)", new object[] { forDatabase.RouteID, existingID }); } } } //In the case this is the active route, replace. Route currentRoute = await GetCurrentRoute(); if (currentRoute != null && currentRoute.Name == oldRouteName) { await SaveCurrentRouteAsync(newRoute); } }
public async Task <bool> SaveVisitedRouteAsync(Route route) { bool IsSuccesful = true; DatabaseRoute forDatabase = DatabaseRoute.ToDatabaseRoute(route); forDatabase.Name = "FWGFETY^Rufw4r6ue6fyue46YGE^GU#EÛE6gue6guef6ug6eg6gue46gue6EU^GUE^FUEG%Ê"; await DeleteVisitedRoute(); forDatabase.RouteID = 998; //Set to reserved ID await Database.InsertAsync(forDatabase); foreach (Waypoint w in route.WayPoints) { int existingID = await Database.ExecuteScalarAsync <int>("SELECT WaypointID FROM DatabasePOI WHERE Latitude = ? AND Longitude = ?", new object[] { w.Latitude, w.Longitude }); await Database.ExecuteAsync("INSERT INTO RouteBinds VALUES(?, ?)", new object[] { forDatabase.RouteID, existingID }); } return(IsSuccesful); }
public async Task <bool> SaveCurrentRouteAsync(Route route) { bool IsSuccesful = true; DatabaseRoute forDatabase = DatabaseRoute.ToDatabaseRoute(route); forDatabase.Name = "DF%Yyw54ye54yfw5u6ujtrhjw6hw45w4%HW$%HWT$GFWt4hft4th4wvhwtrg"; await DeleteCurrentRoute(); forDatabase.RouteID = 999; //Set to reserved ID await Database.InsertAsync(forDatabase); foreach (Waypoint w in route.WayPoints) { int existingID = await Database.ExecuteScalarAsync <int>("SELECT WaypointID FROM DatabasePOI WHERE Latitude = ? AND Longitude = ?", new object[] { w.Latitude, w.Longitude }); await Database.ExecuteAsync("INSERT INTO RouteBinds VALUES(?, ?)", new object[] { forDatabase.RouteID, existingID }); } return(IsSuccesful); }
public static Route ToRoute(DatabaseRoute toConvert) { return(new Route(toConvert.Name, toConvert.SystemSoundPath, DatabaseConnector.INSTANCE.getAssociatedWaypointsAsync(toConvert.Name).Result)); }
public static Route ToRoute(DatabaseRoute toConvert) { return new Route(toConvert.Name, toConvert.SystemSoundPath, DatabaseConnector.INSTANCE.getAssociatedWaypointsAsync(toConvert.Name).Result); }