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