Пример #1
0
 private void OnTouchButtonSignOut(object sender, TouchEventArgs e)
 {
     OpenCloseMainMenu();
     FacebookController.Logout();
     ModelPoolManager.GetInstance().Remove("Usuario");
     this.Update();
 }
Пример #2
0
        private void OnTouchOKButton(object sender, TouchEventArgs e)
        {
            var tourCtrl = ModelPoolManager.GetInstance().GetValue("tourCtrl") as TourController;

            if (!tourCtrl.isEndTour)
            {
                var tourNotification = UIUtils.FindGUI("MenuNavigation/NotificationSeccionTourCompletada");
                tourNotification.SetActive(false);
            }
            else
            {
                Exit();
            }
        }
Пример #3
0
        private void OnTouchButtonUsuario(object sender, TouchEventArgs e)
        {
            OpenCloseMainMenu();

            if (FB.IsLoggedIn && ModelPoolManager.GetInstance().Contains("Usuario"))
            {
                MenuManager.GetInstance().AddMenu(new MenuUsuarioSettings("MenuUsuarioSettings"));
            }
            else
            {
                MenuManager.GetInstance().AddMenu(new MenuSignIn("MenuSignIn"));
            }

            State.ChangeState(eState.Menu);
        }
Пример #4
0
        new void Update()
        {
            base.Update();

            if (State.GetCurrentState().Equals(eState.MenuNavigation) && ModelPoolManager.GetInstance().Contains("tourCtrl"))
            {
                var tourCtrl = ModelPoolManager.GetInstance().GetValue("tourCtrl") as TourController;

                if (!tourCtrl.isTourActive)
                {
                    string nodeName;
                    if (tourCtrl.IsUserCollidingBuilding(out nodeName) && nodeName == tourCtrl.SectionTourDataList[tourCtrl.CurrentSectionIndex].Desde)
                    {
                        tourCtrl.isTourActive = true;
                    }
                }

                bool isEndTour;
                //If true, One section of tour (from puntoReunion to other) is completed
                if (tourCtrl.isTourActive && tourCtrl.UpdateSectionTour(out isEndTour))
                {
                    //Ha Completado una seccion del tour
                    var tourNotification = UIUtils.FindGUI("MenuNavigation/NotificationSeccionTourCompletada");
                    tourNotification.SetActive(true);

                    if (isEndTour)
                    {
                        tourNotification.transform.FindChild("Info").GetComponent <UILabel>().text = "Ha finalizado el Tour";
                        tourCtrl.isEndTour = true;
                    }
                    else
                    {
                        string desde = tourCtrl.SectionTourDataList[tourCtrl.CurrentSectionIndex].Desde;
                        string hasta = tourCtrl.SectionTourDataList[tourCtrl.CurrentSectionIndex].Hasta;

                        tourNotification.transform.FindChild("Info").GetComponent <UILabel>().text = string.Format("Ha recorrido el tour desde {0} hasta {1}", desde, hasta);
                    }
                }
            }
        }
Пример #5
0
        public void OnTouchNavigationButton(object sender, TouchEventArgs e)
        {
            NavigationController controller = ModelPoolManager.GetInstance().GetValue("navigationCtrl") as NavigationController;

            controller.StartNavigation(this.modelNode.name);
        }
Пример #6
0
        public void Update()
        {
            State.ChangeState(eState.Tour);


            using (var sqlService = new SQLiteService())
            {
                //Verificar si el tour se completó
                var tourCtrl = ModelPoolManager.GetInstance().GetValue("tourCtrl") as TourController;

                if (tourCtrl.isEndTour)
                {
                    sqlService.TransactionalQuery(
                        "UPDATE UsuarioTour SET estado = 'finalizado' AND fechaFin = '" + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + "' WHERE id = " + this.idUsuarioTour
                        );
                }
                else
                {
                    sqlService.TransactionalQuery(
                        "UPDATE UsuarioTour SET estado = 'inconcluso' AND fechaFin = null WHERE id = " + this.idUsuarioTour
                        );
                }

                ModelPoolManager.GetInstance().Remove("tourCtrl");

                this.detalleUsuarioTourList.Clear();
                var sql = "SELECT * FROM DetalleUsuarioTour WHERE idUsuarioTour = " + idUsuarioTour;

                using (var resultDetalleUsuarioTour = sqlService.SelectQuery(sql))
                {
                    while (resultDetalleUsuarioTour.Read())
                    {
                        DateTime?updatedDate = null, startDate = null, endDate = null;
                        DateTime temp;

                        var obj = resultDetalleUsuarioTour["fechaInicio"];
                        if (obj != null)
                        {
                            var fechaInicio = Convert.ToString(obj);
                            if (DateTime.TryParseExact(fechaInicio, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out temp))
                            {
                                startDate = temp;
                            }
                        }

                        obj = resultDetalleUsuarioTour["fechaLlegada"];
                        if (obj != null)
                        {
                            var fechaFin = Convert.ToString(obj);
                            if (DateTime.TryParseExact(fechaFin, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out temp))
                            {
                                endDate = temp;
                            }
                        }

                        obj = resultDetalleUsuarioTour["fechaFin"];
                        if (obj != null)
                        {
                            var fechaActualizacion = Convert.ToString(obj);
                            if (DateTime.TryParseExact(fechaActualizacion, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out temp))
                            {
                                updatedDate = temp;
                            }
                        }

                        this.detalleUsuarioTourList.Add(
                            new DetalleUsuarioTour()
                        {
                            idDetalleUsuarioTour = Convert.ToInt32(resultDetalleUsuarioTour["id"]),
                            idPuntoReunionTour   = Convert.ToInt32(resultDetalleUsuarioTour["idPuntoReunionTour"]),
                            idUsuarioTour        = idUsuarioTour,
                            fechaInicio          = startDate,
                            fechaLlegada         = endDate,
                            fechaFin             = updatedDate
                        }
                            );
                    }
                }
            }

            UpdateCreateScrollView();
        }
Пример #7
0
        private void OnTouchResumeButton(object sender, TouchEventArgs e)
        {
            NavigationController controller = ModelPoolManager.GetInstance().GetValue("navigationCtrl") as NavigationController;

            controller.StartTourNavigation(tourName, detalleUsuarioTourList);
        }
Пример #8
0
        public void StartTourNavigation(string tourName, List <DetalleUsuarioTour> detalleUsuarioTourList)
        {
            var tourController = new TourController(detalleUsuarioTourList);

            List <PathDataDijkstra> tourPath       = new List <PathDataDijkstra>();
            bool   isSelectCurrentIndexSectionTour = false;
            int    indexCurrentTourPathData        = 0;
            string startTourNode = string.Empty;

            using (var sqlService = new SQLiteService())
            {
                for (int i = 0; i < detalleUsuarioTourList.Count; ++i)
                {
                    if (i + 1 != detalleUsuarioTourList.Count && !detalleUsuarioTourList[i + 1].fechaFin.HasValue)
                    {
                        //Buscar en la base de dato el desde y el hasta
                        string desde = string.Empty, hasta = string.Empty;

                        var sql =
                            "SELECT NODA.nombre as desde, NODB.nombre as hasta " +
                            "FROM PuntoReunionTour PUNA, Nodo NODA, PuntoReunionTour PUNB, Nodo NODB " +
                            "WHERE PUNA.id = " + detalleUsuarioTourList[i].idPuntoReunionTour + " AND PUNA.idNodo = NODA.idNodo " +
                            "AND PUNB.id = " + detalleUsuarioTourList[i + 1].idPuntoReunionTour + " AND PUNB.idNodo = NODB.idNodo " +
                            "ORDER BY PUNA.id";

                        using (var result = sqlService.SelectQuery(sql))
                        {
                            if (result.Read())
                            {
                                desde = System.Convert.ToString(result["desde"]);
                                hasta = System.Convert.ToString(result["hasta"]);
                            }
                        }

                        List <PathDataDijkstra> bestPath = graph.Dijkstra(desde, hasta);
                        tourPath.AddRange(bestPath);

                        tourController.AddSectionTour(new SectionTourData()
                        {
                            Desde = desde,
                            IdPuntoReuionNodoDesde = detalleUsuarioTourList[i].idPuntoReunionTour.Value,
                            Hasta = hasta,
                            IdPuntoReuionNodoHasta = detalleUsuarioTourList[i + 1].idPuntoReunionTour.Value,
                        });

                        if (!isSelectCurrentIndexSectionTour)
                        {
                            isSelectCurrentIndexSectionTour = true;
                            tourController.SetStartSectionTour(i);

                            indexCurrentTourPathData = tourPath.FindIndex(path => path.StartNode.Name == desde);
                            startTourNode            = desde;
                        }
                    }
                }
            }

            var userPath = GetBestPathData(startTourNode);

            userPath.AddRange(tourPath);

            ModelPoolManager.GetInstance().Add("tourCtrl", tourController);

            //Mostrar el menu de direciones
            MenuNavigation menuNavigation = new MenuNavigation("MenuNavigation", userPath, indexCurrentTourPathData, tourName);

            MenuManager.GetInstance().AddMenu(menuNavigation);

            State.ChangeState(eState.MenuNavigation);
        }
Пример #9
0
        void Update()
        {
            var currentUserPlanePosX = UIUtils.getXDistance(UIGPS.Longitude);
            var currentUserPlanePosZ = UIUtils.getZDistance(UIGPS.Latitude);
            var accuracy             = Mathf.Clamp(UIGPS.Accuracy, 4f, 30f);

            this.transform.position = new Vector3(currentUserPlanePosX, 1f, currentUserPlanePosZ);

            this.transform.FindChild("Range").localScale = new Vector3(
                (accuracy / 1.5f), 0.1f, (accuracy / 1.5f)
                );

            //Si hay un recorrido
            if (State.GetCurrentState() == eState.MenuNavigation)
            {
                var menuNavigation = MenuManager.GetInstance().GetCurrentMenu() as MenuNavigation;

                if (!menuNavigation.isFreeModeActive)
                {
                    var  path    = menuNavigation.directionPath[menuNavigation.currentDirectionPath];
                    bool control = false;

                    var   nodeStartPosX            = menuNavigation.directionPath[menuNavigation.currentDirectionPath].StartNode.Longitude;
                    var   nodeStartPosZ            = menuNavigation.directionPath[menuNavigation.currentDirectionPath].StartNode.Latitude;
                    float resultantUserToStartNode = UIUtils.getDirectDistance(currentUserPlanePosX, currentUserPlanePosZ, nodeStartPosX, nodeStartPosZ);

                    var   nodeEndPosX            = menuNavigation.directionPath[menuNavigation.currentDirectionPath].EndNode.Longitude;
                    var   nodeEndPosZ            = menuNavigation.directionPath[menuNavigation.currentDirectionPath].EndNode.Latitude;
                    float resultantUserToEndNode = UIUtils.getDirectDistance(currentUserPlanePosX, currentUserPlanePosZ, nodeEndPosX, nodeEndPosZ);

                    if (path.StartNode.Visited && path.EndNode.Visited)
                    {
                        //Ir al proximo path
                        if (++menuNavigation.currentDirectionPath < menuNavigation.directionPath.Count)
                        {
                            var pathNext = menuNavigation.directionPath[menuNavigation.currentDirectionPath];
                            menuNavigation.ShowDirectionMenu(pathNext);
                            menuNavigation.ShowNavigationDirection(pathNext);
                        }
                        else
                        {
                            //Ha finalizado un recorrido
                            menuNavigation.currentDirectionPath = menuNavigation.directionPath.Count - 1;
                        }

                        control = true;
                    }
                    else
                    {
                        if (!path.StartNode.Visited && resultantUserToStartNode <= metersBetweenUserAndNodesToBeVisited)
                        {
                            path.StartNode.Visited = true;
                            control = true;
                        }

                        if (!path.EndNode.Visited && resultantUserToEndNode <= metersBetweenUserAndNodesToBeVisited)
                        {
                            path.EndNode.Visited = true;
                            control = true;
                        }
                    }

                    //Busqueda de Ruta Alterna si no es un tour
                    if (!ModelPoolManager.GetInstance().Contains("tourCtrl") && !control)
                    {
                        //Verificar si el usuario se esta lejando de los nodos de un path
                        //Si tanto el nodo inicial como el final estan a una distancia X en metros, crear una nueva ruta
                        if (resultantUserToStartNode >= metersBetweenNodesAlternativeRoute && resultantUserToEndNode >= metersBetweenNodesAlternativeRoute)
                        {
                            UINotification.StartNotificationRecalcularRuta = true;

                            //Recuperar nodo destino
                            var destinoName = menuNavigation.directionPath[menuNavigation.directionPath.Count - 1].EndNode.Name;

                            //Eliminar antigua ruta
                            menuNavigation = null;
                            MenuManager.GetInstance().RemoveCurrentMenu();

                            //Recalcular la ruta
                            var navigationCtrl = ModelPoolManager.GetInstance().GetValue("navigationCtrl") as NavigationController;
                            navigationCtrl.StartNavigation(destinoName);
                        }
                    }
                }
            }
        }
Пример #10
0
        private void Process(Tour tour, out UsuarioTour usuarioTour, out List <DetalleUsuarioTour> detalleUsuarioTourList)
        {
            UsuarioTour userTour = null;
            List <DetalleUsuarioTour> detailsList = new List <DetalleUsuarioTour>();

            using (var sqlService = new SQLiteService())
            {
                var user = ModelPoolManager.GetInstance().GetValue("Usuario") as Usuario;

                //Del tour seleccionado verificar si el usuario esta suscrito
                var sqlQuery = "SELECT * FROM UsuarioTour WHERE idUsuarioFacebook = '" + user.idUsuarioFacebook + "' AND idTour = " + tour.idTour;
                using (var resultUsuarioTour = sqlService.SelectQuery(sqlQuery))
                {
                    //El UsuarioTour ya ha sido creado
                    if (resultUsuarioTour.HasRows == true)
                    {
                        #region Recuperacion UsuarioTour

                        DateTime?startDate = null, endDate = null;
                        DateTime temp;

                        var obj = resultUsuarioTour["fechaInicio"];
                        if (obj != null)
                        {
                            string fechaInicio = Convert.ToString(obj);
                            if (DateTime.TryParseExact(fechaInicio, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out temp))
                            {
                                startDate = temp;
                            }
                        }

                        obj = resultUsuarioTour["fechaFin"];
                        if (obj != null)
                        {
                            string fechaFin = Convert.ToString(obj);
                            if (DateTime.TryParseExact(fechaFin, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out temp))
                            {
                                endDate = temp;
                            }
                        }

                        userTour = new UsuarioTour()
                        {
                            idUsuarioFacebook = user.idUsuarioFacebook,
                            idUsuarioTour     = Convert.ToInt32(resultUsuarioTour["id"]),
                            idTour            = Convert.ToInt32(resultUsuarioTour["idTour"]),
                            estado            = Convert.ToString(resultUsuarioTour["estado"]),
                            fechaInicio       = startDate,
                            fechaFin          = endDate
                        };

                        #endregion

                        #region Recuperacion DetalleUsuarioTour

                        var sql = "SELECT * FROM DetalleUsuarioTour WHERE idUsuarioTour = " + userTour.idUsuarioTour;

                        using (var resultDetalleUsuarioTour = sqlService.SelectQuery(sql))
                        {
                            while (resultDetalleUsuarioTour.Read())
                            {
                                DateTime?updatedDate = null;
                                startDate = endDate = null;

                                obj = resultDetalleUsuarioTour["fechaInicio"];
                                if (obj != null)
                                {
                                    var fechaInicio = Convert.ToString(obj);
                                    if (DateTime.TryParseExact(fechaInicio, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out temp))
                                    {
                                        startDate = temp;
                                    }
                                }

                                obj = resultDetalleUsuarioTour["fechaLlegada"];
                                if (obj != null)
                                {
                                    var fechaFin = Convert.ToString(obj);
                                    if (DateTime.TryParseExact(fechaFin, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out temp))
                                    {
                                        endDate = temp;
                                    }
                                }

                                obj = resultDetalleUsuarioTour["fechaFin"];
                                if (obj != null)
                                {
                                    var fechaActualizacion = Convert.ToString(obj);
                                    if (DateTime.TryParseExact(fechaActualizacion, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out temp))
                                    {
                                        updatedDate = temp;
                                    }
                                }

                                detailsList.Add(
                                    new DetalleUsuarioTour()
                                {
                                    idDetalleUsuarioTour = Convert.ToInt32(resultDetalleUsuarioTour["id"]),
                                    idPuntoReunionTour   = Convert.ToInt32(resultDetalleUsuarioTour["idPuntoReunionTour"]),
                                    idUsuarioTour        = userTour.idUsuarioTour,
                                    fechaInicio          = startDate,
                                    fechaLlegada         = endDate,
                                    fechaFin             = updatedDate
                                }
                                    );
                            }
                        }

                        #endregion
                    }
                    //Se creará un nuevo registro de UsuarioTour y sus repectivos DetalleUsuarioTour
                    else
                    {
                        #region Creacion UsuarioTour

                        //Buscando el ultimo id
                        int idUsuarioTour = 0;

                        using (var result = sqlService.SelectQuery("SELECT MAX(id) as id FROM UsuarioTour"))
                        {
                            while (result.Read())
                            {
                                int.TryParse(Convert.ToString(result["id"]), out idUsuarioTour);
                            }
                        }

                        idUsuarioTour++;
                        var fechaInicio = DateTime.Now;

                        //Creacion del UsuarioTour

                        //Insertando en la base de datos
                        sqlService.TransactionalQuery(
                            "INSERT INTO UsuarioTour (id, idTour, idUsuarioFacebook, fechaInicio, request) " +
                            "VALUES (" + idUsuarioTour + "," + tour.idTour + ",'" + user.idUsuarioFacebook + "','" + fechaInicio.ToString("dd/MM/yyyy HH:mm:ss") + "','create')"
                            );

                        //sqlService.TransactionalQuery(
                        //    "INSERT INTO UsuarioTour (id, idTour, fechaInicio, request) " +
                        //    "VALUES (" + idUsuarioTour + "," + tour.idTour + ",'" + fechaInicio.ToString("dd/MM/yyyy HH:mm:ss") + "','create')"
                        //);

                        //Creacion del objeto de UsuarioTour
                        userTour = new UsuarioTour()
                        {
                            idUsuarioTour     = idUsuarioTour,
                            fechaInicio       = fechaInicio,
                            idTour            = tour.idTour,
                            estado            = "activo",
                            idUsuarioFacebook = user.idUsuarioFacebook
                        };

                        //userTour = new UsuarioTour()
                        //{
                        //    idUsuarioTour = idUsuarioTour,
                        //    fechaInicio = fechaInicio,
                        //    idTour = tour.idTour,
                        //    estado = "activo",
                        //};

                        #endregion

                        #region Creacion DetalleUsuarioTourList

                        //Obtener los puntos de reunion del tour selecionado
                        var puntoReuionList = new List <PuntoReunionTour>();

                        using (var result = sqlService.SelectQuery("SELECT * FROM PuntoReunionTour WHERE idTour = " + tour.idTour))
                        {
                            while (result.Read())
                            {
                                var puntoReunion = new PuntoReunionTour()
                                {
                                    idPuntoReunionTour = Convert.ToInt32(result["id"]),
                                    secuencia          = Convert.ToInt32(result["secuencia"]),
                                    idNodo             = Convert.ToInt32(result["idNodo"]),
                                    idTour             = Convert.ToInt32(result["idTour"])
                                };

                                puntoReuionList.Add(puntoReunion);
                            }
                        }

                        //Creacion del DetalleUsuarioTour

                        //Buscando el ultimo id
                        int idDetalleUsuarioTour = 0;

                        using (var result = sqlService.SelectQuery("SELECT MAX(id) as id FROM DetalleUsuarioTour"))
                        {
                            if (result.Read())
                            {
                                int.TryParse(Convert.ToString(result["id"]), out idDetalleUsuarioTour);
                            }
                        }

                        StringBuilder sqlBuilder = new StringBuilder();

                        foreach (var puntoReunion in puntoReuionList)
                        {
                            idDetalleUsuarioTour++;

                            //Insertando en la base de datos
                            sqlBuilder.Append(
                                "INSERT INTO DetalleUsuarioTour (id, idPuntoReunionTour, idUsuarioTour) " +
                                "VALUES (" + idDetalleUsuarioTour + "," + puntoReunion.idPuntoReunionTour + "," + idUsuarioTour + ");"
                                );

                            //Creacion del objeto de DetalleUsuarioTour
                            detailsList.Add(
                                new DetalleUsuarioTour()
                            {
                                idDetalleUsuarioTour = idDetalleUsuarioTour,
                                idPuntoReunionTour   = puntoReunion.idPuntoReunionTour,
                                idUsuarioTour        = idUsuarioTour
                            }
                                );
                        }

                        sqlService.TransactionalQuery(sqlBuilder.ToString());

                        #endregion
                    }
                }
            }

            usuarioTour            = userTour;
            detalleUsuarioTourList = detailsList;
        }