Пример #1
0
        public ActionResult NewQuizStart(int id)
        {
            // Create unique model instance
            QuizTestViewModel modelList = new QuizTestViewModel();

            modelList.Question = new List <QuizTestQuestionViewModel>();

            // Create a list which is filtered by Quiz Id
            List <Question> questionList = db.Question.Include(q => q.Answer).Where(x => x.QuizId == id).ToList();

            for (int i = 0; i < questionList.Count; i++)
            {
                // Mapping the data from database
                QuizTestQuestionViewModel model = new QuizTestQuestionViewModel();
                model.QuestionId   = questionList[i].Id;
                model.QuestionText = questionList[i].Question1;
                model.Point        = questionList[i].Point;
                model.QuizId       = id;
                model.UserId       = Convert.ToInt32(Session["UserId"].ToString());
                model.Date         = DateTime.Now;
                model.AnswerList   = questionList[i].Answer.Select(x => new Answer {
                    Id = x.Id, Answer1 = x.Answer1, QuestionId = x.QuestionId
                }).ToList();
                model.QuestionType = questionList[i].QuestionType.QuestionType1;
                modelList.Question.Add(model);
            }
            return(View(modelList));
        }
Пример #2
0
        public ActionResult NewQuizStart(QuizTestViewModel quiz)
        {
            // Create a list what is used for counting the total score per User per Quiz
            List <Question> questionList = db.Question.Include(q => q.Answer).AsEnumerable().Where(x => x.QuizId == quiz.Question[0].QuizId).ToList();

            var quizId   = quiz.Question.FirstOrDefault().QuizId;
            var quizName = db.Quiz.Where(x => x.Id == quizId).Select(x => x.Name).FirstOrDefault();

            var userId       = quiz.Question.FirstOrDefault().UserId;
            var userNickName = db.User.Where(x => x.Id == userId).Select(x => x.NickName).FirstOrDefault();

            // Create unique model instance
            CompletedQuiz completedQuiz = new CompletedQuiz();

            // Create database list to save User's answers
            var dbList     = db.FinishedQuizByUser.ToList();
            int totalScore = 0;

            for (int i = 0; i < quiz.Question.Count; i++)
            {
                completedQuiz = new CompletedQuiz
                {
                    UserId       = userId,
                    UserNickName = userNickName,
                    QuizId       = quizId,
                    QuizName     = quizName,
                    QuestionId   = quiz.Question[i].QuestionId,
                    Date         = quiz.Question[i].Date,
                };

                if (quiz.Question[i].QuestionType == 1)
                {
                    if (quiz.Question[i].SelectedAnswer == questionList[i].Answer.Where(x => x.AnswerCheck == true).FirstOrDefault().Id)
                    {
                        totalScore         += questionList[i].Point;
                        completedQuiz.Score = questionList[i].Point;
                    }
                }
                if (quiz.Question[i].QuestionType == 2)
                {
                    int trueAnswerCounterInDatabase  = 0;
                    int correctAnswerCounterFromUser = 0;

                    foreach (var item in questionList[i].Answer)
                    {
                        if (item.AnswerCheck == true)
                        {
                            trueAnswerCounterInDatabase++;
                        }
                    }

                    for (int j = 0; j < quiz.Question[i].AnswerList.Count; j++)
                    {
                        if (quiz.Question[i].AnswerList[j].AnswerCheck == questionList[i].Answer.ElementAt(j).AnswerCheck&& questionList[i].Answer.ElementAt(j).AnswerCheck == true)
                        {
                            correctAnswerCounterFromUser++;

                            if (correctAnswerCounterFromUser == trueAnswerCounterInDatabase)
                            {
                                completedQuiz.Score = questionList[i].Point;
                                totalScore         += questionList[i].Point;
                                break;
                            }
                        }
                    }
                }

                FinishedQuizByUser result = new FinishedQuizByUser();
                result.UserId     = completedQuiz.UserId;
                result.QuizId     = completedQuiz.QuizId;
                result.QuestionId = completedQuiz.QuestionId;
                result.Score      = completedQuiz.Score;
                result.Date       = completedQuiz.Date;

                var finishedQuiz = db.FinishedQuizByUser?.Where(q => q.QuestionId == completedQuiz.QuestionId && q.UserId == completedQuiz.UserId)?.FirstOrDefault();
                if (finishedQuiz == null)
                {
                    db.FinishedQuizByUser.Add(result);
                    db.SaveChanges();
                }
                else
                {
                    finishedQuiz.QuestionId      = completedQuiz.QuestionId;
                    finishedQuiz.Score           = completedQuiz.Score;
                    finishedQuiz.Date            = completedQuiz.Date;
                    db.Entry(finishedQuiz).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }
            completedQuiz.TotalScore = totalScore;

            return(View("FinishedQuizView", completedQuiz));
        }