Пример #1
0
        protected int checkNumberOfCourseUserComplete(string userID)
        {
            Course_elearnDAO ceDAO                = new Course_elearnDAO();
            ArrayList        allCourses           = ceDAO.getAllCourses();
            QuizDAO          quizDAO              = new QuizDAO();
            QuizResultDAO    qrDAO                = new QuizResultDAO();
            ArrayList        allResults           = qrDAO.getAllQuizResultByUserID(userID);
            List <int>       allCompletedCourseID = new List <int>();
            double           totalLearningHours   = 0;
            int counter = 0;

            foreach (Course_elearn ce in allCourses)
            {
                List <Quiz> allQuizForCourse       = quizDAO.getAllQuizByCourseID(ce.getCourseID());
                Boolean     checkIfCompleteAllQuiz = true;
                Boolean     checkIfCourseGotQuiz   = false;
                foreach (Quiz currentQuiz in allQuizForCourse)
                {
                    checkIfCourseGotQuiz = true;
                    if (!qrDAO.checkIfUserPassQuiz(userID, currentQuiz.getQuizID()))
                    {
                        checkIfCompleteAllQuiz = false;
                    }
                }
                if (checkIfCompleteAllQuiz && checkIfCourseGotQuiz)
                {
                    counter++;
                    allCompletedCourseID.Add(ce.getCourseID());
                    totalLearningHours = totalLearningHours + ce.getHoursAwarded();
                }
            }
            Session["allCompletedCourseID"] = allCompletedCourseID;
            Session["totalLearningHours"]   = totalLearningHours;
            return(counter);
        }
Пример #2
0
        protected void btnViewResults_Click(object sender, EventArgs e)
        {
            QuizResultDAO qrDAO       = new QuizResultDAO();
            QuizDAO       quizDAO     = new QuizDAO();
            Quiz          currentQuiz = quizDAO.getQuizByID(Convert.ToInt32(Request.QueryString["id"]));
            User          currentUser = (User)Session["currentUser"];

            int    quizResultID  = (int)Session["timesUpResultID"];
            string displayAnswer = currentQuiz.getDisplayAnswer();

            if (displayAnswer.Equals("always"))
            {
                Response.Redirect("viewResults.aspx?id=" + quizResultID);
            }
            else if (displayAnswer.Equals("never"))
            {
                Response.Redirect("noResult.aspx?id=" + quizResultID);
            }
            else
            {
                Boolean checkIfUserPassQuiz = qrDAO.checkIfUserPassQuiz(currentUser.getUserID(), currentQuiz.getQuizID());
                if (checkIfUserPassQuiz)
                {
                    Response.Redirect("viewResults.aspx?id=" + quizResultID);
                }
                else
                {
                    Response.Redirect("viewMyResult.aspx?id=" + quizResultID);
                }
            }
        }
Пример #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            User currentUser = (User)Session["currentUser"];

            if (currentUser == null)
            {
                Response.Redirect("Login.aspx");
            }
            else
            {
                UserDAO userDAO = new UserDAO();
                User    user    = userDAO.getUserByID((String)Request.QueryString["id"]);
                if (user.getSupervisor().Equals(currentUser.getUserID()) || currentUser.getRoles().Contains("superuser"))
                {
                    QuizResultDAO qrDAO = new QuizResultDAO();
                    lblUsername.Text   = user.getName();
                    lblUsernameBC.Text = user.getName();
                    int numOfCourseComplete = checkNumberOfCourseUserComplete(user.getUserID());
                    lblCourseNumber.Text = numOfCourseComplete.ToString();
                    lblQuizNumber.Text   = qrDAO.getNumberOfPassQuiz(user.getUserID()).ToString();
                    double learningHours = (Double)Session["totalLearningHours"];
                    lblHours.Text = learningHours.ToString() + " hours";
                }
                else
                {
                    Response.Redirect("errorPage.aspx");
                }
            }
        }
Пример #4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            QuizResultDAO       qrDAO             = new QuizResultDAO();
            QuizQuestionDAO     qqDAO             = new QuizQuestionDAO();
            int                 quizResultID      = Convert.ToInt32(Request.QueryString["id"]);
            QuizResult          currentQuizResult = qrDAO.getQuizResultByID(quizResultID);
            Quiz                currentQuiz       = currentQuizResult.getQuiz();
            User                currentUser       = (User)Session["currentUser"];
            List <QuizQuestion> allQuestions      = qqDAO.getAllQuizQuestionByQuizID(currentQuiz.getQuizID());
            Boolean             superuser         = false;

            foreach (string s in currentUser.getRoles())
            {
                if (s.Equals("superuser"))
                {
                    superuser = true;
                }
            }
            if (currentUser == null)
            {
                Response.Redirect("Login.aspx");
            }
            else if (currentQuizResult.getUser().getUserID() != currentUser.getUserID() && !superuser)
            {
                Response.Redirect("errorPage.aspx");
            }
            else
            {
                lblBreadcrumbCourseName.Text = currentQuiz.getMainCourse().getCourseName();
                lblScore.Text = currentQuizResult.getScore() + "/" + allQuestions.Count;
                double percentage = (Convert.ToDouble(currentQuizResult.getScore()) / allQuestions.Count) * 100;
                lblPercent.Text   = Math.Round(percentage, 2).ToString() + "%";
                lblAttemptNo.Text = currentQuizResult.getAttempt().ToString();
                lblQuizDate.Text  = currentQuizResult.getDateSubmitted().ToString("dd/MM/yyyy");
                string grade = currentQuizResult.getGrade();
                if (grade.Equals("pass"))
                {
                    lblStatusPass.Visible = true;
                    lblStatusFail.Visible = false;
                }
                else
                {
                    lblStatusPass.Visible = false;
                    lblStatusFail.Visible = true;
                }
            }
        }
Пример #5
0
        protected Boolean checkIfCompletedAllPrerequisite(string userID, int quizID)
        {
            QuizDAO          quizDAO       = new QuizDAO();
            QuizResultDAO    qrDAO         = new QuizResultDAO();
            Course_elearnDAO ceDAO         = new Course_elearnDAO();
            Quiz             currentQuiz   = quizDAO.getQuizByID(quizID);
            Course_elearn    currentCourse = currentQuiz.getMainCourse();

            //check user completed all prereq course's quizzes
            ArrayList allPrereqCourses = ceDAO.getPrereqOfCourse(currentCourse.getCourseID());

            if (allPrereqCourses.Count > 0)
            {
                foreach (Course_elearn ce in allPrereqCourses)
                {
                    if (ce.getStatus().Equals("active") && (ce.getStartDate() <= DateTime.Now.Date && ce.getExpiryDate() >= DateTime.Now.Date))
                    {
                        List <Quiz> allQuizzes = quizDAO.getAllQuizByCourseID(ce.getCourseID());
                        foreach (Quiz innerQuiz in allQuizzes)
                        {
                            if (!qrDAO.getQuizResultByUserIDandQuizID(userID, innerQuiz.getQuizID()))
                            {
                                return(false);
                            }
                        }
                    }
                }
            }

            //if all prereq courses cleared, to check current quiz's prereqs
            ArrayList allPrerequisites = quizDAO.getPrereqOfQuiz(quizID);

            foreach (Quiz prereq in allPrerequisites)
            {
                if (currentCourse.getStatus().Equals("active") && (currentCourse.getStartDate() <= DateTime.Now.Date && currentCourse.getExpiryDate() >= DateTime.Now.Date))
                {
                    if (!qrDAO.getQuizResultByUserIDandQuizID(userID, prereq.getQuizID()))
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            User currentUser = (User)Session["currentUser"];

            if (currentUser == null)
            {
                Response.Redirect("Login.aspx");
            }
            else
            {
                QuizResultDAO qrDAO = new QuizResultDAO();
                lblUsername.Text = currentUser.getName();
                int numOfCourseComplete = checkNumberOfCourseUserComplete(currentUser.getUserID());
                lblCourseNumber.Text = numOfCourseComplete.ToString();
                lblQuizNumber.Text   = qrDAO.getNumberOfPassQuiz(currentUser.getUserID()).ToString();
                double learningHours = (Double)Session["totalLearningHours"];
                lblHours.Text = learningHours.ToString() + " hours";
            }
        }
Пример #7
0
        protected void Timer1_Tick(object sender, EventArgs e)
        {
            TimeSpan timeLeft = new TimeSpan();

            if (Session["timeLeft"] != null)
            {
                timeLeft = (DateTime)Session["timeLeft"] - DateTime.Now;
                if (timeLeft.Hours <= 0 && timeLeft.Minutes <= 0 && timeLeft.Seconds <= 0)
                {
                    lblTimer.Text          = "Times up!";
                    lblTimerDisplay.Text   = "Times up!";
                    panelQuiz.Visible      = false;
                    panelStartQuiz.Visible = false;
                    panelTimesUp.Visible   = true;

                    //insert attempt
                    int                      quizID          = Convert.ToInt32(Request.QueryString["id"]);
                    User                     currentUser     = (User)Session["currentUser"];
                    QuizResultDAO            qrDAO           = new QuizResultDAO();
                    QuizResultHistoryDAO     qrhDAO          = new QuizResultHistoryDAO();
                    List <QuizResultHistory> userAnswers     = (List <QuizResultHistory>)Session["userAnswers"];
                    QuizQuestion             currentQuestion = (QuizQuestion)Session["previousQuestion"];
                    int                      attempt         = qrDAO.getAttemptForQuiz(quizID, currentUser.getUserID());
                    attempt++;

                    //to calculate score
                    int userScore = calculateScore(userAnswers);

                    //to get all other details needed to insert to QuizResult
                    string grade = "fail";
                    if (checkIfUserPass(quizID, userScore))
                    {
                        grade = "pass";
                    }
                    DateTime currentDate = DateTime.Now.Date;

                    //insert quizResultHistory
                    foreach (QuizResultHistory qrh in userAnswers)
                    {
                        qrhDAO.createQuizResultHistory(qrh);
                    }

                    //insert QuizResult
                    int quizResultID = qrDAO.createQuizResult(currentUser.getUserID(), quizID, userScore, grade, currentDate, attempt);
                    Session["timesUpResultID"] = quizResultID;

                    //check if user can reattempt quiz
                    QuizResult currentResult = qrDAO.getQuizResultByID(quizResultID);
                    Quiz       currentQuiz   = currentResult.getQuiz();
                    if (currentQuiz.getMultipleAttempts().Equals("n"))
                    {
                        int numOfAttempts = qrDAO.getNumberOfAttempts(currentUser.getUserID(), currentQuiz.getQuizID());
                        if (numOfAttempts >= currentQuiz.getNumberOfAttempts())
                        {
                            btnRestartQuiz.Visible = false;
                        }
                    }
                }
                else
                {
                    //lblTimer.Text = timeLeft.Seconds.ToString();
                    lblTimer.Text = timeLeft.ToString(@"hh\:mm\:ss");
                }
            }
        }
Пример #8
0
        protected void btnFinish_Click(object sender, EventArgs e)
        {
            if (rblAnswers.SelectedIndex != -1)
            {
                int  quizID      = Convert.ToInt32(Request.QueryString["id"]);
                User currentUser = (User)Session["currentUser"];
                //handle current question and answer
                QuizDAO              quizDAO         = new QuizDAO();
                QuizResultDAO        qrDAO           = new QuizResultDAO();
                QuizResultHistory    currentAnswer   = new QuizResultHistory();
                QuizResultHistoryDAO qrhDAO          = new QuizResultHistoryDAO();
                QuizQuestionDAO      qqDAO           = new QuizQuestionDAO();
                QuizQuestion         currentQuestion = (QuizQuestion)Session["previousQuestion"];
                Quiz       currentQuiz           = quizDAO.getQuizByID(quizID);
                QuizAnswer currentSelectedAnswer = new QuizAnswer(Convert.ToInt32(rblAnswers.SelectedValue), currentQuestion, rblAnswers.SelectedItem.Text);
                //int attempt = qrhDAO.getAttemptForQuiz(currentQuestion.getQuizQuestionID());
                int attempt = qrDAO.getAttemptForQuiz(quizID, currentUser.getUserID());
                attempt++;
                currentAnswer.setAttempt(attempt);
                currentAnswer.setUserID(currentUser.getUserID());
                currentAnswer.setQuestion(currentQuestion);
                currentAnswer.setAnswer(currentSelectedAnswer);
                currentAnswer.setQuizID(quizID);
                List <QuizResultHistory> userAnswers = (List <QuizResultHistory>)Session["userAnswers"];
                userAnswers.Add(currentAnswer);

                //to calculate score
                int userScore = calculateScore(userAnswers);

                //to get all other details needed to insert to QuizResult
                string grade = "fail";
                if (checkIfUserPass(quizID, userScore))
                {
                    grade = "pass";
                }
                DateTime currentDate = DateTime.Now.Date;

                //insert quizResultHistory
                foreach (QuizResultHistory qrh in userAnswers)
                {
                    qrhDAO.createQuizResultHistory(qrh);
                }

                //insert QuizResult
                int quizResultID = qrDAO.createQuizResult(currentUser.getUserID(), quizID, userScore, grade, currentDate, attempt);

                string displayAnswer = currentQuiz.getDisplayAnswer();
                if (displayAnswer.Equals("always"))
                {
                    Response.Redirect("viewResults.aspx?id=" + quizResultID);
                }
                else if (displayAnswer.Equals("never"))
                {
                    Response.Redirect("noResult.aspx?id=" + quizResultID);
                }
                else
                {
                    if (grade.Equals("pass"))
                    {
                        Response.Redirect("viewResults.aspx?id=" + quizResultID);
                    }
                    else
                    {
                        Response.Redirect("viewMyResult.aspx?id=" + quizResultID);
                    }
                }
            }
        }
Пример #9
0
        protected void Page_Load(object sender, EventArgs e)
        {
            QuizDAO quizDAO     = new QuizDAO();
            String  id_str      = Request.QueryString["id"];
            int     id_num      = int.Parse(id_str);
            Quiz    currentQuiz = quizDAO.getQuizByID(id_num);
            User    currentUser = (User)Session["currentUser"];

            if (currentUser == null)
            {
                Response.Redirect("Login.aspx");
            }
            else
            {
                //check if user completed all prerequisites of the quiz
                Boolean checkCompleted = checkIfCompletedAllPrerequisite(currentUser.getUserID(), currentQuiz.getQuizID());

                if (!checkCompleted)
                {
                    //redirect user to complete all prerequisite quiz first
                    Response.Redirect("preqIncomplete.aspx");
                }
                else
                {
                    if (!IsPostBack)
                    {
                        int questionCounter = 1;
                        Session["questionCounter"]   = questionCounter;
                        lblBreadcrumbCourseName.Text = currentQuiz.getMainCourse().getCourseName();
                        lblQuizDesc.Text             = currentQuiz.getDescription();
                        lblQuizTitle.Text            = currentQuiz.getTitle();
                        QuizQuestionDAO     qqDAO        = new QuizQuestionDAO();
                        QuizResultDAO       qrDAO        = new QuizResultDAO();
                        List <QuizQuestion> allQuestions = qqDAO.getAllQuizQuestionByQuizID(currentQuiz.getQuizID());
                        lblQnNum.Text      = "1";
                        lblTotalQn.Text    = allQuestions.Count.ToString();
                        lblTotalNumQn.Text = allQuestions.Count.ToString();
                        lblPassingReq.Text = currentQuiz.getPassingGrade().ToString() + "/" + allQuestions.Count.ToString();
                        TimeSpan timeLeft = TimeSpan.FromSeconds(currentQuiz.getTimeLimit());
                        lblTimer.Text        = timeLeft.ToString(@"hh\:mm\:ss");
                        lblTimerDisplay.Text = timeLeft.ToString(@"hh\:mm\:ss");
                        string multipleAttempt = currentQuiz.getMultipleAttempts();
                        if (multipleAttempt.Equals("n"))
                        {
                            int attempts = currentQuiz.getNumberOfAttempts();
                            lblMaxAttempt.Text = attempts + " times";
                            int numOfAttempts = qrDAO.getNumberOfAttempts(currentUser.getUserID(), currentQuiz.getQuizID());
                            if (numOfAttempts > currentQuiz.getNumberOfAttempts())
                            {
                                btnStartQuiz.Visible     = false;
                                lblmaxAttemptMsg.Visible = true;
                            }
                        }
                        else
                        {
                            lblMaxAttempt.Text = "No limit";
                        }

                        if (currentQuiz.getRandomOrder().Equals("y"))
                        {
                            Session["remainingQuestions"] = randomize(allQuestions);
                        }
                        else
                        {
                            Session["remainingQuestions"] = allQuestions;
                        }
                    }
                    else
                    {
                        lblQnNum.Text = Session["questionCounter"].ToString();
                    }
                }
            }
        }