// Private method to perform MCQ marks calculation private void calculateMCQMarks(Assessment assessment, List <Question> questions) { using (OnlineAssessmentDBEntities db = new OnlineAssessmentDBEntities()) { List <Student_Answer> studentAnswerList = db.Student_Answer.Where(sa => sa.Question.assessmentId == assessment.Id).ToList(); int correctCounter = 0; double score = 0.0; for (int i = 0; i < studentAnswerList.Count; i++) { if (db.Answer.Find(Guid.Parse(studentAnswerList[i].studentAnswer)).isCorrectAnswer) { correctCounter++; } } score = Math.Round((Convert.ToDouble(correctCounter) / assessment.Question.Count) * 100.00); Student_Assessment studentAssessment = new Student_Assessment(); studentAssessment.Id = Guid.NewGuid(); studentAssessment.assessmentId = assessment.Id; studentAssessment.studentId = Guid.Parse(Membership.GetUser().ProviderUserKey.ToString()); studentAssessment.score = Convert.ToInt32(score); studentAssessment.dateFinished = DateTime.Now; db.Student_Assessment.Add(studentAssessment); db.SaveChanges(); } }
protected void Page_Load(object sender, EventArgs e) { try { // Get the subject dropdown list DropDownList subjectDrpDwnList = subject; // Get the current logged-in lecturer user ID Guid userId = new Guid(Membership.GetUser().ProviderUserKey.ToString()); // Using DB connection using (OnlineAssessmentDBEntities db = new OnlineAssessmentDBEntities()) { // Get the current logged-in lecturer Lecturer_Profile lecturer = db.Lecturer_Profile.Where(l => l.Id == userId).FirstOrDefault(); // Get only the subjects for the faculty that the lecturer is in List <Subject> subjects = db.Subject.Where(s => s.Programme.faculty == lecturer.faculty).ToList(); // Populate the dropdown list foreach (var subject in subjects) { subjectDrpDwnList.Items.Add(new ListItem(subject.subjectName, subject.Id.ToString())); } } } catch (Exception) { Response.Redirect("/"); } }
protected void Page_Load(object sender, EventArgs e) { using (OnlineAssessmentDBEntities db = new OnlineAssessmentDBEntities()) { string studID = ""; try { studID = Page.RouteData.Values["id"].ToString(); } catch (Exception) { Response.Redirect("/lecturer/list"); } aspnet_Users student = db.aspnet_Users.Where(s => s.LoweredUserName.Equals(studID.ToLower())).FirstOrDefault(); if (student != null) { studInfoHeader.Text = $"{student.Student_Profile.firstName} {student.Student_Profile.lastName} - {student.UserName}"; } else { Response.Redirect("/lecturer/list"); } } }
protected void createAssessBtn_Click(object sender, EventArgs e) { using (OnlineAssessmentDBEntities db = new OnlineAssessmentDBEntities()) { Guid subjectID = Guid.Parse(subject.SelectedItem.Value); int publicity = Convert.ToInt16(assessPublicity.SelectedItem.Value); int type = Convert.ToInt16(assessType.SelectedItem.Value); Assessment assessment = db.Assessment.Where(a => a.Subject1.Id == subjectID && a.publicity == publicity && a.type == type && a.assessName.Equals(assessName.Text)).FirstOrDefault(); // Check if assessment already exist if (assessment != null) { assessNameLbl.Text = assessment.assessName; alertPlaceholder.Visible = true; } else { Session.Add("assessType", assessType.SelectedItem.Value); Session.Add("publicity", assessPublicity.SelectedItem.Value); Session.Add("subject", subject.SelectedItem.Value); Session.Add("quesNum", quesNum.Text); Session.Add("newAssessName", assessName.Text); Response.Redirect("/lecturer/assessment/create"); } } }
protected void Page_Load(object sender, EventArgs e) { // Check if the request is authenticated if (Request.IsAuthenticated) { // Find label from the loginView control Label userNameLbl = loginView.FindControl("userName") as Label; // Connect to DB to retrieve first name of the logged-in user using (OnlineAssessmentDBEntities db = new OnlineAssessmentDBEntities()) { // Find user by UUID aspnet_Users user = db.aspnet_Users.Find(Membership.GetUser().ProviderUserKey); // If the user is not a lecturer if (user.Lecturer_Profile == null && user.Student_Profile != null) { userNameLbl.Text = user.Student_Profile.firstName; } else if (user.Student_Profile == null && user.Lecturer_Profile != null) { userNameLbl.Text = user.Lecturer_Profile.firstName; } else { userNameLbl.Text = user.UserName; } } } }
protected void Page_Load(object sender, EventArgs e) { this.db = new OnlineAssessmentDBEntities(); if (Session["assessCreated"] != null && Session["assessName"] != null) { assessName.Text = Session["assessName"].ToString(); alertPlaceholder.Visible = true; } }
/** * Private method for initializing * Subject table in database */ private void initSubjectDatabase() { // Declare subjects for the application string[] subjects = { "BACS2053 Object-Oriented Analysis and Design", "BACS2063 Data Structures & Algorithms", "BAIT2164 Computer Networks", "BAIT2113 Web Application Development", "AACA2132 Financial Accounting", "AACA3232 Principles of Finance", "AACA3431 Fundamentals of Auditing", "AACA2322 Pricing Strategy", "ADMK2563 Digital Marketing", "ADMK3262 Principles of Marketing", "ACHC2362 Production and Multimedia", "ACHC2342 Television Production", "ABCI2423 Advanced Photography", "ABCC2212 Consumer Behaviour and Culture", }; /** * Temporarily use db connection to insert the subjects */ using (OnlineAssessmentDBEntities db = new OnlineAssessmentDBEntities()) { // Loop through each subject and create them foreach (string subject in subjects) { // Check if the subject already exist in database if (db.Subject.Where(s => s.subjectName == subject).FirstOrDefault() is null) { try { // Create new Subject object Subject sub = new Subject(); sub.Id = Guid.NewGuid(); sub.subjectName = subject; sub.creditHours = Convert.ToInt32(subject.Substring(7, 1)); // Save the new subject into database db.Subject.Add(sub); db.SaveChanges(); } catch (Exception ex) { throw new Exception($"An exception occured when inserting subjects: {ex.Message}"); } } } } }
protected void Page_Load(object sender, EventArgs e) { DropDownList programme = registerSubjectForm.FindControl("programme") as DropDownList; using (OnlineAssessmentDBEntities db = new OnlineAssessmentDBEntities()) { List <Programme> progs = db.Programme.ToList(); foreach (var prog in progs) { programme.Items.Add(new ListItem(prog.progName, prog.progId.ToString())); } } }
protected void submitBtn_Click(object sender, EventArgs e) { // Variables declaration double totalMark = 0.0; Guid assessID = Guid.Empty; string studID = ""; try { assessID = Guid.Parse(Page.RouteData.Values["id"].ToString()); studID = Page.RouteData.Values["studId"].ToString(); } catch (Exception) { Response.Redirect("/lecturer/list"); } using (OnlineAssessmentDBEntities db = new OnlineAssessmentDBEntities()) { Student_Assessment studAssess = db.Student_Assessment.Where(sa => sa.aspnet_Users.LoweredUserName.Equals(studID.ToLower()) && sa.assessmentId == assessID).FirstOrDefault(); if (studAssess is null) { Response.Redirect("/lecturer/list"); } List <Question> questions = studAssess.Assessment.Question.ToList(); // Iterate and display questions for (int i = 0; i < questions.Count; i++) { TextBox markTxtBox = questionPlaceHolder.FindControl($"writtenAns_qm{i + 1}") as TextBox; totalMark += Convert.ToDouble(markTxtBox.Text); } // Calculate final mark totalMark /= Convert.ToDouble(questions.Count); studAssess.score = Convert.ToInt16(totalMark); db.SaveChanges(); // Display label totalMarkLbl.Text = $"{Convert.ToInt16(totalMark).ToString()} ({studAssess.getGrade()})"; alertPlaceholder.Visible = true; // Send an email of the score to student sendEmailToStudent(studAssess); } }
// The return type can be changed to IEnumerable, however to support // paging and sorting, the following parameters must be added: // int maximumRows // int startRowIndex // out int totalRowCount // string sortByExpression public IQueryable <university_online_assessment.Models.Student_Assessment> displayStudAssessList_GetData() { string studID = ""; try { studID = Page.RouteData.Values["id"].ToString(); } catch (Exception) { Response.Redirect("/lecturer/list"); } OnlineAssessmentDBEntities db = new OnlineAssessmentDBEntities(); return(db.Student_Assessment.Where(sa => sa.aspnet_Users.LoweredUserName.Equals(studID.ToLower()))); }
/** * Private method for initializing * aspnet_Roles table in database */ private void initProgrammeDatabase() { // Declare programmes for this application string[] programmes = { "[FOCS] Bachelor of Information Technology - Software Systems Development (RSD)", "[FOCS] Bachelor of Information Technology - Internet Technology (RIT)", "[FCCI] Bachelor of Communication & Creative Industries - Advertising (RAC)", "[FCCI] Bachelor of Communication & Creative Industries - Broadcasting (RBC)", "[FAFB] Bachelor of Accountancy, Finance & Business - Marketing (RMA)", "[FAFB] Bachelor of Accountancy, Finance & Business - Accounting (RAA)", }; /** * Temporarily use db connection to insert the programmes */ using (OnlineAssessmentDBEntities db = new OnlineAssessmentDBEntities()) { // Loop through each prog and create them foreach (string prog in programmes) { // Check if the subject already exist in database if (db.Programme.Where(s => s.progName == prog).FirstOrDefault() is null) { try { // Create new Programme object Programme newProg = new Programme(); newProg.progId = Guid.NewGuid(); newProg.progName = prog; newProg.faculty = prog.Substring(1, 4); // Save the new programme into database db.Programme.Add(newProg); db.SaveChanges(); } catch (Exception ex) { throw new Exception($"An exception occured when inserting programme: {ex.Message}"); } } } } }
protected void Page_Load(object sender, EventArgs e) { db = new OnlineAssessmentDBEntities(); Guid assessID = Guid.Empty; try { assessID = Guid.Parse(Page.RouteData.Values["id"].ToString()); } catch (Exception) { Response.Redirect("/lecturer/list"); } Student_Assessment student_Assessments = db.Student_Assessment.Where(sa => sa.assessmentId == assessID).FirstOrDefault(); if (student_Assessments == null) { Response.Redirect("/lecturer/list"); } assessName.Text = student_Assessments.Assessment.assessName; }
public void addNewSubject() { if (Page.IsValid) { // Create the Subject Subject subject = new Subject(); subject.Id = Guid.NewGuid(); TryUpdateModel(subject); if (ModelState.IsValid) { // Connect to database to add new subject using (OnlineAssessmentDBEntities db = new OnlineAssessmentDBEntities()) { // Add the new subject and save it db.Subject.Add(subject); db.SaveChanges(); // Set the text to new subject name newSubjectName.Text = subject.subjectName; // Show success label & hide failure label alertSuccess.Visible = true; alertFailure.Visible = false; } } else { // Set the error text alertFailureMsg.Text = "Oops! Something went wrong when registering the new subject"; // Show success label & hide failure label alertSuccess.Visible = false; alertFailure.Visible = true; } } }
public void addNewStudent() { if (Page.IsValid) { try { // Retrieve controls TextBox studId = registerStudentForm.FindControl("studId") as TextBox; TextBox password = registerStudentForm.FindControl("password_confirmation") as TextBox; TextBox email = registerStudentForm.FindControl("email") as TextBox; DropDownList programme = registerStudentForm.FindControl("programme") as DropDownList; // First create the user membership MembershipUser newStudent = Membership.CreateUser(studId.Text, password.Text, email.Text); Roles.AddUserToRole(studId.Text, "Student"); // Create the student profile Student_Profile student = new Student_Profile(); student.Id = (Guid)newStudent.ProviderUserKey; TryUpdateModel(student); if (ModelState.IsValid) { // Connect to database to add new staff profile using (OnlineAssessmentDBEntities db = new OnlineAssessmentDBEntities()) { // Create the enrollment records for the new student Enrollment newEnrollment = new Enrollment(); newEnrollment.Id = Guid.NewGuid(); newEnrollment.studId = student.Id; newEnrollment.progId = Guid.Parse(programme.SelectedItem.Value); newEnrollment.enrollmentDateTime = DateTime.Now; // Add the new staff and save it db.Enrollment.Add(newEnrollment); db.Student_Profile.Add(student); db.SaveChanges(); // Set the text to new staff ID newStudID.Text = studId.Text; // Show success label & hide failure label alertSuccess.Visible = true; alertFailure.Visible = false; } } } catch (MembershipCreateUserException ex) { // Match exception code with status code from MembershipCreateStatus class switch (ex.StatusCode) { case MembershipCreateStatus.DuplicateUserName: alertFailureMsg.Text = "There already exists a user with this username."; break; case MembershipCreateStatus.DuplicateEmail: alertFailureMsg.Text = "There already exists a user with this email address."; break; case MembershipCreateStatus.InvalidEmail: alertFailureMsg.Text = "There email address you provided in invalid."; break; case MembershipCreateStatus.InvalidPassword: alertFailureMsg.Text = "The password you provided is invalid. It must be seven characters long and have at least one non-alphanumeric character."; break; default: alertFailureMsg.Text = "There was an unknown error; the user account was NOT created."; break; } // Show failure message alertSuccess.Visible = false; alertFailure.Visible = true; } catch (Exception ex) { // Show failure message alertFailureMsg.Text = "Oops! There was a problem occurred when registering the new student."; alertSuccess.Visible = false; alertFailure.Visible = true; } } }
protected void Page_Load(object sender, EventArgs e) { Guid assessID = Guid.Empty; string studID = ""; try { assessID = Guid.Parse(Page.RouteData.Values["id"].ToString()); studID = Page.RouteData.Values["studId"].ToString(); } catch (Exception) { Response.Redirect("/lecturer/list"); } using (OnlineAssessmentDBEntities db = new OnlineAssessmentDBEntities()) { Student_Assessment studAssess = db.Student_Assessment.Where(sa => sa.aspnet_Users.LoweredUserName.Equals(studID.ToLower()) && sa.assessmentId == assessID).FirstOrDefault(); if (studAssess is null) { Response.Redirect("/lecturer/list"); } Page.Title = $"{ studAssess.aspnet_Users.Student_Profile.firstName } { studAssess.aspnet_Users.Student_Profile.lastName } { studAssess.Assessment.assessName }"; // Set header name subjectLbl.Text = studAssess.Assessment.Subject1.subjectName; assessNameLbl.Text = studAssess.Assessment.assessName; List <Question> questions = studAssess.Assessment.Question.ToList(); // Iterate and display questions for (int i = 0; i < questions.Count; i++) { Label quesNoLbl = new Label(); quesNoLbl.Text = $"Question No.{i + 1}"; questionPlaceHolder.Controls.Add(quesNoLbl); questionPlaceHolder.Controls.Add(new LiteralControl("<br>")); if (questions[i].imgPath != null) { questionPlaceHolder.Controls.Add(new LiteralControl($"<img src=\"/Image_Storage/{questions[i].imgPath}\" class=\"img-fluid\" />")); } questionPlaceHolder.Controls.Add(new LiteralControl($"<p>{questions[i].question1}</p>")); questionPlaceHolder.Controls.Add(new LiteralControl("<div class=\"form-group\">")); TextBox answerTxtBox = new TextBox(); answerTxtBox.TextMode = TextBoxMode.MultiLine; answerTxtBox.ID = $"writtenAns_q{i + 1}"; answerTxtBox.CssClass = "form-control"; answerTxtBox.Attributes.Add("cols", "20"); answerTxtBox.Attributes.Add("rows", "2"); answerTxtBox.Text = questions[i].Student_Answer.studentAnswer; questionPlaceHolder.Controls.Add(answerTxtBox); questionPlaceHolder.Controls.Add(new LiteralControl("</div>")); questionPlaceHolder.Controls.Add(new LiteralControl("<div class=\"form-group\">")); Label markLabel = new Label(); markLabel.Text = "Marks"; TextBox markTextBox = new TextBox(); markTextBox.TextMode = TextBoxMode.Number; markTextBox.ID = $"writtenAns_qm{i + 1}"; markTextBox.CssClass = "form-control"; markTextBox.Attributes.Add("min", "0"); markTextBox.Attributes.Add("max", "100"); questionPlaceHolder.Controls.Add(markLabel); questionPlaceHolder.Controls.Add(markTextBox); questionPlaceHolder.Controls.Add(new LiteralControl("</div>")); } } }
protected void Page_Load(object sender, EventArgs e) { Guid assessID = Guid.Empty; try { assessID = Guid.Parse(Page.RouteData.Values["id"].ToString()); } catch (Exception) { Response.Redirect("/student/list"); } using (OnlineAssessmentDBEntities db = new OnlineAssessmentDBEntities()) { Assessment assessment = db.Assessment.Find(assessID); if (assessment == null) { Response.Redirect("/student/list"); } Page.Title = assessment.assessName; // Set header name subjectNameHeader.Text = assessment.Subject1.subjectName; assessNameHeader.Text = assessment.assessName; // 0 = MCQ, 1 = Written if (assessment.type == 0) { List <Question> questions = assessment.Question.ToList(); String[] MCQ = { "A", "B", "C", "D" }; // Iterate and display questions for (int i = 0; i < questions.Count; i++) { Label quesNoLbl = new Label(); quesNoLbl.Text = $"Question No.{i + 1}"; questionPlaceHolder.Controls.Add(quesNoLbl); questionPlaceHolder.Controls.Add(new LiteralControl("<br>")); if (questions[i].imgPath != null) { questionPlaceHolder.Controls.Add(new LiteralControl($"<img src=\"/Image_Storage/{questions[i].imgPath}\" class=\"img-fluid\" />")); } questionPlaceHolder.Controls.Add(new LiteralControl($"<p>{questions[i].question1}</p>")); List <Answer> answers = questions[i].Answer.ToList(); // Display 4 MCQ answer for (int j = 0; j < answers.Count; j++) { questionPlaceHolder.Controls.Add(new LiteralControl("<div class=\"row\"><div class=\"col-md-10\">")); Label ansLbl = new Label(); ansLbl.ID = $"ans_{i + 1}_{j + 1}"; ansLbl.Text = $"{MCQ[j]}. {answers[j].answer1}"; questionPlaceHolder.Controls.Add(ansLbl); questionPlaceHolder.Controls.Add(new LiteralControl("<br>")); CheckBox chkBox = new CheckBox(); chkBox.ID = $"mcqAns_{i + 1}_{j + 1}"; questionPlaceHolder.Controls.Add(new LiteralControl("</div><div class=\"col-md-2\">")); questionPlaceHolder.Controls.Add(chkBox); questionPlaceHolder.Controls.Add(new LiteralControl("</div></div>")); } questionPlaceHolder.Controls.Add(new LiteralControl("<hr>")); } } else if (assessment.type == 1) { List <Question> questions = assessment.Question.ToList(); // Iterate and display questions for (int i = 0; i < questions.Count; i++) { Label quesNoLbl = new Label(); quesNoLbl.Text = $"Question No.{i + 1}"; questionPlaceHolder.Controls.Add(quesNoLbl); questionPlaceHolder.Controls.Add(new LiteralControl("<br>")); if (questions[i].imgPath != null) { questionPlaceHolder.Controls.Add(new LiteralControl($"<img src=\"/Image_Storage/{questions[i].imgPath}\" class=\"img-fluid\" />")); } questionPlaceHolder.Controls.Add(new LiteralControl($"<p>{questions[i].question1}</p>")); questionPlaceHolder.Controls.Add(new LiteralControl("<div class=\"form-group\">")); TextBox answerTxtBox = new TextBox(); answerTxtBox.TextMode = TextBoxMode.MultiLine; answerTxtBox.ID = $"writtenAns_q{i + 1}"; answerTxtBox.CssClass = "form-control"; answerTxtBox.Attributes.Add("cols", "20"); answerTxtBox.Attributes.Add("rows", "2"); questionPlaceHolder.Controls.Add(answerTxtBox); questionPlaceHolder.Controls.Add(new LiteralControl("</div>")); } } } }
protected void submitAsmntBtn_Click(object sender, EventArgs e) { String assessID = ""; try { assessID = Page.RouteData.Values["id"].ToString(); } catch (Exception) { Response.Redirect("/student/list"); } using (OnlineAssessmentDBEntities db = new OnlineAssessmentDBEntities()) { Assessment assessment = db.Assessment.Find(Guid.Parse(assessID)); if (assessment.type == 0) { // Get the list of questions List <Question> questions = assessment.Question.ToList(); // Loop through the list of questions for (int i = 0; i < questions.Count; i++) { Student_Answer student_Answer = new Student_Answer(); // Declare an empty Guid and question ID Guid studMCQAnswerID = Guid.Empty; Guid questionID = questions[i].Id; // Loop through the 4 MCQ choice to find the answer choice the student has chosen for (int j = 0; j < 4; j++) { CheckBox ansChkBox = questionPlaceHolder.FindControl($"mcqAns_{i + 1}_{j + 1}") as CheckBox; // If student picked this MCQ choice as the answer if (ansChkBox.Checked) { // Get the MCQ answer text String studSelectedAns = (questionPlaceHolder.FindControl($"ans_{i + 1}_{j + 1}") as Label).Text.Substring(3); // Retrieve the answer and get the ID Answer answer = db.Answer.Where(a => a.answer1.Equals(studSelectedAns) && a.questionId == questionID).FirstOrDefault(); if (answer != null) { studMCQAnswerID = answer.Id; } break; } } // Set student answer attributes and save it into database student_Answer.questionId = questionID; student_Answer.studentId = Guid.Parse(Membership.GetUser().ProviderUserKey.ToString()); student_Answer.studentAnswer = studMCQAnswerID.ToString(); db.Student_Answer.Add(student_Answer); db.SaveChanges(); } // Method to perform MCQ marks calculation calculateMCQMarks(assessment, questions); Response.Redirect("/student/list", false); } else if (assessment.type == 1) { // Get the list of questions List <Question> questions = assessment.Question.ToList(); // Create new student assessment record Student_Assessment student_Assessment = new Student_Assessment(); student_Assessment.Id = Guid.NewGuid(); student_Assessment.studentId = Guid.Parse(Membership.GetUser().ProviderUserKey.ToString()); student_Assessment.assessmentId = assessment.Id; student_Assessment.dateFinished = DateTime.Now; student_Assessment.score = -1; // Loop through the list of questions for (int i = 0; i < questions.Count; i++) { // Get the written answer and save into database Student_Answer student_Answer = new Student_Answer(); TextBox writtenAnswer = questionPlaceHolder.FindControl($"writtenAns_q{i + 1}") as TextBox; student_Answer.questionId = questions[i].Id; student_Answer.studentId = Guid.Parse(Membership.GetUser().ProviderUserKey.ToString()); student_Answer.studentAnswer = writtenAnswer.Text; db.Student_Answer.Add(student_Answer); db.SaveChanges(); } db.Student_Assessment.Add(student_Assessment); db.SaveChanges(); } Session["assessCompleted"] = "1"; Session["assessName"] = assessment.assessName; Response.Redirect("/student/list"); } }
protected void Page_Load(object sender, EventArgs e) { this.db = new OnlineAssessmentDBEntities(); String assessType = (String)Session["assessType"]; String subject = (String)Session["subject"]; int quesNum = Convert.ToInt32(Session["quesNum"]); if (assessType == null || subject == null) { Response.Redirect("/lecturer/assessment/pre_create"); } subjectLbl.Text = db.Subject.Find(Guid.Parse(subject)).subjectName; if (assessType.Equals("0")) { // Generate nth of questions for (int i = 0; i < quesNum; i++) { Label quesNoLbl = new Label(); quesNoLbl.Text = $"Question No.{i + 1}"; TextBox ques = new TextBox(); ques.ID = $"ques_{i + 1}"; ques.Attributes.Add("placeholder", $"Enter MCQ question no. {i + 1}"); ques.CssClass = "form-control"; questionPlaceHolder.Controls.Add(new LiteralControl("<div class=\"form-group\">")); questionPlaceHolder.Controls.Add(quesNoLbl); questionPlaceHolder.Controls.Add(ques); RequiredFieldValidator requiredFieldValidator = new RequiredFieldValidator(); requiredFieldValidator.SetFocusOnError = true; requiredFieldValidator.ErrorMessage = "Please ensure the question field is not left blank"; requiredFieldValidator.Display = ValidatorDisplay.Dynamic; requiredFieldValidator.ForeColor = System.Drawing.Color.Red; requiredFieldValidator.ControlToValidate = ques.ID; questionPlaceHolder.Controls.Add(requiredFieldValidator); questionPlaceHolder.Controls.Add(new LiteralControl("<br />")); // Generate 4 MCQ answer for (int j = 0; j < 4; j++) { questionPlaceHolder.Controls.Add(new LiteralControl("<div class=\"row\"><div class=\"col-md-10\">")); TextBox answer = new TextBox(); answer.ID = $"ans_{i + 1}_{j + 1}"; answer.Attributes.Add("placeholder", $"Enter answer no.{j + 1} for question no.{i + 1}"); answer.CssClass = "form-control"; CheckBox chkBox = new CheckBox(); chkBox.ID = $"isAns_{i + 1}_{j + 1}"; RequiredFieldValidator requiredFieldValidator1 = new RequiredFieldValidator(); requiredFieldValidator1.SetFocusOnError = true; requiredFieldValidator1.ErrorMessage = "Please ensure the answer field is not left blank"; requiredFieldValidator1.Display = ValidatorDisplay.Dynamic; requiredFieldValidator1.ForeColor = System.Drawing.Color.Red; requiredFieldValidator1.ControlToValidate = answer.ID; questionPlaceHolder.Controls.Add(answer); questionPlaceHolder.Controls.Add(requiredFieldValidator1); questionPlaceHolder.Controls.Add(new LiteralControl("</div><div class=\"col-md-2\">")); questionPlaceHolder.Controls.Add(chkBox); questionPlaceHolder.Controls.Add(new LiteralControl("</div></div>")); } questionPlaceHolder.Controls.Add(new LiteralControl("<br />")); FileUpload quesImg = new FileUpload(); quesImg.ID = $"quesImg_{i + 1}"; quesImg.CssClass = "form-group"; questionPlaceHolder.Controls.Add(quesImg); questionPlaceHolder.Controls.Add(new LiteralControl("</div>")); } } else if (assessType.Equals("1")) { // Generate nth of questions for (int i = 0; i < quesNum; i++) { Label quesNoLbl = new Label(); quesNoLbl.Text = $"Question No.{i + 1}"; TextBox ques = new TextBox(); ques.ID = $"ques_{i + 1}"; ques.Attributes.Add("placeholder", $"Enter written question no. {i + 1}"); ques.CssClass = "form-control"; RequiredFieldValidator requiredFieldValidator = new RequiredFieldValidator(); requiredFieldValidator.SetFocusOnError = true; requiredFieldValidator.ErrorMessage = "Please ensure the question field is not left blank<br/>"; requiredFieldValidator.Display = ValidatorDisplay.Dynamic; requiredFieldValidator.ForeColor = System.Drawing.Color.Red; requiredFieldValidator.ControlToValidate = ques.ID; FileUpload quesImg = new FileUpload(); quesImg.ID = $"quesImg_{i + 1}"; quesImg.CssClass = "form-group"; questionPlaceHolder.Controls.Add(new LiteralControl("<div class=\"form-group\">")); questionPlaceHolder.Controls.Add(quesNoLbl); questionPlaceHolder.Controls.Add(ques); questionPlaceHolder.Controls.Add(requiredFieldValidator); questionPlaceHolder.Controls.Add(quesImg); questionPlaceHolder.Controls.Add(new LiteralControl("</div>")); } } }
protected void updateBtn_Click(object sender, EventArgs e) { Guid assessID = Guid.Empty; try { assessID = Guid.Parse(Page.RouteData.Values["id"].ToString()); } catch (Exception) { Response.Redirect("/lecturer/list"); } using (OnlineAssessmentDBEntities db = new OnlineAssessmentDBEntities()) { Assessment assessment = db.Assessment.Find(assessID); if (assessment == null) { Response.Redirect("/lecturer/list"); } List <Question> questions = assessment.Question.ToList(); assessment.subject = Guid.Parse(subject.SelectedItem.Value); assessment.assessName = assessName.Text; assessment.publicity = Convert.ToInt16(assessPublicity.SelectedItem.Value); db.SaveChanges(); subjectLbl.Text = assessment.Subject1.subjectName; // 0 = MCQ, 1 = Written if (assessment.type == 0) { for (int i = 0; i < questions.Count; i++) { questions[i].question1 = (questionPlaceHolder.FindControl($"ques_{i + 1}") as TextBox).Text; FileUpload quesImg = questionPlaceHolder.FindControl($"quesImg_{i + 1}") as FileUpload; // If there is an image if (quesImg.HasFile) { Regex fileExtRegex = new Regex(@"^\.(jpg|png|jpeg|gif)$", RegexOptions.IgnoreCase); string imageStoragePath = "~/Image_Storage/", fileName = Path.GetFileName(quesImg.PostedFile.FileName), fileNameWithoutExt = Path.GetFileNameWithoutExtension(fileName), fileExtension = Path.GetExtension(fileName); if (fileExtRegex.IsMatch(fileExtension)) { if (!Directory.Exists(Server.MapPath(imageStoragePath))) { Directory.CreateDirectory(Server.MapPath(imageStoragePath)); } String finalPath = $"{fileNameWithoutExt}_{DateTime.Now.Ticks.ToString()}{fileExtension}"; quesImg.PostedFile.SaveAs($"{Server.MapPath(imageStoragePath)}{finalPath}"); questions[i].imgPath = finalPath; } } List <Answer> answers = questions[i].Answer.ToList(); for (int j = 0; j < answers.Count; j++) { answers[j].answer1 = (questionPlaceHolder.FindControl($"ans_{i + 1}_{j + 1}") as TextBox).Text; CheckBox isAnsChkBox = questionPlaceHolder.FindControl($"isAns_{i + 1}_{j + 1}") as CheckBox; answers[j].isCorrectAnswer = false; if (isAnsChkBox.Checked) { answers[j].isCorrectAnswer = true; } } db.SaveChanges(); } } else if (assessment.type == 1) { // Generate nth of questions for (int i = 0; i < questions.Count; i++) { questions[i].question1 = (questionPlaceHolder.FindControl($"ques_{i + 1}") as TextBox).Text; FileUpload quesImg = questionPlaceHolder.FindControl($"quesImg_{i + 1}") as FileUpload; // If there is an image if (quesImg.HasFile) { Regex fileExtRegex = new Regex(@"^\.(jpg|png|jpeg|gif)$", RegexOptions.IgnoreCase); string imageStoragePath = "~/Image_Storage/", fileName = Path.GetFileName(quesImg.PostedFile.FileName), fileNameWithoutExt = Path.GetFileNameWithoutExtension(fileName), fileExtension = Path.GetExtension(fileName); if (fileExtRegex.IsMatch(fileExtension)) { if (!Directory.Exists(Server.MapPath(imageStoragePath))) { Directory.CreateDirectory(Server.MapPath(imageStoragePath)); } String finalPath = $"{fileNameWithoutExt}_{DateTime.Now.Ticks.ToString()}{fileExtension}"; quesImg.PostedFile.SaveAs($"{Server.MapPath(imageStoragePath)}{finalPath}"); questions[i].imgPath = finalPath; } } // Save the changes db.SaveChanges(); } } updateStatus.Visible = true; } }
protected void Page_Load(object sender, EventArgs e) { Guid assessID = Guid.Empty; try { assessID = Guid.Parse(Page.RouteData.Values["id"].ToString()); } catch (Exception) { Response.Redirect("/lecturer/list"); } using (OnlineAssessmentDBEntities db = new OnlineAssessmentDBEntities()) { Assessment assessment = db.Assessment.Find(assessID); if (assessment == null) { Response.Redirect("/lecturer/list"); } Page.Title = $"Edit {assessment.assessName}"; // Get the subject dropdown list DropDownList subjectDrpDwnList = subject; // Get the current logged-in lecturer user ID Guid userId = Guid.Parse(Membership.GetUser().ProviderUserKey.ToString()); // Get the current logged-in lecturer Lecturer_Profile lecturer = db.Lecturer_Profile.Where(l => l.Id == userId).FirstOrDefault(); if (subjectDrpDwnList.Items.Count == 0) { // Get only the subjects for the faculty that the lecturer is in List <Subject> subjects = db.Subject.Where(s => s.Programme.faculty == lecturer.faculty).ToList(); int counter = 0, index = 0; // Populate the dropdown list foreach (var subject in subjects) { if (subject.subjectName.Equals(assessment.Subject1.subjectName)) { index = counter; } subjectDrpDwnList.Items.Add(new ListItem(subject.subjectName, subject.Id.ToString())); counter++; } subjectDrpDwnList.SelectedIndex = index; } if (!Page.IsPostBack) { // Set assessment publicity assessPublicity.SelectedIndex = assessment.publicity; assessName.Text = assessment.assessName; } // Set header name subjectLbl.Text = assessment.Subject1.subjectName; List <Question> questions = assessment.Question.ToList(); // 0 = MCQ, 1 = Written if (assessment.type == 0) { // Iterate and display questions for (int i = 0; i < questions.Count; i++) { if (questions[i].imgPath != null) { questionPlaceHolder.Controls.Add(new LiteralControl($"<img src=\"/Image_Storage/{questions[i].imgPath}\" class=\"img-fluid\" />")); } Label quesNoLbl = new Label(); quesNoLbl.Text = $"Question No.{i + 1}"; TextBox ques = new TextBox(); ques.ID = $"ques_{i + 1}"; ques.Text = questions[i].question1; ques.CssClass = "form-control"; RequiredFieldValidator requiredFieldValidator = new RequiredFieldValidator(); requiredFieldValidator.SetFocusOnError = true; requiredFieldValidator.ErrorMessage = "Please ensure the question field is not left blank"; requiredFieldValidator.Display = ValidatorDisplay.Dynamic; requiredFieldValidator.ForeColor = System.Drawing.Color.Red; requiredFieldValidator.ControlToValidate = ques.ID; questionPlaceHolder.Controls.Add(new LiteralControl("<div class=\"form-group\">")); questionPlaceHolder.Controls.Add(quesNoLbl); questionPlaceHolder.Controls.Add(ques); questionPlaceHolder.Controls.Add(requiredFieldValidator); questionPlaceHolder.Controls.Add(new LiteralControl("<br />")); List <Answer> answers = questions[i].Answer.ToList(); // Display 4 MCQ answer for (int j = 0; j < answers.Count; j++) { questionPlaceHolder.Controls.Add(new LiteralControl("<div class=\"row\"><div class=\"col-md-10\">")); TextBox answer = new TextBox(); answer.ID = $"ans_{i + 1}_{j + 1}"; answer.Text = answers[j].answer1; answer.CssClass = "form-control"; CheckBox chkBox = new CheckBox(); chkBox.ID = $"isAns_{i + 1}_{j + 1}"; if (answers[j].isCorrectAnswer) { chkBox.Checked = true; } RequiredFieldValidator requiredFieldValidator1 = new RequiredFieldValidator(); requiredFieldValidator1.SetFocusOnError = true; requiredFieldValidator1.ErrorMessage = "Please ensure the answer field is not left blank"; requiredFieldValidator1.Display = ValidatorDisplay.Dynamic; requiredFieldValidator1.ForeColor = System.Drawing.Color.Red; requiredFieldValidator1.ControlToValidate = answer.ID; questionPlaceHolder.Controls.Add(answer); questionPlaceHolder.Controls.Add(requiredFieldValidator1); questionPlaceHolder.Controls.Add(new LiteralControl("</div><div class=\"col-md-2\">")); questionPlaceHolder.Controls.Add(chkBox); questionPlaceHolder.Controls.Add(new LiteralControl("</div></div>")); } questionPlaceHolder.Controls.Add(new LiteralControl("<br />")); FileUpload quesImg = new FileUpload(); quesImg.ID = $"quesImg_{i + 1}"; quesImg.CssClass = "form-group"; questionPlaceHolder.Controls.Add(quesImg); questionPlaceHolder.Controls.Add(new LiteralControl("</div>"));; } } else if (assessment.type == 1) { // Generate nth of questions for (int i = 0; i < questions.Count; i++) { Label quesNoLbl = new Label(); quesNoLbl.Text = $"Question No.{i + 1}"; TextBox ques = new TextBox(); ques.ID = $"ques_{i + 1}"; ques.Text = questions[i].question1; ques.CssClass = "form-control"; RequiredFieldValidator requiredFieldValidator = new RequiredFieldValidator(); requiredFieldValidator.SetFocusOnError = true; requiredFieldValidator.ErrorMessage = "Please ensure the question field is not left blank<br/>"; requiredFieldValidator.Display = ValidatorDisplay.Dynamic; requiredFieldValidator.ForeColor = System.Drawing.Color.Red; requiredFieldValidator.ControlToValidate = ques.ID; questionPlaceHolder.Controls.Add(new LiteralControl("<div class=\"form-group\">")); questionPlaceHolder.Controls.Add(quesNoLbl); questionPlaceHolder.Controls.Add(ques); questionPlaceHolder.Controls.Add(requiredFieldValidator); questionPlaceHolder.Controls.Add(new LiteralControl("<br/>")); if (questions[i].imgPath != null) { questionPlaceHolder.Controls.Add(new LiteralControl($"<img src=\"/Image_Storage/{questions[i].imgPath}\" class=\"img-fluid\" />")); questionPlaceHolder.Controls.Add(new LiteralControl("<br/>")); FileUpload quesImg = new FileUpload(); quesImg.ID = $"quesImg_{i + 1}"; quesImg.CssClass = "form-group"; questionPlaceHolder.Controls.Add(quesImg); } questionPlaceHolder.Controls.Add(new LiteralControl("</div>")); } } } }
protected void Page_Load(object sender, EventArgs e) { this.db = new OnlineAssessmentDBEntities(); }
public void addNewLecturer() { if (Page.IsValid) { try { // Retrieve controls TextBox lectId = registerLecturerForm.FindControl("lectId") as TextBox; TextBox password = registerLecturerForm.FindControl("password_confirmation") as TextBox; TextBox email = registerLecturerForm.FindControl("email") as TextBox; // First create the user membership MembershipUser newLecturer = Membership.CreateUser(lectId.Text, password.Text, email.Text); Roles.AddUserToRole(lectId.Text, "Lecturer"); // Create the lecturer profile Lecturer_Profile lecturer = new Lecturer_Profile(); lecturer.Id = (Guid)newLecturer.ProviderUserKey; TryUpdateModel(lecturer); if (ModelState.IsValid) { // Connect to database to add new staff profile using (OnlineAssessmentDBEntities db = new OnlineAssessmentDBEntities()) { // Add the new staff and save it db.Lecturer_Profile.Add(lecturer); db.SaveChanges(); // Set the text to new staff ID newLecturerID.Text = lectId.Text; // Show success label & hide failure label alertSuccess.Visible = true; alertFailure.Visible = false; } } } catch (MembershipCreateUserException ex) { // Match exception code with status code from MembershipCreateStatus class switch (ex.StatusCode) { case MembershipCreateStatus.DuplicateUserName: alertFailureMsg.Text = "There already exists a user with this username."; break; case MembershipCreateStatus.DuplicateEmail: alertFailureMsg.Text = "There already exists a user with this email address."; break; case MembershipCreateStatus.InvalidEmail: alertFailureMsg.Text = "There email address you provided in invalid."; break; case MembershipCreateStatus.InvalidPassword: alertFailureMsg.Text = "The password you provided is invalid. It must be seven characters long and have at least one non-alphanumeric character."; break; default: alertFailureMsg.Text = "There was an unknown error; the user account was NOT created."; break; } // Show failure message alertSuccess.Visible = false; alertFailure.Visible = true; } catch (Exception ex) { // Show failure message alertFailureMsg.Text = "Oops! There was a problem occurred when registering the new lecturer."; alertSuccess.Visible = false; alertFailure.Visible = true; } } }