Пример #1
0
        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);
        }
Пример #2
0
        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]));
            }
        }
Пример #3
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]));
            }
        }
Пример #4
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);
            }
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
 public static Route ToRoute(DatabaseRoute toConvert)
 {
     return(new Route(toConvert.Name, toConvert.SystemSoundPath, DatabaseConnector.INSTANCE.getAssociatedWaypointsAsync(toConvert.Name).Result));
 }
Пример #8
0
 public static Route ToRoute(DatabaseRoute toConvert)
 {
     return new Route(toConvert.Name, toConvert.SystemSoundPath, DatabaseConnector.INSTANCE.getAssociatedWaypointsAsync(toConvert.Name).Result);
 }