private void SetAnswer(StudentTestSessionQuestion question, QuestionGenericAnswer answer) { switch (question.Question.Type) { case QuestionType.FreeText: SetFreeTextAnswer(question, answer.FreeTextAnswer); return; case QuestionType.QuestionWithChoice: SetChoiceQuestionAnswer(question, answer.ChoiceQuestionAnswer); return; default: throw new InvalidEnumArgumentException( nameof(question.Question.Type), (int)question.Question.Type, typeof(QuestionType)); } }
public async Task Answer(Guid questionId, QuestionGenericAnswer answer) { // TODO: add includes to optimize query var queryParameters = new StudentTestSessionQuestionQueryParameters { StudentId = _executionContextService.GetCurrentUserId(), IsReadOnly = false, Id = questionId, }; StudentTestSessionQuestion question = await _unitOfWork.GetSingle(queryParameters); await _studentQuestionValidationService.ThrowIfCannotAnswer(question.StudentTestSessionId); SetAnswer(question, answer); await _unitOfWork.Update(question); await _unitOfWork.Commit(); }