Esempio n. 1
0
        public async Task <IHttpActionResult> ValidateAnswer(int answerId, int userId)
        {
            try
            {
                using (var context = new gamequizlgpdEntities())
                {
                    if (userId == 0)
                    {
                        return(BadRequest("Usuario invalido"));
                    }

                    if (answerId == 0)
                    {
                        return(BadRequest("Alternativa invalida"));
                    }

                    var answerChosen = await context.Respostas.FirstOrDefaultAsync(p => p.Id == answerId);

                    if (answerChosen == null)
                    {
                        return(BadRequest("Alternativa não encontrada"));
                    }

                    //salva a resposta no banco
                    var answerUserModel = new RepostasUsuarios
                    {
                        QuestaoId  = answerChosen.QuestaoId,
                        RespostaId = answerId,
                        UsuarioId  = userId,
                    };

                    context.Entry(answerUserModel).State = EntityState.Added;
                    context.SaveChanges();

                    //valida se esta correta a resposta escolhida
                    var model = new ValidateAnswerModel();

                    if (answerChosen.RespostaCorreta)
                    {
                        AddScoreUser(userId, answerChosen.QuestaoId);

                        model.IsCorrectAnswer = true;
                        model.LifeUser        = await UserLife(userId);
                    }
                    else
                    {
                        DamageLifeUser(userId);

                        model.IsCorrectAnswer = false;
                        model.LifeUser        = await UserLife(userId);
                    }

                    return(Ok(model));
                }
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public IHttpActionResult GetRanking()
        {
            try
            {
                using (var context = new gamequizlgpdEntities())
                {
                    var viewModel = new RankingModel();

                    viewModel.ListUsers = context.Usuarios
                                          .Where(p => p.Pontos != 0)
                                          .OrderByDescending(p => p.Pontos)
                                          .Select(p => new UserModel
                    {
                        Id     = p.Id,
                        Name   = p.Nome,
                        Points = p.Pontos,
                    })
                                          .Take(10).ToList();

                    return(Ok(viewModel));
                }
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Esempio n. 3
0
        public IHttpActionResult GetQuestions()
        {
            try
            {
                using (var context = new gamequizlgpdEntities())
                {
                    var viewModel = new ListQuestionsModel();

                    var iziQuestions = context.Questoes
                                       .Where(p => p.NiveisDificuldadesId == 1 || p.NiveisDificuldadesId == 2 || p.NiveisDificuldadesId == 3)
                                       .Include(p => p.Respostas)
                                       .Take(10);

                    viewModel.ListQuestions = iziQuestions.Select(p => new QuestionModel
                    {
                        Id          = p.Id,
                        Question    = p.Questao,
                        ListAnswers = p.Respostas.Select(x => new AnswerModel
                        {
                            Id            = x.Id,
                            Answer        = x.Resposta,
                            AnswerCorrect = x.RespostaCorreta,
                        }).ToList(),
                    }).ToList();

                    return(Ok(viewModel));
                }
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Esempio n. 4
0
        public async Task <int> UserLife(int userId)
        {
            using (var context = new gamequizlgpdEntities())
            {
                var lifeUser = context.Usuarios.FirstOrDefault(p => p.Id == userId).Vida;

                return(Convert.ToInt32(lifeUser));
            }
        }
Esempio n. 5
0
        public void AddScoreUser(int userId, int questionId)
        {
            using (var context = new gamequizlgpdEntities())
            {
                var user           = context.Usuarios.FirstOrDefault(p => p.Id == userId);
                var questionPoints = context.Questoes.FirstOrDefault(p => p.Id == questionId).NiveisDificuldades.Pontos;

                user.Pontos = user.Pontos + questionPoints;

                context.Entry(user).State = EntityState.Modified;
                context.SaveChanges();
            }
        }
Esempio n. 6
0
        public void DamageLifeUser(int userId)
        {
            using (var context = new gamequizlgpdEntities())
            {
                var user = context.Usuarios.FirstOrDefault(p => p.Id == userId);

                if (user.Vida > 0)
                {
                    user.Vida = user.Vida - 1;

                    context.Entry(user).State = EntityState.Modified;
                    context.SaveChanges();
                }
            }
        }
        public IHttpActionResult GetUserScore(int userId)
        {
            try
            {
                using (var context = new gamequizlgpdEntities())
                {
                    var userScore = context.Usuarios.FirstOrDefault(p => p.Id == userId).Pontos;

                    return(Ok(userScore));
                }
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public async Task <IHttpActionResult> RegisterUser(string name)
        {
            try
            {
                if (string.IsNullOrEmpty(name))
                {
                    return(BadRequest("Apelido inválido"));
                }

                if (name.Length != 3)
                {
                    return(BadRequest("O apelido deve conter exatos 3 caracteres"));
                }

                bool specialCharacters = Regex.IsMatch(name, (@"[^a-zA-Z0-9]"));
                if (specialCharacters)
                {
                    return(BadRequest("Não é permitido uso de caracteres especiais"));
                }

                using (var context = new gamequizlgpdEntities())
                {
                    var userModel = new Usuarios
                    {
                        Nome   = name,
                        Pontos = 0,
                        Vida   = 3,
                    };

                    context.Entry(userModel).State = EntityState.Added;
                    context.SaveChanges();

                    return(Ok(userModel.Id));
                }
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }