示例#1
0
        /// <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);
        }
示例#2
0
 /// <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);
 }
示例#3
0
        /// <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);
        }
示例#4
0
        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);
        }
示例#5
0
        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));
            });
        }
示例#6
0
        /*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);
            }
        }
示例#7
0
 //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
     });
 }
示例#8
0
 //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);
        }
示例#10
0
        /// <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);
        }
示例#11
0
        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);
                }
            }
        }
示例#12
0
        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);
        }
示例#13
0
        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));
 }
示例#15
0
        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;
            }
        }
示例#16
0
 public async void ActualizarApi(clsSala salaActu)
 {
     clsManejadora maneja = new clsManejadora();
     await maneja.actualizarUsuariosSala(salaActu);
 }