Esempio n. 1
0
        public ActionResult ResultDetail(int?id)
        {
            if (CheckSession() == false)
            {
                SetAlert("Truy cập không hợp lệ.", "error");
                return(Redirect("/"));
            }
            var _result = new TestResultDetailDAO().GetById(id);

            return(View(_result));
        }
        public ActionResult HistoryExams(int?id, string searchString, int page = 1, int pageSize = 10)
        {
            if (CheckSession(id) == false)
            {
                SetAlert("Truy cập không hợp lệ.", "error");
                return(Redirect("/"));
            }

            var _user          = new UserDAO().GetUserById(id);
            var listTestResult = new TestResultDetailDAO().GetAllTestResultPageList(_user, searchString, page = 1, pageSize = 10);

            return(View(listTestResult));
        }
Esempio n. 3
0
        public ActionResult StartTheTest(Test test)
        {
            var _test          = new TestDAO().GetTestByCodeTest(test.CodeTest, test.ExamID);
            var _testResultDAO = new TestResultDetailDAO();
            var _testResult    = new TestResultDetail();

            if (_test != null)
            {
                _test.UserAnswer = test.UserAnswer;
                _test.ExamID     = test.ExamID;
                _test.CodeTest   = test.CodeTest;
            }
            var _session = Session[ConstantVariable.USER_SESSION] as UserLogin;

            if (_session != null)
            {
                _testResult.UserID = _session.UserID;
            }
            _testResult.TestID = _test.Id;
            _testResult.ExamID = _test.ExamID;
            int _answerCorrectNum = 0;
            int _answerWrongNum   = 0;
            int _answerIgnoredNum = 0;
            var listQuiz          = new TestDAO().GetAllQuiz(_test.Id);

            if (_test.UserAnswer == null || _test.UserAnswer.Count <= 0)
            {
                _answerIgnoredNum = listQuiz.Count;
            }
            else
            {
                for (int i = 0; i < _test.UserAnswer.Count; i++)
                {
                    if (listQuiz[i].KeyAnswer == _test.UserAnswer[i])
                    {
                        _answerCorrectNum++;
                    }
                    else
                    {
                        _answerWrongNum++;
                    }
                }
                _answerIgnoredNum = listQuiz.Count - (_answerCorrectNum + _answerWrongNum);
            }

            _testResult.Score           = _answerCorrectNum * (_test.ScoreLadder.Score / _test.NumberOfQuestions);
            _testResult.NumberOfWrong   = _answerWrongNum;
            _testResult.NumberOfCorrect = _answerCorrectNum;
            _testResult.NumberOfIgnored = _answerIgnoredNum;
            var _countTimeToTake = new TestResultDetailDAO().GetAll(_session.UserID, _test.ExamID);

            if (_countTimeToTake == null)
            {
                _testResult.TimeToTake = 0;
            }
            else
            {
                _testResult.TimeToTake = _countTimeToTake.Count + 1;
            }
            _testResult.ActualTestDate  = DateTime.Now;
            _testResult.ActualStartTime = null;
            _testResult.ActualEndTime   = DateTime.Now.TimeOfDay;
            for (int i = 0; i < listQuiz.Count; i++)
            {
                if (i != listQuiz.Count - 1)
                {
                    _testResult.UserAnswer += _test.UserAnswer[i] + ",";
                }
                else
                {
                    _testResult.UserAnswer += _test.UserAnswer[i];
                }
            }
            int _id = _testResultDAO.Insert(_testResult);

            // Insert
            if (_id > 0)
            {
                var _testDb = new TestDAO().GetTestById(_testResult.TestID);
                new SystemLogDAO().Insert("Người dùng thi online [Kỳ thi: " + _testDb.Exam.Titile + "] [Môn thi: " + _testDb.Exam.Subject.Name + "] [Mã đề: " + _testDb.CodeTest + "]", _session.UserName, DateTime.Now.TimeOfDay, DateTime.Now.Date, GetIPAddress.GetLocalIPAddress());
                return(Redirect("/admin/exams/resultdetail/" + _id));
            }
            return(Redirect("/"));
        }
Esempio n. 4
0
        public ActionResult StartTheTest(int?id)
        {
            var _exam    = new ExamDAO().GetExamById(id);
            var _session = Session[ConstantVariable.USER_SESSION] as UserLogin;

            if (_session == null)
            {
                SetAlert("Vui lòng đăng nhập để bắt đầu thi", "error");
                return(Redirect("/"));
            }
            else
            {
                var _user     = new UserDAO().GetUserById(_session.UserID);
                var listClass = new ClassDAO().GetAllByExams(_exam.Id);
                if (!listClass.Exists(x => x.Id == _user.ClassID))
                {
                    SetAlert("Bạn không phải là thí sinh của kỳ thi này.", "error");
                    return(Redirect("/"));
                }
            }
            // Kiểm tra số lượt làm bài
            var _timeToTakeUser = new TestResultDetailDAO().GetTimeToTake(_session.UserID, _exam.Id);

            if (_timeToTakeUser >= _exam.NumberOfTurns)
            {
                SetAlert("Bạn đã hết lượt làm bài của kỳ thi này.", "error");
                return(Redirect("/"));
            }

            if (_exam.ToDate < DateTime.Now)
            {
                SetAlert("Kỳ thi đã hết hạn.", "error");
                _exam.Status = false;
                new ExamDAO().UpdateStatus(_exam);

                return(Redirect("/"));
            }

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            if (_exam == null)
            {
                return(HttpNotFound());
            }
            int[] _codeTestID = new int[_exam.Tests.Count]; // Danh sách các mã đề thi của kỳ thi
            var   _tests      = _exam.Tests.ToList();

            for (int i = 0; i < _exam.Tests.Count; i++)
            {
                _codeTestID[i] = (int)_tests[i].CodeTest;
            }
            if (_codeTestID != null)
            {
                Random random         = new Random();
                int    selectCodeTest = random.Next(0, _codeTestID.Length); // Chọn ngẫu nhiên một mã đề
                return(View(_tests[selectCodeTest]));
            }

            return(View(_exam));
        }