/// <summary> /// Inicia sesión en el sistema. /// </summary> /// <param name="usuario">Usuario con el que fue registrado el jugador.</param> /// <param name="contrasena">Contraseña con la que se registró el jugador.</param> /// <returns>Si existe un jugador con ese usuario y contraseña regresa el usuario, sino regresa un mensaje de retroalimentación</returns> public string IniciarSesion(string usuarioIngresado, string contrasenaIngresada) { using (BattlesharpEntities BaseDeDatos = new BattlesharpEntities()) { Utilidad utilidad = new Utilidad(); //Primero se verifica que el jugador exista en la base de datos if (utilidad.ExisteUsuario(usuarioIngresado)) { try { //Se busca el jugador que coincida su usario y su contraseña contrasenaIngresada = utilidad.sha256(contrasenaIngresada); var jugadorCoincidente = (from j in BaseDeDatos.jugador where j.usuario.Equals(usuarioIngresado) && j.contrasena.Equals(contrasenaIngresada) select j).SingleOrDefault(); //Se regresa el usuario del jugador para que se muestre en el menú principal return(jugadorCoincidente.usuario); } catch (NullReferenceException) { return("ContrasenaIncorrecta"); } } //Sí no existe el usuario regresa el siguiente mensaje que se usará para mostrarla al cliente else { return("UsuarioNoExiste"); } } }
/// <summary> /// Método que registra un nuevo jugador en el sistema. /// </summary> /// <remarks> /// El usuario con el que se registra el jugador no debe estar registrado previamente. /// </remarks> /// <param name="usuarioIngresado">Usuario que ingresó el jugador para que pueda iniciar sesión posteriormente.</param> /// <param name="contrasenaIngresada">Contraseña que ingresó el jugador para que pueda iniciar sesión posteriormente.</param> /// <param name="nombreIngresado">Nombre del jugador.</param> /// <returns>Mensaje de retroalimentación para dar a conocer el resultado del registro.</returns> public string RegistrarJugador(string usuarioIngresado, string contrasenaIngresada, string nombreIngresado) { Utilidad utilidad = new Utilidad(); using (BattlesharpEntities BaseDeDatos = new BattlesharpEntities()) { //Si no existe un jugador registrado con ese usuario procede a registrarlo if (!utilidad.ExisteUsuario(usuarioIngresado)) { var jugadoresRegistrados = BaseDeDatos.jugador.Count(); //Se crea el jugador con la información pasada por parámetros jugador nuevoJugador = new jugador { idjugador = jugadoresRegistrados, usuario = usuarioIngresado, contrasena = utilidad.sha256(contrasenaIngresada), nombre = nombreIngresado }; //Se registra el jugador en la base de datos BaseDeDatos.jugador.Add(nuevoJugador); //Se guardan los cambios BaseDeDatos.SaveChanges(); //Regresa el mensaje de éxito para ser mostrado en el cliente return("JugadorRegistrado"); } //Si el jugador ya está registrado en la base de datos else { return("UsuarioEnUso"); } } }
/// <summary> /// Busca un jugador registrado. /// </summary> /// <param name="usuarioPorBuscar">El jugador será buscado por su usuario.</param> /// <returns>Regresa el jugador que se encontró.</returns> public jugador BuscarJugador(string usuarioPorBuscar) { using (BattlesharpEntities BaseDeDatos = new BattlesharpEntities()) { //Se busca al jugador que tenga un usuario que coincida con el usuario ingresado var jugadorCoincidente = (from j in BaseDeDatos.jugador where j.usuario.Equals(usuarioPorBuscar) select j).SingleOrDefault(); //Regresa el jugador encontrado return(jugadorCoincidente); } }
/// <summary> /// Verifica si un jugador existe. /// </summary> /// <remarks> /// Esta búsqueda se hace por su usuario. /// </remarks> /// <param name="usuarioPorBuscar">Usuario del jugador que se va a buscar.</param> /// <returns>Regresa si es cierto o falso si el jugador existe.</returns> public bool ExisteUsuario(string usuarioPorBuscar) { using (BattlesharpEntities BaseDeDatos = new BattlesharpEntities()) { //Cuenta jugadores registrados con ese usuario hay var jugadoresConEseUsuario = (from u in BaseDeDatos.jugador where u.usuario.Equals(usuarioPorBuscar) select u).Count(); //Si no hay jugadores con ese usuario if (jugadoresConEseUsuario == 0) { return(false); } //Si hay un jugador con ese usuario else { return(true); } } }
/// <summary> /// Consigue la lista de puntuaciones ordenada de mayor a menor /// </summary> /// <returns>Regresa una lista de Tuplas para poder ser mostrado</returns> public List <Tuple <string, int> > ObtenerMejoresPuntuaciones() { List <Tuple <string, int> > puntuaciones = new List <Tuple <string, int> >(); using (BattlesharpEntities BaseDeDatos = new BattlesharpEntities()) { //Se obtienen todos los elementos de la vista de mejores var puntuacionesOrdenadas = (from j in BaseDeDatos.mejores select j); //Cada elementos del resultado de la busqueda se agrega a la lista foreach (var elemento in puntuacionesOrdenadas) { //Como la tupla solo tiene formato string e int primero se agrega //el usuario ganador y después los puntos obtenidos puntuaciones.Add(new Tuple <string, int>(elemento.usuario, elemento.puntos)); } //Regresa la lista de tuplas return(puntuaciones); } }
/// <summary> /// Registra una nueva puntuación /// </summary> /// <param name="usuarioGanador">Usuario que ganó, se usa para saber el id del jugador</param> /// <param name="puntosObtenidos">Los puntos que tuvo al final de la partida</param> /// <returns>Mensaje de retroalimentación para dar a conocer el resultado del registro.</returns> public string RegistrarPuntuacion(string usuarioGanador, int puntosObtenidos) { Utilidad utilidad = new Utilidad(); using (BattlesharpEntities BaseDeDatos = new BattlesharpEntities()) { //Se obtiene el jugador ganador buscandolo por su usuario para obtener su ID var jugadorGanador = utilidad.BuscarJugador(usuarioGanador); var puntuacionesRegistradas = BaseDeDatos.puntuacion.Count(); //Se crea la nueva puntuacion obteniendo el ID del jugador ganador puntuacion nuevaPuntuacion = new puntuacion() { idpuntuacion = puntuacionesRegistradas, idjugador = jugadorGanador.idjugador, puntos = puntosObtenidos }; //Se agrega la puntuación a la base de datos BaseDeDatos.puntuacion.Add(nuevaPuntuacion); //Se guardan los cambios en la base de datos BaseDeDatos.SaveChanges(); //Regresa un mensaje de texto para ser mostrado en el cliente return("Puntuación registrada"); } }