private Dictionary <int, int> CollectAnswers(TakenQuiz takenQuiz, out List <QuestionPlayViewModel> questionsFromHistory)
        {
            Dictionary <int, int> result = new Dictionary <int, int>();

            questionsFromHistory = new List <QuestionPlayViewModel>();

            var userAnswers = takenQuiz.UsersAnswers;

            foreach (var item in userAnswers)
            {
                var questionId = item.AnswerDefinition.QuestionDefinition.Id;
                result.Add(questionId, item.AnswerDefinitionId);

                var question = this.Db.QuestionsDefinitions
                               .AllWithDeleted()
                               .Where(q => q.Id == questionId)
                               .Project()
                               .To <QuestionPlayViewModel>()
                               .FirstOrDefault();

                questionsFromHistory.Add(question);
            }

            return(result);
        }
        private int SaveResult(int quizId, Dictionary <int, int> selectedAnswers, int scorePercentage)
        {
            var       user      = this.User.Identity.GetUserId();
            TakenQuiz takenQuiz = new TakenQuiz();

            takenQuiz.UserId           = user;
            takenQuiz.QuizDefinitionId = quizId;

            foreach (var item in selectedAnswers)
            {
                var answerId = item.Value;

                UsersAnswer givenAnswer = new UsersAnswer();
                givenAnswer.AnswerDefinitionId = answerId;
                givenAnswer.TakenQuiz          = takenQuiz;
                this.Db.UsersAnswers.Add(givenAnswer);
            }

            takenQuiz.Score = scorePercentage;
            this.Db.TakenQuizzes.Add(takenQuiz);
            this.Db.SaveChanges();

            return(takenQuiz.Id);
        }