Example #1
0
        public float?AddResult(SolveDTO solvingDTO)
        {
            var quizId  = solvingDTO.quizID;
            var quiz    = quizDTOMapper.Create(quizId);
            var answers = solvingDTO.Answers;
            var score   = new ScoreDTO
            {
                ApplicationUserId = solvingDTO.UserId,
                QuizId            = quizId,
                Result            = 0
            };
            int i = 0;

            foreach (var A in answers)//A is whole user answer
            {
                var pytanie = quiz.Questions.ElementAt(i);
                var j       = 0;
                foreach (var a in A.userAnswers)//just one from multiple answer
                {
                    var odp = pytanie.Answers.ElementAt(j);
                }
            }
            i = 0;
            foreach (var q in quiz.Questions)
            {
                var j = 0;
                foreach (var a in q.Answers)
                {
                    bool isCorrect = a.isCorrect;
                    var  c         = answers.ElementAt(i).userAnswers;
                    if ((!isCorrect && !c.Any(o => o == j)) ||
                        (isCorrect && c.Any(o => o == j)))
                    {
                        ++j;
                    }
                    else
                    {
                        answers.ElementAt(i).isCorrect = false;
                        break;
                    }
                    answers.ElementAt(i).isCorrect = true;
                }
                ++i;
            }

            foreach (var a in answers)
            {
                score.Result += a.isCorrect ? 1 : 0;
            }
            quiz.AddScore(score);
            return(score.Result);
        }
        public ContentResult SolvingUpdateAnswer([FromBody] SolvingQuizUpdateAnswerViewModel model)
        {
            string quizId   = model.QuizId;
            var    quiz     = quizService.GetQuiz(quizId);
            var    question = quiz.Questions.ElementAt(model.QuestionNumber);

            string   solveDTOString = HttpContext.Session.GetString("QuizAttempt-" + model.QuizId);
            SolveDTO solveDTO       = JsonConvert.DeserializeObject <SolveDTO>(solveDTOString);
            //solveDTO.Answers.Insert(model.QuestionNumber, new UserAnswerDTO(question));
            var userAnswer = solveDTO.Answers.ElementAt(model.QuestionNumber);

            userAnswer.userAnswers = new List <int>();
            foreach (var a in model.SelectedAnswersNumbers)
            {
                userAnswer.userAnswers.Add(a);
            }
            HttpContext.Session.SetString("QuizAttempt-" + solveDTO.quizID, JsonConvert.SerializeObject(solveDTO));
            return(Content(JsonConvert.SerializeObject(model).ToString()));
        }
        public ViewResult Solving(string Id)
        {
            QuizDTO quizDTO = this.quizService.GetQuiz(Id);

            if (quizDTO == null)
            {
                return(View("NotFoundErrorPage"));
            }
            SolveDTO solveDTO = new SolveDTO(quizDTO);

            solveDTO.UserId = userId;
            HttpContext.Session.SetString("QuizAttempt-" + solveDTO.quizID, JsonConvert.SerializeObject(solveDTO));

            // Total number of questions. Used to generate content in left panel and links
            ViewData["TotalNumberOfQuestions"] = quizDTO.Questions.Count;
            SolvingQuizQuestionViewModel question = new SolvingQuizQuestionViewModel(quizDTO.Questions.ElementAt(0), 0, Id);

            return(View(question));
        }