Beispiel #1
0
        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));
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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();
            }
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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));
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
        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());
        }