public IActionResult GetScore(int scoreId) { var score = this.Uow.ScoreRepository.GetByID(scoreId); ThrowIf.NotFound(score, scoreId); return(Ok(score)); }
/// <summary> /// Answers specified quiz question. /// </summary> /// <param name="question">The question to answer.</param> /// <param name="answerTemplateId">The answer template identifier.</param> public void AnswerQuestion(Question question, int answerTemplateId) { ThrowIf.Null(question, nameof(question)); ThrowIf.Completed(question.Quiz); if (question.IsAnswered) { throw new QuizFlowException( QuizFlowErrorCodes.QuestionAlreadyAnswered, "Question already answered."); } QuestionTemplate questionTemplate = this.Uow.QuestionTemplateRepository .GetByID(question.TemplateId); ThrowIf.NotFound(questionTemplate, question.TemplateId); AnswerTemplate answerTemplate = questionTemplate.GetAnswer(answerTemplateId); ThrowIf.NotFound(answerTemplate, answerTemplateId); var answer = new Answer() { TemplateId = answerTemplateId, IsCorrect = answerTemplate.IsCorrect }; question.Answers.Add(answer); question.DateEnd = DateTime.Now; this.Uow.Save(); }
public IActionResult GetQuiz(int quizId) { var quiz = this.Uow.QuizRepository.GetByID(quizId); ThrowIf.NotFound(quiz, quizId); return(Ok(quiz)); }
public IActionResult GetQuizScore(int quizId) { var score = this.Uow.ScoreRepository.GetQuizScore(quizId); ThrowIf.NotFound(score); return(Ok(score)); }
public IActionResult CompleteQuiz(int quizId) { Quiz quiz = this.Uow.QuizRepository.GetByID(quizId); ThrowIf.NotFound(quiz, quizId); this.QuizFlowManager.CompleteQuiz(quiz); return(Ok()); }
public IActionResult GetNextQuestion(int quizId) { Quiz quiz = this.Uow.QuizRepository.GetByID(quizId); ThrowIf.NotFound(quiz, quizId); QuizFlowCommandContract command = this.QuizFlowManager.GetNextQuestion(quiz); return(Ok(command)); }
public IActionResult Start([FromQuery] int templateId) { QuizTemplate quizTemplate = this.Uow.QuizTemplateRepository.GetByID(templateId); ThrowIf.NotFound(quizTemplate, templateId); Quiz quiz = this.QuizFlowManager.StartNewQuiz(quizTemplate); return(Ok(quiz)); }
public IActionResult AnswerQuestion(int quizId, int questionId, [FromQuery] int answerTemplateId) { Quiz quiz = this.Uow.QuizRepository.GetByID(quizId); ThrowIf.NotFound(quiz, quizId); Question question = quiz.GetQuestion(questionId); ThrowIf.NotFound(question, questionId); this.QuizFlowManager.AnswerQuestion(question, answerTemplateId); return(Ok()); }
public IActionResult GetQuizTemplate(int quizTemplateId) { var quizTemplate = this.Uow.QuizTemplateRepository.GetByID(quizTemplateId); ThrowIf.NotFound(quizTemplate, quizTemplateId); var questionTemplateCount = this.Uow.QuizTemplateRepository .GetQuestionTemplateCount(quizTemplateId); var quizTemplateDetails = new QuizTemplateDetailsContract(quizTemplate, questionTemplateCount); return(Ok(quizTemplateDetails)); }