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)); }