示例#1
0
        // 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();
            }
        }
示例#2
0
        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("/");
            }
        }
示例#3
0
        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");
                }
            }
        }
示例#4
0
        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);
            }
        }
示例#10
0
        // 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>"));
                }
            }
        }
示例#16
0
        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>"));
                    }
                }
            }
        }
示例#17
0
        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");
            }
        }
示例#18
0
        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>"));
                    }
                }
            }
        }
示例#21
0
 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;
                }
            }
        }