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)); }
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)); }
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)); }
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 }); }
public async Task <IActionResult> Finish(long id, [Bind("TestId,SessionId,Questions")] TestAnswerViewModel model) { SaveSession(model, true); return(RedirectToAction("Index", "Evaluation", new { testId = model.TestId })); }
public async Task <IActionResult> Break(long id, [Bind("TestId,SessionId,Questions")] TestAnswerViewModel model) { SaveSession(model, false); return(RedirectToAction("Index", "Home")); }
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(); }