Пример #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();
            }
        }
        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);
            }
        }
        // Method to send email to student
        private void sendEmailToStudent(Student_Assessment studAssess)
        {
            // Create an SMTP client server object to connect to hotmail server
            SmtpClient smtpServer = new SmtpClient("smtp.live.com");

            smtpServer.Port = 587;
            smtpServer.UseDefaultCredentials = false;
            smtpServer.Credentials           = new System.Net.NetworkCredential("*****@*****.**", "%TGB6yhn^YHN5tgb");
            smtpServer.EnableSsl             = true;

            // Create new MailMessage object to send an email
            MailMessage mailMessage = new MailMessage();

            mailMessage.IsBodyHtml = true;
            mailMessage.Subject    = $"Score for assessment {studAssess.Assessment.assessName}";
            mailMessage.From       = new MailAddress("*****@*****.**");
            mailMessage.To.Add(studAssess.aspnet_Users.aspnet_Membership.Email);
            mailMessage.Body = $"Your assessment for \"{studAssess.Assessment.Subject1.subjectName} - {studAssess.Assessment.assessName}\" has just been graded!<br/>Your score is {studAssess.score} ({studAssess.getGrade()}).";

            // Send the email
            smtpServer.Send(mailMessage);
        }
        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;
        }
Пример #5
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");
            }
        }
        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>"));
                }
            }
        }