/// <summary> /// Actualiza la sala que recibe por parámetros /// </summary> /// <param name="salita"></param> /// <returns></returns> public async Task <int> actualizarUsuariosSala(clsSala salita) { HttpClient mihttpClient = new HttpClient(); String datos; int filas = -1; HttpContent contenido; Uri miUri = new Uri($"{stringURIapi}/{salita.id}"); HttpResponseMessage miRespuesta = new HttpResponseMessage(); try { datos = JsonConvert.SerializeObject(salita); contenido = new StringContent(datos, System.Text.Encoding.UTF8, "application/json"); miRespuesta = await mihttpClient.PutAsync(miUri, contenido); if (miRespuesta.IsSuccessStatusCode) { filas = 1; } } catch { //TODO filas = 0; } return(filas); }
/// <summary> /// Añade una conexion a una sala. /// </summary> /// <param name="roomName"></param> /// <returns></returns> public async Task JoinRoomAsync(clsSala salita) { Groups.Add(Context.ConnectionId, salita.nombre); salita.usuariosConectados++; //manejadora.actualizarUsuariosSala(salita); Clients.All.ContarUsuarios(salita); }
/// <summary> /// Este método inserta una nueva sala en la base de datos /// </summary> /// <param name="sala">La sala a insertar</param> /// <returns>El númeror de filas afectadas</returns> public static int insertarSala(clsSala sala) { clsMyConnection clsMyConnection = new clsMyConnection(); SqlConnection sqlConnection = new SqlConnection(); SqlCommand sqlCommand = new SqlCommand(); int numeroFilasAfectadas = 0; sqlCommand.Parameters.AddWithValue("@Nick", sala.Nick); sqlCommand.Parameters.AddWithValue("@Localidad", sala.Localidad); sqlCommand.Parameters.AddWithValue("@Direccion", sala.Direccion); sqlCommand.Parameters.AddWithValue("@Provincia", sala.Provincia); sqlCommand.CommandText = "INSERT INTO Sala (Nick, Localidad, Direccion, Provincia) Values (@Nick, @Localidad, @Direccion, @Provincia)"; try { sqlConnection = clsMyConnection.getConnection(); sqlCommand.Connection = sqlConnection; numeroFilasAfectadas = sqlCommand.ExecuteNonQuery(); } catch (SqlException) { throw; } finally { clsMyConnection.closeConnection(ref sqlConnection); } return(numeroFilasAfectadas); }
public async Task <Boolean> canUnirseSala(int idSala) { Boolean veredicto = false; clsSala sala = new clsSala(); Uri UriApi = new Uri("https://adivinaquiensoyapirest.azurewebsites.net/api/Salas/" + idSala); int Usuarios = -1; String res; HttpClient client = new HttpClient(); HttpResponseMessage response = await client.GetAsync(UriApi); if (response.IsSuccessStatusCode) { res = await response.Content.ReadAsStringAsync(); sala = JsonConvert.DeserializeObject <clsSala>(res); Usuarios = sala.usuariosConectados; } if (Usuarios < 2) { veredicto = true; } return(veredicto); }
private async void volverLobby() { ActualizarUi(); int i = 0; do { Thread.Sleep(1000); i++; } while (i < 3); clsSala sala = new clsSala(); sala.id = maneja.ObtenerIDSala(myApp.sala); sala.nombre = myApp.sala; sala.usuariosConectados = 0; await maneja.actualizarUsuariosSala(sala); await Windows.ApplicationModel.Core.CoreApplication.MainView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { if (conn.State == Microsoft.AspNet.SignalR.Client.ConnectionState.Connected) { ChatProxy.Invoke("LeaveGroupDef", myApp.sala); } myApp.esVolver = true;//Debemos hacer que abandonen el grupo aqui tambn this.Frame.Navigate(typeof(lobby_screen)); }); }
/*private void addToGroup(string groupName) * { * if (conn.State == Microsoft.AspNet.SignalR.Client.ConnectionState.Connected) * { * ChatProxy.Invoke("JoinGroup", groupName); * } * } */ private async void onInfo(clsSala obj) { await Windows.ApplicationModel.Core.CoreApplication.MainView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() => { /* * if (!myApp.sala.Equals("")) { * Cargando.Visibility = Visibility.Visible; * } */ clsManejadora manejadora = new clsManejadora(); manejadora.actualizarUsuariosSala(obj); var sala = (clsSala)listSalas.Items[obj.id - 1]; if (sala != null) { sala.usuariosConectados = obj.usuariosConectados; } }); if (conn.State == Microsoft.AspNet.SignalR.Client.ConnectionState.Connected) { SalasProxy.Invoke("PasarAsalaServer", obj.nombre); } }
//ya llega aqui al darle click del server que se ha conectado. debemos controlar qe se pueda o no conectar aqui private async void onInfo(clsSala obj) { await Windows.ApplicationModel.Core.CoreApplication.MainView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() => { //Actualizar con la info que llega del server en el objeto clsSala obj }); }
//aqui lo mandaremos al server y lo conectaremos e avisaremos a todos los usuarios de que esta conectado. public static void Position(clsSala info) { if (conn.State == Microsoft.AspNet.SignalR.Client.ConnectionState.Connected) { info.id = 1; info.nombre = "sala 1"; info.usuariosConectados = 0; MyHubProxy.Invoke("JoinRoomAsync", info); } }
// POST: api/Sala public int Post([FromBody] clsSala sala) { int filasAfectadas = 0; try { filasAfectadas = clsGestoraUsuarioBL.insertarUsuario(sala); filasAfectadas = clsGestoraSalaBL.insertarSala(sala); } catch (Exception e) { throw new HttpResponseException(HttpStatusCode.ServiceUnavailable); } return(filasAfectadas); }
/// <summary> /// Este método obtiene de la base de datos el listado de salas /// </summary> /// <returns>El listado de salas</returns> public static List <clsSala> obtenerListadoSalas() { clsMyConnection conexion = new clsMyConnection(); SqlConnection sqlConnection = new SqlConnection(); SqlCommand command = new SqlCommand(); List <clsSala> listadoSalas = new List <clsSala>(); SqlDataReader reader; clsSala sala; try { sqlConnection = conexion.getConnection(); command.CommandText = "SELECT * FROM Usuario AS U INNER JOIN Sala AS S ON U.Nick = S.Nick"; command.Connection = sqlConnection; reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { sala = new clsSala(); sala.Nick = (String)reader["Nick"]; sala.Email = (String)reader["Email"]; sala.Nombre = (String)reader["Nombre"]; if (reader["Imagen"] != System.DBNull.Value) { sala.Imagen = (String)reader["Imagen"]; } sala.Localidad = (String)reader["Localidad"]; sala.Direccion = (String)reader["Direccion"]; sala.Provincia = (String)reader["Provincia"]; listadoSalas.Add(sala); } } reader.Close(); } catch (SqlException e) { throw e; } finally { conexion.closeConnection(ref sqlConnection); } return(listadoSalas); }
public static async void Position(clsSala info) { if (info.usuariosConectados < 2) { if (conn.State == Microsoft.AspNet.SignalR.Client.ConnectionState.Connected) { if (info.usuariosConectados == 0) { myApp.miTurno = true; } else { myApp.miTurno = false; } await SalasProxy.Invoke("JoinRoomAsync", info); } } }
public async Task <int> obtenerUsuariosSala(String salita) { clsSala sala = new clsSala(); int idSala = ObtenerIDSala(salita); Uri miUri = new Uri($"{stringURIapi}/{idSala}"); String res; HttpClient client = new HttpClient(); HttpResponseMessage response = await client.GetAsync(miUri); if (response.IsSuccessStatusCode) { res = await response.Content.ReadAsStringAsync(); sala = JsonConvert.DeserializeObject <clsSala>(res); } return(sala.usuariosConectados); }
private async void ButtonJoin_Click(object sender, RoutedEventArgs e) { //Hacer get a la sala de unirse clsSala info = new clsSala(); info.id = 1; info.nombre = "sala 1"; info.usuariosConectados = 0; clsManejadora manejadora = new clsManejadora(); Boolean ret = await manejadora.canUnirseSala(info.id); if (ret) { Position(info); } else { //TODO } //Debemos llamar a la api, e introducir los datos de la sala para pedir la info y rellenar el objeto //vete al position }
/// <summary> /// Este método llama a la capa DAL para insertar una nuev sala en la base de datos /// </summary> /// <param name="sala">La nueva sala</param> /// <returns>El número de filas afectadas</returns> public static int insertarSala(clsSala sala) { return(clsGestoraSalaDAL.insertarSala(sala)); }
public game_screen() { this.InitializeComponent(); Windows.UI.Core.Preview.SystemNavigationManagerPreview.GetForCurrentView().CloseRequested += async(sender, args) => { args.Handled = true; //salirDelJuego.Visibility = Visibility.Visible; await _dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { salirDelJuego.Visibility = Visibility.Visible; //Cambiar aqui, cambiar desde el vm int i = 0; do { Thread.Sleep(1000); i++; } while (i < 1); }); if (!myApp.sala.Equals("")) { //Quitamos content dialog porque son una basura clsSala sala = new clsSala(); sala.id = maneja.ObtenerIDSala(myApp.sala); sala.nombre = myApp.sala; sala.usuariosConectados = 0; //Mostrar saliendo de sala ActualizarApi(sala); //LLamar a un metodo del serveer salirAbruptamente(); App.Current.Exit(); } else { App.Current.Exit(); } }; _dispatcher = Window.Current.Dispatcher; vm = (viewModel)this.DataContext; SignalR(); cargando(); send.nickName = vm.nickJugador; send.groupName = sala; if (conn.State == Microsoft.AspNet.SignalR.Client.ConnectionState.Connected) { ChatProxy.Invoke("JoinGroup", myApp.sala); } sumarmeAJugadoresConectados(); if (myApp.miTurno) { vm.turnoBool = true; } else { vm.turnoBool = false; } }
public async void ActualizarApi(clsSala salaActu) { clsManejadora maneja = new clsManejadora(); await maneja.actualizarUsuariosSala(salaActu); }