public async Task <IActionResult> Take(TakeQuestionAnswerViewModel input) { await this.takesService.SaveTakedAnswerAsync(this.userManager.GetUserId(this.User), input.CurrentQuestionId, input.UserAnswerId); if (input.PageNumber + 1 > input.QuizQuestionsCount) { input.PageNumber = 0; } return(this.RedirectToAction("Take", "TakesQuiz", new { page = ++input.PageNumber })); }
public IActionResult Take(int page = 1) { if (page <= 0) { return(this.NotFound()); } TakeQuestionAnswerViewModel model = this.takesService.GetExamQuestion(this.userManager.GetUserId(this.User), page); model.Action = "Take"; return(this.View(model)); }
public TakeQuestionAnswerViewModel GetExamQuestion(string userId, int page, int num = 1) { int quizId = this.GetTakeQuizByUserId(userId); int takeId = this.GetTake(userId).Id; Quiz quiz = this.quizzesService.GetQuizById(quizId); QuestionQuizViewModel question = this.questionsService .GetQuestionsByQuizId <QuestionQuizViewModel>(quizId) .OrderByDescending(x => x.Id).Skip((page - 1) * ItemsPerPage) .Take(ItemsPerPage) .FirstOrDefault(); TakeQuestionAnswerViewModel model = this.takeRepository.All() .Where(x => x.Id == takeId) .To <TakeQuestionAnswerViewModel>() .ToList() .FirstOrDefault(); this.SetModelValue(page, takeId, question, model); return(model); }
private void SetModelValue(int page, int takeId, QuestionQuizViewModel question, TakeQuestionAnswerViewModel model) { model.ItemsPerPage = ItemsPerPage; model.PageNumber = page; model.ElementsCount = model.QuizQuestionsCount; model.CurrentQuestionId = question.Id; model.QuestionValue = question.Value; model.AverageRating = this.questionsService.GetQuestionRatingById(question.Id); model.Answers = this.answersService.GetQuestionAnswersForTakesById(model.CurrentQuestionId); model.TakenAnswer = this.SelectedAnswere(question.Id, takeId); }