From f0ed318454b0ee81460db69af1b98c6e21382a61 Mon Sep 17 00:00:00 2001 From: Tokk Date: Sun, 14 Jun 2020 14:51:37 +0200 Subject: [PATCH] Antworten werden geshufflet; Fragen kommen ausgeglichen dran; --- MultipleChoiceTrainer/Controllers/QuestionsController.cs | 3 ++- MultipleChoiceTrainer/Controllers/QuizController.cs | 7 +++++-- MultipleChoiceTrainer/Models/DataModels/Question.cs | 2 ++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/MultipleChoiceTrainer/Controllers/QuestionsController.cs b/MultipleChoiceTrainer/Controllers/QuestionsController.cs index 4f80b3e..466105f 100644 --- a/MultipleChoiceTrainer/Controllers/QuestionsController.cs +++ b/MultipleChoiceTrainer/Controllers/QuestionsController.cs @@ -42,7 +42,8 @@ namespace MultipleChoiceTrainer.Controllers [HttpPost] [ValidateAntiForgeryToken] public async Task Create(QuestionViewModel question) - { + { + question.CreationDate = DateTime.Now; if (ModelState.IsValid) { question.Choices = question.Choices.ToList().Where(e => !string.IsNullOrEmpty(e.Text) && !string.IsNullOrWhiteSpace(e.Text)).ToList(); diff --git a/MultipleChoiceTrainer/Controllers/QuizController.cs b/MultipleChoiceTrainer/Controllers/QuizController.cs index 635a783..e3cbe24 100644 --- a/MultipleChoiceTrainer/Controllers/QuizController.cs +++ b/MultipleChoiceTrainer/Controllers/QuizController.cs @@ -60,13 +60,16 @@ namespace MultipleChoiceTrainer.Controllers } questions = questions.ToList().AsQueryable(); - questions = questions.OrderByDescending(e => e.Answers.Count()); + var newestDate = questions.Select(e => e.CreationDate).Max(); + questions = questions.OrderByDescending(e => e.Answers.Where(a => a.Date > newestDate).Count()); + var minAnswerCount = questions.Select(e => e.Answers.Where(a => a.Date > newestDate).Count()).Min(); + questions = questions.Where(e => e.Answers.Where(a => a.Date > newestDate).Count() == minAnswerCount); questions = questions.Take(10); vm.CurrentQuestion = questions.ElementAt(_rnd.Next(0, questions.Count()-1)); - vm.Choices = vm.CurrentQuestion.Choices.Select(oc => new Choice() { Id = oc.Id, Text = oc.Text }).ToList(); + vm.Choices = vm.CurrentQuestion.Choices.Select(oc => new Choice() { Id = oc.Id, Text = oc.Text }).OrderBy(a => Guid.NewGuid()).ToList(); } public IActionResult Quiz(QuizViewModel viewModel) diff --git a/MultipleChoiceTrainer/Models/DataModels/Question.cs b/MultipleChoiceTrainer/Models/DataModels/Question.cs index 1abc8fa..e8484b6 100644 --- a/MultipleChoiceTrainer/Models/DataModels/Question.cs +++ b/MultipleChoiceTrainer/Models/DataModels/Question.cs @@ -15,6 +15,8 @@ namespace MultipleChoiceTrainer.Models.DataModels [NotNullOrEmpty] public string Text { get; set; } + public DateTime CreationDate { get; set; } + public Section Section { get; set; } public int SectionId { get; set; }