/// <summary> /// Consulta los mejores puntajes globales registrados /// </summary> /// <returns>lista de los mejores puntajes</returns> public List <FilaTablaPuntajes> ConsultarMejoresPuntajes() { List <FilaTablaPuntajes> ListaFilas = new List <FilaTablaPuntajes>(); conexionBaseDatos = new ServidorSE(); using (conexionBaseDatos) { List <DAO.Puntuacion> listaPuntajes; try { listaPuntajes = conexionBaseDatos.PuntuacionSet.OrderByDescending(x => x.turnos).Take(10).ToList(); } catch (System.Data.Entity.Core.EntityException) { return(new List <FilaTablaPuntajes>()); } catch (Exception) { return(new List <FilaTablaPuntajes>()); } foreach (var puntaje in listaPuntajes) { ListaFilas.Add(new FilaTablaPuntajes() { Apodo = puntaje.Jugador.apodo, Turnos = puntaje.turnos, Puntos = puntosGanador / puntaje.turnos }); } } return(ListaFilas); }
/// <summary> /// Consulta los mejores puntajes del jugador /// </summary> /// <param name="jugador">Jugador a consultar sus puntajes</param> /// <returns>Lista de los puntajes</returns> public List <FilaTablaPuntajes> ConsultarPuntajesPropios(Jugador jugador) { List <FilaTablaPuntajes> ListaFilas = new List <FilaTablaPuntajes>(); conexionBaseDatos = new ServidorSE(); using (conexionBaseDatos) { List <DAO.Puntuacion> listaPuntajes; try { listaPuntajes = conexionBaseDatos.PuntuacionSet.Where(p => p.Jugador.apodo.Equals(jugador.Apodo)).ToList(); } catch (System.Data.Entity.Core.EntityException) { return(new List <FilaTablaPuntajes>()); } catch (Exception) { return(new List <FilaTablaPuntajes>()); } foreach (var puntaje in listaPuntajes) { ListaFilas.Add(new FilaTablaPuntajes() { Apodo = puntaje.Jugador.apodo, Turnos = puntaje.turnos, Puntos = puntosGanador / puntaje.turnos }); } } return(ListaFilas); }
/// <summary> /// Regresa el correo de la cuenta y su campo de validada /// </summary> /// <param name="cuenta"> cuenta ingresada por el cliente</param> /// <returns>Cuenta con el campo validada</returns> public Cuenta VerificarCuenta(Cuenta cuenta) { conexionBaseDatos = new ServidorSE(); using (conexionBaseDatos) { DAO.Cuenta cuentaRecuperada; try { cuentaRecuperada = conexionBaseDatos.CuentaSet.Where(c => c.correo.Equals(cuenta.Correo)).FirstOrDefault(); if (cuentaRecuperada != null && cuentaRecuperada.correo.Equals(cuenta.Correo)) { return(new Cuenta { Correo = cuentaRecuperada.correo, Validada = cuentaRecuperada.validada }); } } catch (System.Data.Entity.Core.EntityException) { return(new Cuenta { Correo = errorConexionBaseDatos }); } } return(null); }
/// <summary> /// Permite iniciar sesión comparando la cuenta ingresada con la base de datos /// </summary> /// <param name="cuenta"> cuenta ingresada por el usuario</param> /// <returns></returns> public Jugador IniciarSesion(Cuenta cuenta) { conexionBaseDatos = new ServidorSE(); using (conexionBaseDatos) { DAO.Cuenta cuentaRecuperada; try { cuentaRecuperada = conexionBaseDatos.CuentaSet.Where(c => c.correo.Equals(cuenta.Correo)).FirstOrDefault(); if (cuentaRecuperada != null && cuentaRecuperada.correo.Equals(cuenta.Correo)) { String contreseñaHasheada = ObtenerHash(cuenta.Contraseña, cuentaRecuperada.salt); if (contreseñaHasheada.Equals(cuentaRecuperada.password)) { cuentaRecuperada.secionIniciada = true; conexionBaseDatos.Entry(cuentaRecuperada).State = System.Data.Entity.EntityState.Modified; conexionBaseDatos.SaveChanges(); return(new Jugador() { Apodo = cuentaRecuperada.Jugador.apodo }); } } } catch (System.Data.Entity.Core.EntityException) { return(new Jugador { Apodo = errorConexionBaseDatos }); } } return(null); }
/// <summary> /// Abre el archivo donde se encuentra el nombre de correo y contraseña del juego, /// desencripta el usuario y contraseña, envia el correo al destinatario /// </summary> /// <param name="cuenta">cuenta a la que se le enviará el correo</param> /// <returns>1 si el correo fue enviado</returns> public int EnviarCorreo(Cuenta cuenta) { conexionBaseDatos = new ServidorSE(); using (conexionBaseDatos) { DAO.Cuenta cuentaRecuperada; try { cuentaRecuperada = conexionBaseDatos.CuentaSet.Where(c => c.correo.Equals(cuenta.Correo)).FirstOrDefault(); if (cuentaRecuperada == null) { return((int)EstadoDeOperacion.CuentaNoEncontrada); } if (!cuentaRecuperada.correo.Equals(cuenta.Correo)) { return((int)EstadoDeOperacion.CuentaNoEncontrada); } } catch (System.Data.Entity.Core.EntityException) { return((int)EstadoDeOperacion.ErrorConexionBD); } MessageService.Encriptador encriptador = new MessageService.Encriptador(); Stream openFileStream = File.OpenRead("CuentaCorreo.txt"); BinaryFormatter deserializer = new BinaryFormatter(); String correoJuego = (String)deserializer.Deserialize(openFileStream); String contraseñaJuego = (String)deserializer.Deserialize(openFileStream); openFileStream.Close(); MailAddress direccionJuego = new MailAddress(encriptador.Desencriptar(correoJuego), "LIRI Games"); MailAddress direccionJugador = new MailAddress(cuenta.Correo, cuentaRecuperada.Jugador.apodo); MailMessage correo = new MailMessage(direccionJuego, direccionJugador); correo.Subject = "Activación de la cuenta de Serpientes y Escaleras"; correo.Body = "<p>Código para la activación de la cuenta: " + cuentaRecuperada.salt + " </p><br>"; correo.IsBodyHtml = true; SmtpClient clienteSmtp = new SmtpClient("smtp.gmail.com"); clienteSmtp.EnableSsl = true; clienteSmtp.UseDefaultCredentials = false; clienteSmtp.Port = 587; clienteSmtp.Credentials = new System.Net.NetworkCredential(direccionJuego.Address, encriptador.Desencriptar(contraseñaJuego)); try { clienteSmtp.Send(correo); } catch (Exception) { return((int)EstadoDeOperacion.NoSeEnvioCorreo); } clienteSmtp.Dispose(); return((int)EstadoDeOperacion.OperacionExitosa); } }
/// <summary> /// /// </summary> /// <param name="jugador"></param> /// <param name="cuenta"></param> /// <returns></returns> public int RegistrarJugador(Jugador jugador, Cuenta cuenta) { conexionBaseDatos = new ServidorSE(); using (conexionBaseDatos) { DAO.Jugador jugadorRecuperado; DAO.Cuenta cuentaRecuperada; try { jugadorRecuperado = conexionBaseDatos.JugadorSet.Where(j => j.apodo.Equals(jugador.Apodo)).FirstOrDefault(); cuentaRecuperada = conexionBaseDatos.CuentaSet.Where(c => c.correo.Equals(cuenta.Correo)).FirstOrDefault(); if (jugadorRecuperado != null && jugadorRecuperado.apodo.Equals(jugador.Apodo)) { return((int)EstadoDeOperacion.JugadorEncontrado); } if (cuentaRecuperada != null && cuentaRecuperada.correo.Equals(cuenta.Correo)) { return((int)EstadoDeOperacion.CuentaEncontrada); } String nuevoSalt; nuevoSalt = ObtenerSalt(); DAO.Jugador nuevoJugador = new DAO.Jugador() { apodo = jugador.Apodo, nombre = jugador.Nombre, apellidos = jugador.Apellidos }; conexionBaseDatos.CuentaSet.Add(new DAO.Cuenta() { correo = cuenta.Correo, password = ObtenerHash(cuenta.Contraseña, nuevoSalt), salt = nuevoSalt, validada = false, secionIniciada = false, Jugador = nuevoJugador, }); conexionBaseDatos.SaveChanges(); } catch (System.Data.Entity.Core.EntityException) { return((int)EstadoDeOperacion.ErrorConexionBD); } catch (Exception) { return((int)EstadoDeOperacion.Excepcion); } } return((int)EstadoDeOperacion.OperacionExitosa); }
/// <summary> /// Registra el puntaje obtenido por el jugador que ganó la partida /// </summary> /// <param name="indiceSala"> Posición dentro del arreglo de salas abiertas</param> private int RegistrarPuntaje(int indiceSala) { conexionBaseDatos = new ServidorSE(); using (conexionBaseDatos) { DAO.Jugador jugadorRecuperado; try { jugadorRecuperado = conexionBaseDatos.JugadorSet.Where(j => j.apodo.Equals(salasAbiertas[indiceSala].JugadorEnTurno)).FirstOrDefault(); if (jugadorRecuperado != null && jugadorRecuperado.apodo.Equals(salasAbiertas[indiceSala].JugadorEnTurno)) { return((int)EstadoDeOperacion.OperacionExitosa); } } catch (System.Data.Entity.Core.EntityException) { return((int)EstadoDeOperacion.ErrorConexionBD); } return((int)EstadoDeOperacion.OperacionExitosa); } }
/// <summary> /// Cambia el atributo de "validada" a true porque valida la cuenta /// </summary> /// <param name="cuenta">Cuenta ingresada a buscar</param> /// <param name="codigo">codigo de activación</param> /// <returns></returns> public int ActivarCuentaJugador(Cuenta cuenta, String codigo) { conexionBaseDatos = new ServidorSE(); using (conexionBaseDatos) { DAO.Cuenta cuentaRecuperada; try { cuentaRecuperada = conexionBaseDatos.CuentaSet.Where(c => c.correo.Equals(cuenta.Correo)).FirstOrDefault(); if (cuentaRecuperada != null && !cuentaRecuperada.correo.Equals(cuenta.Correo)) { return((int)EstadoDeOperacion.CuentaNoEncontrada); } if (cuentaRecuperada == null) { return((int)EstadoDeOperacion.CuentaNoEncontrada); } if (!cuentaRecuperada.salt.Equals(codigo)) { return((int)EstadoDeOperacion.CodigoInvalido); } cuentaRecuperada.validada = true; conexionBaseDatos.Entry(cuentaRecuperada).State = System.Data.Entity.EntityState.Modified; conexionBaseDatos.SaveChanges(); } catch (System.Data.Entity.Core.EntityException) { return((int)EstadoDeOperacion.ErrorConexionBD); } catch (Exception) { return((int)EstadoDeOperacion.Excepcion); } } return((int)EstadoDeOperacion.OperacionExitosa); }