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