public ActionResult TestFinish()
        {
            if (TestSession != null)
            {
                var result = TestSession.GetResult();
                var percentageResult = TestSession.GetPercentageResult();

                var concreteTest = new ExamConcreteTest();
                concreteTest.TestID = ActiveTest.ExamTestID;
                concreteTest.UserID = UserId;
                concreteTest.StartTime = (DateTime) Session["StartTime"];
                concreteTest.EndTime = DateTime.Now;
                concreteTest.Result = percentageResult;
                JournalContext.ExamConcreteTests.InsertOnSubmit(concreteTest);
                //JournalContext.SubmitChanges();

                foreach (var questionState in result)
                {
                    var qa = new ExamQuestionAnswer();
                    qa.ExamConcreteTest = concreteTest;
                    qa.QuestionID = questionState.Key.QuestionID;
                    qa.UserAnswer = questionState.Value.GetAnswers().Aggregate((a, b) => a + ' ' + b);
                    JournalContext.ExamQuestionAnswers.InsertOnSubmit(qa);
                }
                JournalContext.SubmitChanges();
                TestSession = null;
                return View(concreteTest);
            }

            return RedirectToAction("Index");
        }
        public ActionResult RunTest(int testId)
        {
            Session["StartTime"] = DateTime.Now;
            var test = JournalContext.ExamTests.FirstOrDefault(x => x.ExamTestID == testId);

            ActiveTest = JournalContext.ExamTests.FirstOrDefault(t => t.ExamTestID == testId);
            TestSession = TestHelper.CreateSession(test);
            if (TestSession.QuestionsCount == 0)
                return RedirectToAction("Index");

            return RedirectToAction("ProcessQuestion", new { testNumber = 0 });
        }