Example #1
0
        protected void btnRestartQuiz_Click(object sender, EventArgs e)
        {
            QuizDAO quizDAO         = new QuizDAO();
            Quiz    currentQuiz     = quizDAO.getQuizByID(Convert.ToInt32(Request.QueryString["id"]));
            int     questionCounter = 1;

            Session["questionCounter"] = questionCounter;
            lblQnNum.Text = Session["questionCounter"].ToString();
            TimeSpan timeLeft = TimeSpan.FromSeconds(currentQuiz.getTimeLimit());

            lblTimer.Text        = timeLeft.ToString(@"hh\:mm\:ss");
            lblTimerDisplay.Text = timeLeft.ToString(@"hh\:mm\:ss");
            QuizQuestionDAO     qqDAO        = new QuizQuestionDAO();
            List <QuizQuestion> allQuestions = qqDAO.getAllQuizQuestionByQuizID(currentQuiz.getQuizID());

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

            panelQuiz.Visible      = false;
            panelStartQuiz.Visible = true;
            panelTimesUp.Visible   = false;
        }
Example #2
0
        protected void btnNext_Click(object sender, EventArgs e)
        {
            if (rblAnswers.SelectedIndex != -1)
            {
                int  quizID      = Convert.ToInt32(Request.QueryString["id"]);
                User currentUser = (User)Session["currentUser"];
                //handle question counter
                int counter = (int)Session["questionCounter"];
                counter++;
                lblQnNum.Text = counter.ToString();
                Session["questionCounter"] = counter;

                //handle remaining questions
                List <QuizQuestion> remainingQuestions = (List <QuizQuestion>)Session["remainingQuestions"];
                remainingQuestions.RemoveAt(0);
                Session["remainingQuestions"] = remainingQuestions;

                //handle current question and answer
                QuizResultHistory    currentAnswer         = new QuizResultHistory();
                QuizResultHistoryDAO qrhDAO                = new QuizResultHistoryDAO();
                QuizQuestionDAO      qqDAO                 = new QuizQuestionDAO();
                QuizQuestion         currentQuestion       = (QuizQuestion)Session["previousQuestion"];
                QuizAnswer           currentSelectedAnswer = new QuizAnswer(Convert.ToInt32(rblAnswers.SelectedValue), currentQuestion, rblAnswers.SelectedItem.Text);
                int attempt = qrhDAO.getAttemptForQuiz(currentQuestion.getQuizQuestionID());
                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);
                Session["userAnswers"] = userAnswers;

                if (remainingQuestions.Count > 0)
                {
                    //handle displaying next qn
                    QuizQuestion nextQuestion = remainingQuestions[0];
                    Session["previousQuestion"] = nextQuestion;
                    QuizAnswerDAO     qaDAO = new QuizAnswerDAO();
                    List <QuizAnswer> nextPossibleAnswers = qaDAO.getAllQuizAnswersByQuizQuestionID(nextQuestion.getQuizQuestionID());

                    lblQuestion.Text = nextQuestion.getQuestion();
                    rblAnswers.Items.Clear();
                    foreach (QuizAnswer qa in nextPossibleAnswers)
                    {
                        rblAnswers.Items.Add(new ListItem(qa.getAnswer(), qa.getQuizAnswerID().ToString()));
                    }
                }
                if (remainingQuestions.Count == 1)
                {
                    btnFinish.Visible = true;
                    btnNext.Visible   = false;
                }
            }
        }
Example #3
0
        protected int calculateScore(List <QuizResultHistory> userAnswers)
        {
            QuizQuestionDAO qqDAO      = new QuizQuestionDAO();
            int             totalScore = 0;

            foreach (QuizResultHistory qrh in userAnswers)
            {
                if (qqDAO.checkIfAnswerCorrect(qrh.getQuestion().getQuizQuestionID(), qrh.getAnswer().getQuizAnswerID()))
                {
                    totalScore++;
                }
            }
            return(totalScore);
        }
Example #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;
                }
            }
        }
Example #5
0
        protected void ValidateNumberOfQuestions(object source, ServerValidateEventArgs args)
        {
            System.Diagnostics.Debug.WriteLine("val pass");
            string              id_str          = Request.QueryString["id"];
            int                 id_num          = int.Parse(id_str);
            QuizQuestionDAO     quizquestionDAO = new QuizQuestionDAO();
            List <QuizQuestion> allQuestions    = quizquestionDAO.getAllQuizQuestionByQuizID(id_num);
            int                 noOfQuestions   = allQuestions.Count + 1;

            System.Diagnostics.Debug.WriteLine("no:" + noOfQuestions);
            int input = Convert.ToInt32(Convert.ToDouble(txtNumCorrectAns.Text));

            if (input <= noOfQuestions)
            {
                System.Diagnostics.Debug.WriteLine("val true");
                args.IsValid = true;
            }
            else
            {
                System.Diagnostics.Debug.WriteLine("val false");
                args.IsValid = false;
                ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "openModal();", true);
            }
        }
        protected void btnConfirmSubmit_Click(object sender, EventArgs e)
        {
            //to do validation
            Page.Validate("ValidateFormTwo");
            if (!Page.IsValid)
            {
            }
            else
            {
                //add the last question
                List <QuizQuestion> allQuestions = (List <QuizQuestion>)Session["allQuestions"];
                QuizQuestion        newQuestion  = new QuizQuestion();
                newQuestion.setQuestion(txtQuizQuestion.Text);

                QuizAnswer answer1 = new QuizAnswer();
                answer1.setAnswer(txtOptionOne.Text);

                QuizAnswer answer2 = new QuizAnswer();
                answer2.setAnswer(txtOptionTwo.Text);

                QuizAnswer answer3 = new QuizAnswer();
                answer3.setAnswer(txtOptionThree.Text);

                QuizAnswer answer4 = new QuizAnswer();
                answer4.setAnswer(txtOptionFour.Text);

                List <QuizAnswer> allAnswersForLastQn = new List <QuizAnswer>();
                allAnswersForLastQn.Add(answer1);
                allAnswersForLastQn.Add(answer2);
                allAnswersForLastQn.Add(answer3);
                allAnswersForLastQn.Add(answer4);

                newQuestion.setAllAnswers(allAnswersForLastQn);

                if (ddlCorrectAns.SelectedValue.Equals("1"))
                {
                    newQuestion.setQuizAnswer(answer1);
                }
                else if (ddlCorrectAns.SelectedValue.Equals("2"))
                {
                    newQuestion.setQuizAnswer(answer2);
                }
                else if (ddlCorrectAns.SelectedValue.Equals("3"))
                {
                    newQuestion.setQuizAnswer(answer3);
                }
                else
                {
                    newQuestion.setQuizAnswer(answer4);
                }

                allQuestions.Add(newQuestion);

                QuizDAO          quizDAO = new QuizDAO();
                QuizAnswerDAO    qaDAO   = new QuizAnswerDAO();
                QuizQuestionDAO  qqDAO   = new QuizQuestionDAO();
                Course_elearnDAO ceDAO   = new Course_elearnDAO();

                Course_elearn currentCourse = ceDAO.get_course_by_id(Convert.ToInt32(Request.QueryString["id"]));

                //create quiz
                List <string> part1   = (List <string>)Session["createQuiz1"];
                Quiz          newQuiz = new Quiz();
                newQuiz.setTitle(part1[0]);
                newQuiz.setDescription(part1[1]);
                newQuiz.setMainCourse(currentCourse);
                newQuiz.setPassingGrade(Convert.ToInt32(txtNumCorrectAns.Text));
                newQuiz.setStatus("active");
                if (ddlRandomize.SelectedValue.Equals("y"))
                {
                    newQuiz.setRandomOrder("y");
                }
                else
                {
                    newQuiz.setRandomOrder("n");
                }
                newQuiz.setTimeLimit(Convert.ToInt32(txtTimeLimit.Text));
                if (rdlAttempt.SelectedValue.Equals("unlimited"))
                {
                    newQuiz.setMultipleAttempts("y");
                    newQuiz.setNumberOfAttempts(0);
                }
                else
                {
                    newQuiz.setMultipleAttempts("n");
                    newQuiz.setNumberOfAttempts(Convert.ToInt32(txtNoOfAttempt.Text));
                }
                newQuiz.setDisplayAnswer(ddlDisplayAnswer.SelectedValue);

                int quizID = quizDAO.createQuiz(newQuiz);

                //add prerequisites
                List <int> prereqIDlist = (List <int>)Session["selectedPrereq"];
                foreach (int prereqID in prereqIDlist)
                {
                    quizDAO.insertPrerequisite(quizID, prereqID);
                }

                //create question and answer
                foreach (QuizQuestion question in allQuestions)
                {
                    question.setQuiz(quizDAO.getQuizByID(quizID));
                    int               questionID      = qqDAO.createQuizQuestion(question);
                    QuizQuestion      currentQuestion = qqDAO.getQuizQuestionByID(questionID);
                    List <QuizAnswer> allAnswers      = question.getAllAnswers();
                    foreach (QuizAnswer answer in allAnswers)
                    {
                        answer.setQuizQuestion(currentQuestion);
                        int answerID = qaDAO.createQuizAnswer(answer);
                        if (question.getQuizAnswer().getAnswer().Equals(answer.getAnswer()))
                        {
                            qqDAO.updateCorrectAnswerID(questionID, answerID);
                        }
                    }
                }

                //set audit
                User currentUser = (User)Session["currentUser"];
                setAudit(currentUser, "quiz", "create", quizID.ToString(), "quiz title: " + newQuiz.getTitle());

                Response.Redirect($"quizSummary.aspx?id={quizID}");
            }
        }
Example #7
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);
                    }
                }
            }
        }
Example #8
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();
                    }
                }
            }
        }