public Boolean InserirPergunta()
 {
     try
     {
         using (var _context = new Show_de_PerguntasEntities())
         {
             Pergunta p = new Pergunta();
             p.enunciado = this.enunciado;
             p.Tema_IdTema = this.idTema;
             p.dificuldade = this.dificuldade;
             p.alternativaCorreta = this.alternativaCorreta;
             p.alternativaIncorreta1 = this.alternativaIncorreta1;
             p.alternativaIncorreta2 = this.alternativaIncorreta2;
             p.alternativaIncorreta3 = this.alternativaIncorreta3;
             p.alternativaIncorreta4 = this.alternativaIncorreta4;
             _context.AddToPerguntas(p);
             _context.SaveChanges();
             return true;
         }
     }
     catch (Exception)
     {
         return false;
         // throw;
     }
 }
 public Usuario BuscarUsuario(String login)
 {
     using (var _context = new Show_de_PerguntasEntities())
     {
         return _context.Usuarios.FirstOrDefault(u => u.login == login);
     }
 }
 public Boolean AtualizarPergunta()
 {
     try
     {
         using (var _context = new Show_de_PerguntasEntities())
         {
             Pergunta pergunta = (from p in _context.Perguntas where p.IdPergunta.Equals(this.idPergunta) select p).First();
             pergunta.enunciado = this.enunciado;
             pergunta.Tema_IdTema = this.idTema;
             pergunta.dificuldade = this.dificuldade;
             pergunta.alternativaCorreta = this.alternativaCorreta;
             pergunta.alternativaIncorreta1 = this.alternativaIncorreta1;
             pergunta.alternativaIncorreta2 = this.alternativaIncorreta2;
             pergunta.alternativaIncorreta3 = this.alternativaIncorreta3;
             pergunta.alternativaIncorreta4 = this.alternativaIncorreta4;
             pergunta.vezesRespondidaAltCorreta = this.estatisticaAltCorreta;
             pergunta.vezesRespondidaAltIncorreta1 = this.estatisticaAltIncorreta1;
             pergunta.vezesRespondidaAltIncorreta2 = this.estatisticaAltIncorreta2;
             pergunta.vezesRespondidaAltIncorreta3 = this.estatisticaAltIncorreta3;
             pergunta.vezesRespondidaAltIncorreta4 = this.estatisticaAltIncorreta4;    
             _context.SaveChanges();
         }
         return true;
     }
     catch (Exception)
     {
         return false;
         //throw;
     }
 }
 public List<Tema> BuscarTemas()
 {
     using (var _context = new Show_de_PerguntasEntities())
     {
         return _context.Temas.ToList();
     }
 }
 public int BuscarPosicaoJogador()
 {
     int posicao = 1;
     try
     {
         using (var _context = new Show_de_PerguntasEntities())
         {
             List<Ranking> ranking = _context.Rankings.ToList();
             foreach (Ranking r in ranking)
             {
                 if (r.Usuario.IdUsuario.Equals(this.IdUsuario))
                 {
                     return posicao;
                 }
                 posicao++;
             }
             return -1;
         }
     }
     catch (Exception)
     {
         return -1;
         //throw;
     }
 }
 public Tema BuscarTemaPorId(int id)
 {
     using (var _context = new Show_de_PerguntasEntities())
     {
         return (from t in _context.Temas where t.IdTema.Equals(id) select t).First();
     }
 }
 public List<Usuario> BuscarUsuarios()
 {
     using (var _context = new Show_de_PerguntasEntities())
     {
         var result = _context.Usuarios.ToList();
         return result;
     }
 }
 public List<Pergunta> BuscarPergunta()
 {
     try
     {
         using (var _context = new Show_de_PerguntasEntities())
         {
             return _context.Perguntas.ToList();
         }
     }
     catch (Exception)
     {
         return null;
         // throw;
     }
 }
 public Boolean InserirPontuacaoPorJogador()
 {
     try
     {
         using (var _context = new Show_de_PerguntasEntities())
         {
             Ranking r = new Ranking();
             r.pontuacaoMaxima = this.pontuacaoMax;
             r.UsuarioIdUsuario = this.IdUsuario;
             _context.AddToRankings(r);
             _context.SaveChanges();
         }
         return true;
     }
     catch (Exception)
     {
         return false;
         //throw;
     }
 }
 public Boolean AtualizarUsuario()
 {
     try
     {
         using (var _context = new Show_de_PerguntasEntities())
         {
             Usuario user = (from u in _context.Usuarios where u.IdUsuario.Equals(this.IdUsuario) select u).First();
             user.nome = this.nome;
             user.sobrenome = this.sobrenome;
             user.login = this.login;
             user.senha = this.senha;
             _context.SaveChanges();
         }
         return true;
     }
     catch (Exception)
     {
         return false;
         // throw;
     }
 }
        public Boolean BuscarPontuacaoPorJogador()
        {
            try
            {
                using (var _context = new Show_de_PerguntasEntities())
                {
                    Ranking ranking = (from r in _context.Rankings where r.Usuario.IdUsuario.Equals(this.IdUsuario) select r).FirstOrDefault();
                    if (ranking != null)
                        this.pontuacaoMax = ranking.pontuacaoMaxima;
                    else
                        this.pontuacaoMax = 0;

                }
                return true;
            }
            catch (Exception)
            {
                return false;
                //throw;
            }
        }
 public Boolean InserirUsuario()
 {
     try
     {
         using (var _context = new Show_de_PerguntasEntities())
         {
             Usuario u = new Usuario();
             u.nome = this.nome;
             u.sobrenome = this.sobrenome;
             u.login = this.login;
             u.senha = this.senha;
             u.dataCadastro = DateTime.Now;
             _context.AddToUsuarios(u); 
             _context.SaveChanges();
             return true;
         }
     }
     catch (Exception)
     {
         return false;
         // throw;
     }
 }
 public Boolean DeletarPergunta()
 {
     try
     {
         using (var _context = new Show_de_PerguntasEntities())
         {
             Pergunta pergunta = (from p in _context.Perguntas where p.IdPergunta.Equals(this.idPergunta) select p).First();
             _context.DeleteObject(pergunta);
             _context.SaveChanges();
         }
         return true;
     }
     catch (Exception)
     {
         return false;
         //throw;
     }
 }
 public Boolean BuscarPerguntaPorId(int id)
 {
     try
     {
         using (var _context = new Show_de_PerguntasEntities())
         {
             Pergunta pergunta = (from p in _context.Perguntas where p.IdPergunta.Equals(id) select p).First();
             this.idPergunta = pergunta.IdPergunta;
             this.enunciado = pergunta.enunciado;
             this.dificuldade = pergunta.dificuldade;
             this.alternativaCorreta = pergunta.alternativaCorreta;
             this.alternativaIncorreta1 = pergunta.alternativaIncorreta1;
             this.alternativaIncorreta2 = pergunta.alternativaIncorreta2;
             this.alternativaIncorreta3 = pergunta.alternativaIncorreta3;
             this.alternativaIncorreta4 = pergunta.alternativaIncorreta4;
             this.estatisticaAltCorreta = pergunta.vezesRespondidaAltCorreta;
             this.estatisticaAltIncorreta1 = pergunta.vezesRespondidaAltIncorreta1;
             this.estatisticaAltIncorreta2 = pergunta.vezesRespondidaAltIncorreta2;
             this.estatisticaAltIncorreta3 = pergunta.vezesRespondidaAltIncorreta3;
             this.estatisticaAltIncorreta4 = pergunta.vezesRespondidaAltIncorreta4;
             this.idTema = pergunta.Tema_IdTema;
             return true;
         }
     }
     catch (Exception)
     {
         return false;
         // throw;
     }
 }
        public Boolean BuscarJogadorPorId(int id)
        {
            try 
	        {
	            using (var _context = new Show_de_PerguntasEntities())
                {
                    Usuario user = (from u in _context.Usuarios where u.IdUsuario.Equals(id) select u).First();
                    this.IdUsuario = user.IdUsuario;
                    this.nome = user.nome;
                    this.sobrenome = user.sobrenome;
                    this.login = user.login;
                    this.senha = user.senha;
                    this.data = user.dataCadastro;
                }
                return true;
	        }
	        catch (Exception)
	        {
                return false;
		        //throw;
	        }            
        }
 public List<Usuario> BuscarJogadores()
 {
     using (var _context = new Show_de_PerguntasEntities())
     {
         var result = (from u in _context.Usuarios where u.IdUsuario > 0 select u).ToList();
         return result;
     }
 }
 public Boolean RemoverJogadorRanking()
 {
     try
     {
         using (var _context = new Show_de_PerguntasEntities())
         {
             Ranking ranking = (from r in _context.Rankings where r.Usuario.IdUsuario.Equals(this.IdUsuario) select r).FirstOrDefault();
             if (ranking != null)
             {
                 _context.DeleteObject(ranking);
                 _context.SaveChanges();
             }
         }
         return true;
     }
     catch (Exception)
     {
         return false;
         //throw;
     }
 }
 public Boolean ZerarRanking()
 {
     try
     {
         using (var _context = new Show_de_PerguntasEntities())
         {
             List<Ranking> ranking = _context.Rankings.ToList();
             foreach (Ranking r in ranking)
             {
                 _context.DeleteObject(r);
                 _context.SaveChanges();
             }
         }
         return true;
     }
     catch (Exception)
     {
         return false;
         //throw;
     }
 }
 public Boolean DeletarJogador()
 {
     try
     {
         using (var _context = new Show_de_PerguntasEntities())
         {
             Usuario usuario = (from u in _context.Usuarios where u.IdUsuario.Equals(this.IdUsuario) select u).First();
             _context.DeleteObject(usuario);
             _context.SaveChanges();
         }
         return true;
     }
     catch (Exception)
     {
         return false;
         //throw;
     }
 }
 public List<Pergunta> BuscarPerguntaPorDificuldade(int dif)
 {
     try
     {
         using (var _context = new Show_de_PerguntasEntities())
         {
             var result = (from p in _context.Perguntas where p.dificuldade.Equals(dif) select p).ToList();
             return result;
         }
     }
     catch (Exception)
     {
         return null;
         //throw;
     }
 }