Beispiel #1
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("/");
            }
        }
        // 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.Enrollment> displayStudentList_GetData()
        {
            Guid             lecturerID = (Guid)Membership.GetUser().ProviderUserKey;
            Lecturer_Profile lecturer   = db.Lecturer_Profile.Find(lecturerID);

            if (lecturer == null)
            {
                return(null);
            }
            return(db.Enrollment.Where(e => e.Programme.faculty.Equals(lecturer.faculty)));
        }
        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>"));
                    }
                }
            }
        }
        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;
                }
            }
        }