예제 #1
0
        public async Task <ResultAnswerDetailDto> GetResultAnswerById(int resultAnswerId)
        {
            ResultAnswer resultAnswer = await resultAnswerRepository.GetByIdAsync(id : resultAnswerId, includeProperties : prop => prop
                                                                                  .Include(ra => ra.ResultAnswerOptions));

            return(mapper.Map <ResultAnswerDetailDto>(resultAnswer));
        }
예제 #2
0
        public ActionResult PassResult(PassTestModel model)
        {
            if (!ModelState.IsValid)
            {
                return(Json(new { isValid = false }));
            }


            var test = testsRepo.FindOne(new ByIdSpecify <Test>(model.Id));

            var result = new TestResult
            {
                UserId   = this.usersRepo.FindOne(new UserByLoginSpecify(User.Identity.Name)).Id,
                TestId   = test.Id,
                PassDate = DateTime.Now
            };

            testsResRepo.SaveOrUpdate(result);

            var correctAnswers = 0;

            foreach (var question in model.Questions)
            {
                var resultQuestion = new ResultQuestion
                {
                    QuestionText = question.QuestionValue,
                    TestResultId = result.Id
                };

                qResRepo.SaveOrUpdate(resultQuestion);

                foreach (var answer in question.Answers)
                {
                    if (answer.IsCorrect && answer.IsChoisen)
                    {
                        correctAnswers++;
                    }
                    var resultAnswer = new ResultAnswer
                    {
                        AnswerText       = answer.AnswerValue,
                        ResultQuestionId = resultQuestion.Id,
                        IsCorrect        = answer.IsCorrect,
                        IsChoisen        = answer.IsChoisen
                    };

                    aResRepo.SaveOrUpdate(resultAnswer);

                    //resultQuestion.ResultAnswers.Add(resultAnswer);
                }

                //result.ResultQuestions.Add(resultQuestion);
            }

            ViewBag.correctAnswers = correctAnswers;
            ViewBag.totalQuestios  = model.Questions.Count;
            return(View());
        }
예제 #3
0
        public async Task <CreatedResultAnswerDto> CreateResultAnswer(NewResultAnswerDto newResultAnswerDto)
        {
            ResultAnswer resultAnswer = mapper.Map <ResultAnswer>(newResultAnswerDto);

            resultAnswerRepository.Insert(resultAnswer);
            await unitOfWork.SaveAsync();

            return(mapper.Map <CreatedResultAnswerDto>(resultAnswer));
        }
예제 #4
0
        public async Task <DeletedResultAnswerDto> DeleteResultAnswer(int resultAnswerId)
        {
            ResultAnswer resultAnswer = await resultAnswerRepository.GetByIdAsync(resultAnswerId);

            if (resultAnswer == null)
            {
                return(null);
            }

            resultAnswerRepository.Delete(resultAnswer);
            await unitOfWork.SaveAsync();

            return(mapper.Map <DeletedResultAnswerDto>(resultAnswer));
        }
예제 #5
0
        private ResultAnswer CreateResultAnswerWithOptions(PayloadQuestion receivedQuestion, int receivedQuestionIndex, List <TestEvent> eventsQuestionAnswered, TestEvent eventTestStarted)
        {
            var resultAnswer = new ResultAnswer();

            if (receivedQuestionIndex >= 0)
            {
                resultAnswer.TimeTakenSeconds = receivedQuestionIndex == 0
                    ? eventsQuestionAnswered[receivedQuestionIndex].StartTime - eventTestStarted.StartTime
                    : eventsQuestionAnswered[receivedQuestionIndex].StartTime - eventsQuestionAnswered[receivedQuestionIndex - 1].StartTime;

                resultAnswer.ResultAnswerOptions = receivedQuestion.SelectedOptionsId.Select(selectedOptionId => new ResultAnswerOption {
                    OptionId = selectedOptionId
                }).ToList();
            }
            else
            {
                resultAnswer.TimeTakenSeconds = TimeSpan.Zero;
            }

            return(resultAnswer);
        }
예제 #6
0
        public ActionResult PassResult(PassTestModel model)
        {
            if (!ModelState.IsValid)
            {
                return Json(new { isValid = false });
            }

            var test = testsRepo.FindOne(new ByIdSpecify<Test>(model.Id));

            var result = new TestResult
                {
                    UserId = this.usersRepo.FindOne(new UserByLoginSpecify(User.Identity.Name)).Id,
                    TestId = test.Id,
                    PassDate = DateTime.Now
                };

            testsResRepo.SaveOrUpdate(result);

            var correctAnswers = 0;

            foreach (var question in model.Questions)
            {
                var resultQuestion = new ResultQuestion
                    {
                        QuestionText = question.QuestionValue,
                        TestResultId = result.Id
                    };

                qResRepo.SaveOrUpdate(resultQuestion);

                foreach (var answer in question.Answers)
                {
                    if (answer.IsCorrect && answer.IsChoisen)
                        correctAnswers++;
                    var resultAnswer = new ResultAnswer
                        {
                            AnswerText = answer.AnswerValue,
                            ResultQuestionId = resultQuestion.Id,
                            IsCorrect = answer.IsCorrect,
                            IsChoisen = answer.IsChoisen
                        };

                    aResRepo.SaveOrUpdate(resultAnswer);

                    //resultQuestion.ResultAnswers.Add(resultAnswer);
                }

                //result.ResultQuestions.Add(resultQuestion);
            }

            ViewBag.correctAnswers = correctAnswers;
            ViewBag.totalQuestios = model.Questions.Count;
            return View();
        }