public ActionResult SaveAnswerAndRedirect(int testNumber) { var testDto = this.baseTestService.GetTestByNumber(testNumber); // TODO: check for null, error handling this.baseTestService.AddTestAnswer(testDto.Id, this.User.FindFirstValue(ClaimTypes.NameIdentifier), testDto.StartDate.Value); // TODO: use Automapper? var testAnswerDto = this.baseTestService.GetAnswerByTestId(testDto.Id); var testAnswerVm = new TestAnswerVm() { TestId = testAnswerDto.TestId, UserId = testAnswerDto.UserId, AnsweringTime = testAnswerDto.AnsweringTime, AnsweringTimeOffset = testAnswerDto.AnsweringTimeOffset }; var answerVm = new AnswerVm() { TestAnswerVm = testAnswerVm, TestNumber = testNumber }; return(this.View("TestAnswered", answerVm)); }
public static SingleQuestionVm MapSingleQuestionVm(this SingleQuestion question) { var result = new SingleQuestionVm(); result.Id = question.Id; result.Meta = new QuizMetaVm(); result.Meta.EndDate = question.EndDate; result.Meta.SelectedCategoryId = question.CategoryId; result.Meta.SelectedPriorityId = question.PriorityId; result.Meta.SelectedTargets = CommonBc.Instance.GetTargets().Where(t => question.Targets.Contains(t.Id)).ToList(). MapToCaptionSelectList("Departments"); result.Meta.StartDate = question.StartDate; result.Question = new QuestionVm(); result.Question.Enquiry = question.Enquiry; result.Question.CanSkip = question.CanSkip; result.Question.Id = question.Id; result.Question.IsUserMeta = question.IsUserMeta; result.Question.QuizId = null; result.Question.IsSingleSelect = question.IsSingleSelect; result.Question.Answers = new List <AnswerVm>(); foreach (var answer in question.Answers) { var aVm = new AnswerVm(); aVm.Id = answer.Id; aVm.Caption = answer.Caption; aVm.QuestionId = question.Id.Value; } return(result); }
public async Task PatchAnswer(AnswerVm answer) { switch (answer.QuestionType) { case QuestionType.Mcq: { if ((await Data.AllQuestionAnswer()).FirstOrDefault(q => q.Id == answer.Id) is McqQuestion question) { question.McqAnswer = question.Options.FirstOrDefault(a => a.Item1 == answer.McqAnswerId); } break; } case QuestionType.Text: { if ((await Data.AllQuestionAnswer()).FirstOrDefault(q => q.Id == answer.Id) is TextQuestion question ) { question.TextAnswer = answer.TextAnswer; } break; } default: throw new ArgumentOutOfRangeException(); } }
public void UpdateMcqQuestionSuccessfully() { var qna = new AnswerVm { Id = 2, QuestionType = QuestionType.Mcq, McqAnswerId = 1 }; SystemUnderTest.PatchAnswer(qna); Assert.AreEqual("Cat", (TestQuestions.First(q => q.Id == 2) as McqQuestion)?.McqAnswer.Item2); }
public async Task UpdateTextQuestionSuccessfully() { var qna = new AnswerVm { Id = 1, QuestionType = QuestionType.Text, TextAnswer = "Test Answer" }; await SystemUnderTest.PatchAnswer(qna); Assert.AreEqual("Test Answer", (TestQuestions.First(q => q.Id == 1) as TextQuestion)?.TextAnswer); }
public ActionResult SaveAnswerAndRedirect(int testNumber) { var test = _context.Set <Test>().First(el => el.Number == testNumber); var testAnswer = new TestAnswer() { TestId = test.Id, UserId = User.Identity.GetUserId(), AnsweringTime = DateTime.Now, AnsweringTimeOffset = DateTime.Now.Subtract(test.StartDate.Value) }; _context.Set <TestAnswer>().Add(testAnswer); _context.SaveChanges(); var vm = new AnswerVm() { TestAnswer = testAnswer, TestNumber = testNumber }; return(View("Answered", vm)); }
public static QuizVm MapToQuizVm(this Quiz quiz) { var result = new QuizVm(); result.Id = quiz.Id; result.Meta = new QuizMetaVm(); result.Meta.EndDate = quiz.EndDate; result.Meta.Reason = quiz.Reason; result.Meta.SelectedCategoryId = quiz.CategoryId; result.Meta.SelectedPriorityId = (int)quiz.PriorityId; result.Meta.SelectedTargets = CommonBc.Instance.GetTargets().Where(t => quiz.Targets.Contains(t.Id)).ToList().MapToCaptionSelectList( "Departments"); result.Meta.StartDate = quiz.StartDate; result.Meta.Title = quiz.Title; result.Questions = new List <QuestionVm>(); foreach (var question in quiz.Questions) { var qVm = new QuestionVm(); qVm.Enquiry = question.Enquiry; qVm.CanSkip = question.CanSkip; qVm.Id = question.Id; qVm.IsUserMeta = question.IsUserMeta; qVm.QuizId = quiz.Id; qVm.IsSingleSelect = question.IsSingleSelect; qVm.Answers = new List <AnswerVm>(); foreach (var answer in question.Answers) { var aVm = new AnswerVm(); aVm.Id = answer.Id; aVm.Caption = answer.Caption; aVm.QuestionId = question.Id.Value; } } return(result); }
private static StudentExamViewModel BuildExamVm(string studentName, Quiz quiz) { var examVm = new StudentExamViewModel(); examVm.StudentName = studentName; examVm.QuizId = quiz.Id; examVm.QuizText = quiz.QuizText; foreach (var question in quiz.Questions) { var questionVm = new QuestionVm(question.QuestionText); questionVm.QuestionId = question.Id; foreach (var answer in question.Answers) { var answerVm = new AnswerVm(); answerVm.Id = answer.Id; answerVm.AnswerText = answer.AnswerText; questionVm.Answers.Add(answerVm); } examVm.QuestionsList.Add(questionVm); } return(examVm); }
public async Task <IActionResult> PutAnswer([FromBody] AnswerVm answer, int id) { await _quizService.PatchAnswer(answer); return(Ok()); }