private void OnTouchButtonSignOut(object sender, TouchEventArgs e) { OpenCloseMainMenu(); FacebookController.Logout(); ModelPoolManager.GetInstance().Remove("Usuario"); this.Update(); }
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(); } }
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); }
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); } } } }
public void OnTouchNavigationButton(object sender, TouchEventArgs e) { NavigationController controller = ModelPoolManager.GetInstance().GetValue("navigationCtrl") as NavigationController; controller.StartNavigation(this.modelNode.name); }
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(); }
private void OnTouchResumeButton(object sender, TouchEventArgs e) { NavigationController controller = ModelPoolManager.GetInstance().GetValue("navigationCtrl") as NavigationController; controller.StartTourNavigation(tourName, detalleUsuarioTourList); }
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); }
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); } } } } }
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; }