Esempio n. 1
0
        public ActionResult Index(int?id)
        {
            TestDTO             testDTO  = TestFormingService.GetTest(id);
            TestAnswerViewModel testView = new TestAnswerViewModel()
            {
                Test_ID     = testDTO.Test_ID,
                Topic       = testDTO.Topic,
                TimeForTest = testDTO.TimeForTest,
            };

            testView.Questions = new List <QuestionAnswerViewModel>();
            var mapper = new MapperConfiguration(cfg => cfg.CreateMap <AnswerDTO, AnswerViewModel>()).CreateMapper();

            foreach (var quest in testDTO.Questions)
            {
                QuestionAnswerViewModel qvm = new QuestionAnswerViewModel
                {
                    Question_ID = quest.Question_ID,
                    Test_ID     = quest.Test_ID,
                    content     = quest.content,
                    ISFULL      = quest.ISFULL
                };
                testView.Questions.Add(qvm);
                qvm.Answers = mapper.Map <IEnumerable <AnswerDTO>, List <AnswerViewModel> >(quest.Answers);
            }
            return(View(testView));
        }
Esempio n. 2
0
        public ActionResult Check(TestAnswerViewModel testView)
        {
            var        FullOpen     = "";
            List <int> user_answers = new List <int>();

            foreach (var k in testView.Questions)
            {
                user_answers.Add(k.SelectedAnswer);
            }
            string User_ID = User.Identity.GetUserId();

            foreach (var question in testView.Questions)
            {
                if (question.FullOpen != null)
                {
                    FullOpen = question.FullOpen;
                }
            }
            //using (MemoryStreamLogger logger = new MemoryStreamLogger(testView.Topic + "_" + User.Identity.Name + "_" + DateTime.Now.Date))
            //{
            //        logger.Log(FullOpen);
            //}
            var             result     = TestCheckingService.GetScore(testView.Test_ID, User_ID, user_answers, FullOpen);
            var             mapper     = new MapperConfiguration(cfg => cfg.CreateMap <ResultDTO, ResultViewModel>()).CreateMapper();
            ResultViewModel resultView = mapper.Map <ResultDTO, ResultViewModel>(result);

            resultView.Test_Topic         = testView.Topic;
            resultView.Count_of_questions = testView.Questions.Count - 1;
            return(View(resultView));
        }
Esempio n. 3
0
        public ActionResult Check(TestAnswerViewModel testView)
        {
            List <int> user_answers = new List <int>();

            foreach (var k in testView.Questions)
            {
                user_answers.Add(k.SelectedAnswer);
            }
            string          User_ID    = User.Identity.GetUserId();
            var             result     = TestCheckingService.GetScore(testView.Test_ID, User_ID, user_answers);
            var             mapper     = new MapperConfiguration(cfg => cfg.CreateMap <ResultDTO, ResultViewModel>()).CreateMapper();
            ResultViewModel resultView = mapper.Map <ResultDTO, ResultViewModel>(result);

            resultView.Test_Topic         = testView.Topic;
            resultView.Count_of_questions = testView.Questions.Count;

            return(View(resultView));
        }
Esempio n. 4
0
        private AnswerViewModel SaveAnswer(TestDto testDto)
        {
            // TODO: check for null, error handling
            this._testService.AddTestAnswer(testDto.Id, this.User.FindFirstValue(ClaimTypes.NameIdentifier), testDto.StartDate.Value);

            // TODO: use Automapper?
            var testAnswerDto = this._testService.GetAnswerByTestId(testDto.Id);

            var testAnswerViewModel = new TestAnswerViewModel()
            {
                TestId              = testAnswerDto.TestId,
                UserId              = testAnswerDto.UserId,
                AnsweringTime       = testAnswerDto.AnsweringTime,
                AnsweringTimeOffset = testAnswerDto.AnsweringTimeOffset
            };

            return(new AnswerViewModel()
            {
                TestAnswerViewModel = testAnswerViewModel, TestNumber = testDto.Number
            });
        }
Esempio n. 5
0
 public async Task <IActionResult> Finish(long id, [Bind("TestId,SessionId,Questions")] TestAnswerViewModel model)
 {
     SaveSession(model, true);
     return(RedirectToAction("Index", "Evaluation", new { testId = model.TestId }));
 }
Esempio n. 6
0
 public async Task <IActionResult> Break(long id, [Bind("TestId,SessionId,Questions")] TestAnswerViewModel model)
 {
     SaveSession(model, false);
     return(RedirectToAction("Index", "Home"));
 }
Esempio n. 7
0
        private void SaveSession(TestAnswerViewModel model, bool Completed)
        {
            var user = _context.UserInformation.FirstOrDefault(x => x.UserId == _userManager.GetUserId(User));

            foreach (var question in model.Questions
                     .Where(x => x.Type == "MathQuestion")
                     .ToList())
            {
                var answerDB = _context.MathAnswers
                               .FirstOrDefault(x => x.CandidateId == user.Id &&
                                               x.QuestionId == question.Id);
                if (answerDB == null)
                {
                    _context.Answers.Add(new MathAnswer {
                        CandidateId = user.Id, QuestionId = question.Id, GivenAnswer = question.GivenAnswer
                    });
                }
                else
                {
                    answerDB.GivenAnswer = question.GivenAnswer;
                    _context.MathAnswers.Update(answerDB);
                }
            }
            foreach (var question in model.Questions
                     .Where(x => x.Type == "MultipleChoiceQuestion")
                     .ToList())
            {
                foreach (var answer in question.Choices)
                {
                    var answerDB = _context.MultipleChoiceAnswers
                                   .FirstOrDefault(x => x.CandidateId == user.Id &&
                                                   x.ChoiceId == answer.Id);
                    if (answer.Correct)
                    {
                        if (answerDB == null)
                        {
                            _context.Answers.Add(new MultipleChoiceAnswer {
                                CandidateId = user.Id, ChoiceId = answer.Id
                            });
                        }
                    }
                    else
                    {
                        if (answerDB != null)
                        {
                            _context.Answers.Remove(answerDB);
                        }
                    }
                }
            }
            var session = _context.Sessions
                          .FirstOrDefault(x => x.CandidateId == user.Id &&
                                          x.TestId == model.TestId);

            if (session == null)
            {
                _context.Sessions.Add(new Session {
                    CandidateId = user.Id, TestId = model.TestId, Completed = Completed, Duration = (DateTime.Now - StartTime)
                });
            }
            else
            {
                session.Completed = Completed;
                session.Duration += (DateTime.Now - StartTime);
            }

            _context.SaveChanges();
        }