public async Task <IActionResult> ActuallyReview(string runningQuizID) { AnswerKeyVM viewModel; try { viewModel = await AgonManager.GetAnswerKeyVMAsync(runningQuizID); } catch (MongoException mex) { HttpContext.Session.SetString("error", mex.Message); return(RedirectToAction("Error", "Home")); } var submittedAnswers = viewModel.Songs .SelectMany(o => o.Questions.SelectMany(q => q.SubmittedAnswers)) .ToList(); var correctAnswerIndices = new List <int>(); foreach (var key in Request.Form.Keys) { if (key.StartsWith("answer_")) { var index = int.Parse(key.Split('_')[1]); correctAnswerIndices.Add(index); } } var namesAnsAnswers = submittedAnswers.GroupBy(o => o.SubmitterName); var results = new Dictionary <string, int>(); foreach (var group in namesAnsAnswers) { var name = group.Key; results.Add(name, 0); foreach (var item in group) { var index = submittedAnswers.IndexOf(item); if (correctAnswerIndices.Contains(index)) { results[name] = results[name] + 1; } } } //Remove stuff from DB - maybe store highscore typ return(View(results.OrderByDescending(x => x.Value).ToDictionary(x => x.Key, x => x.Value))); }
public async Task <IActionResult> Review(string quizID) { AnswerKeyVM viewModel = await AgonManager.GetAnswerKeyVMAsync(quizID); return(View(viewModel)); }