Exemplo n.º 1
0
 /// <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 ErstickModeloContainer();
     using (conexionBaseDatos)
     {
         erstickDAO.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 == false)
                 {
                     cuentaRecuperada.secionIniciada = true;
                     conexionBaseDatos.Entry(cuentaRecuperada).State = System.Data.Entity.EntityState.Modified;
                     conexionBaseDatos.SaveChanges();
                     return(new Jugador()
                     {
                         Apodo = cuentaRecuperada.Jugador.apodo
                     });
                 }
                 if (contreseñaHasheada.Equals(cuentaRecuperada.password) && cuentaRecuperada.secionIniciada == true)
                 {
                     return(new Jugador {
                         Apodo = "Error la cuenta se encuentra iniciada"
                     });
                 }
             }
         }
         catch (System.Data.Entity.Core.EntityException)
         {
             return(new Jugador {
                 Apodo = errorConexionBaseDatos
             });
         }
     }
     return(null);
 }