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