public IActionResult Play(string id) { Guid playerId = Guid.Empty; string playerIdString = HttpContext.Request.Cookies["drx1e"]; if (playerIdString == null) { return(RedirectToAction(nameof(Index))); } try { Guid.TryParse(playerIdString, out playerId); } catch (FormatException) { return(RedirectToAction(nameof(Index))); } Quiz quizplayers = _quizService.GetQuizWithPlayersByLink(id); QuizPlayer player = quizplayers.QuizPlayers.FirstOrDefault(qp => qp.PlayerId.Equals(playerId)); if (player == null || player.HasPlayed) { return(RedirectToAction(nameof(Room), new { id = id })); } Quiz quiz = _quizService.GetQuizWithQuestions(id); PlayQuizVM playQuizVM = new PlayQuizVM { Questions = quiz.Questions.ToArray(), PlayerName = player.Player.Name }; return(View(playQuizVM)); }
public async Task <IActionResult> Play(string id, PlayQuizVM playQuizVM) { Guid playerId = Guid.Empty; int correctAnswers = 0; string playerIdString = HttpContext.Request.Cookies["drx1e"]; if (playerIdString == null) { return(RedirectToAction(nameof(Index))); } try { Guid.TryParse(playerIdString, out playerId); } catch (FormatException) { return(RedirectToAction(nameof(Index))); } Quiz quiz = _quizService.GetQuizWithQuestions(id); Question[] questions = quiz.Questions.ToArray(); playQuizVM.Questions = quiz.Questions.ToArray(); string answers = string.Empty; for (int i = 0; i < questions.Length; i++) { Question question = questions[i]; string optionIndexString = $"selectedAnswer[{i}]"; string option = Request.Form[optionIndexString]; if (option != null) { answers += option; // if (_questionService.IsRightAnswer(question, option)) correctAnswers++; if (question.CorrectOption.Equals(option)) { correctAnswers++; } } else { answers += "null"; } if (i < questions.Length - 1) { answers += "-"; } } Quiz updatedQuiz = _quizService.SetPlayerScore(id, playerId, correctAnswers); QuizPlayer quizPlayer = updatedQuiz.QuizPlayers .FirstOrDefault(qp => qp.PlayerId.Equals(playerId)); await _hubContext.Clients.All.SendAsync("playerFinish", $"{quizPlayer.Player.Name}-{correctAnswers}"); return(RedirectToAction(nameof(Room), new { id = id })); }