public QuizViewModel GetQuiz(Evaluation evaluation, DateTime evaluationTime) { List <QuestionQuizViewModel> questionViewModel = new List <QuestionQuizViewModel>(); Random random = new Random(); foreach (var question in evaluation.Questions) { Dictionary <Guid, string> dictionary = question.Options.OrderBy(x => random.Next()).ToDictionary(x => x.Id, x => x.Option); OptionQuizViewModel optionViewModel = new OptionQuizViewModel(); optionViewModel.Options = new SelectList(dictionary, "Key", "Value"); questionViewModel.Add(new QuestionQuizViewModel { Id = question.Id, ImagePath = question.ImagePath, Options = optionViewModel, QuestionText = question.QuestionText, QuestionScore = question.Score }); } return(new QuizViewModel { Id = evaluation.Id, Questions = questionViewModel.OrderBy(x => random.Next()).ToList(), QuizName = evaluation.Name, Score = evaluation.Questions.Sum(x => x.Score), EndTime = evaluationTime.AddMinutes(evaluation.MinutesDuration), }); }
public QuizViewModel ReviewQuiz(Evaluation evaluation, string userId, bool isUserRequired = false) { EvaluationUser evaluationUser = evaluation.EvaluationUsers.Where(x => x.UserId == userId).FirstOrDefault(); List <QuestionQuizViewModel> quizQuestions = new List <QuestionQuizViewModel>(); foreach (var question in evaluation.Questions) { Dictionary <Guid, string> dictionary = question.Options.ToDictionary(x => x.Id, x => x.Option); OptionQuizViewModel optionViewModel = new OptionQuizViewModel { CorrectAnswer = question.Options.Where(x => x.IsCorrectOption == true).Select(y => y.Id).FirstOrDefault(), SelectedAnswer = evaluationUser.Answers.Where(x => question.Options.Select(y => y.Id).Contains(x.QuestionOptionId)).Select(z => z.QuestionOptionId).FirstOrDefault(), Options = new SelectList(dictionary, "Key", "Value") }; QuestionQuizViewModel quizQuestion = new QuestionQuizViewModel { ImagePath = question.ImagePath, QuestionScore = question.Score, QuestionText = question.QuestionText, Options = optionViewModel }; quizQuestions.Add(quizQuestion); } QuizViewModel quizViewModel = new QuizViewModel { Id = evaluation.Id, QuizName = evaluation.Name, Score = evaluation.Questions.Sum(x => x.Score), GotScore = evaluationUser.Calification, Questions = quizQuestions, User = (isUserRequired) ? evaluationUser.User : null, }; return(quizViewModel); }