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; }
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; } } }
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); }
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; } } }
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}"); } }
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); } } } }
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(); } } } }