Ejemplo n.º 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //test url: http://localhost:7820/SignIn.aspx?id=1&num=235346
            int rollCallID = Convert.ToInt32(Request.QueryString["id"]);
            string studentNumber = Request.QueryString["num"];

            //find roll call and check if it is active
            RollCallHandler rollCallHandler = new RollCallHandler();
            RollCall rollCall = new RollCall();

            rollCall = rollCallHandler.GetRollCallDetails(rollCallID);

            //check if auto disable exists
            if (rollCall.AutoDisable != "")
            {
                DateTime autoDisableDate = DateTime.Parse(rollCall.AutoDisable);

                if (DateTime.Compare(autoDisableDate, DateTime.Now) < 0)
                {
                    //auto disabl date reached, disable roll call
                    rollCallHandler.EndRollCall(rollCallID);
                    rollCall.Status = "disabled";
                }
            }

            if (rollCall.Status == "enabled")
            {

                //get student details
                StudentHandler studentHandler = new StudentHandler();
                Student student = new Student();
                student = studentHandler.GetStudentID(studentNumber);

                //sign in
                Student_RollCallHandler student_RollCallHandler = new Student_RollCallHandler();
                Student_RollCall student_RollCall = new Student_RollCall();

                student_RollCall.RollCallID = rollCallID;
                student_RollCall.StudentID = student.StudentID;
                student_RollCall.Status = "present";
                student_RollCall.TimeOfSignIn = DateTime.Now.ToString();

                student_RollCallHandler.AddNewRollCall(student_RollCall);

            }
            else
            {

            }
        }
        protected void btnGetReport_Click(object sender, EventArgs e)
        {
            string htmlOutput = "<thead><tr><th>Date <i class='fa fa-sort'></i></th><th>Status <i class='fa fa-sort'></i></th></tr></thead>";
            litReport.Text = "";
            //for each roll call held show status of selected student

            RollCallHandler rollCallHandler = new RollCallHandler();
            //get list of roll calls held for the module
            List<RollCall> listRollCalls = rollCallHandler.GetRollCallList(Convert.ToInt32(dlModules.SelectedValue));

            //get a students attendance for each of the found roll calls
            Student_RollCall student_RollCall = new Student_RollCall();
            Student_RollCallHandler student_RollCallHandler = new Student_RollCallHandler();
            try
            {

                foreach (RollCall r in listRollCalls)
                {
                    student_RollCall = student_RollCallHandler.GetStudentAttendance(r.RollCallID, Convert.ToInt32(dlStudents.SelectedValue));

                    try
                    {

                        litReport.Text += student_RollCall.Status + "<br/>";
                        DateTime date = Convert.ToDateTime(r.TimeOfRollCall);
                        htmlOutput += "<tr><td>" + date.ToString("MM/dd/yyyy HH:mm tt") + "</td><td>" + student_RollCall.Status + "</td></tr>\n";
                    }
                    catch (NullReferenceException)
                    {
                        litReport.Text += "Absent<br/>";
                        DateTime date = Convert.ToDateTime(r.TimeOfRollCall);
                        htmlOutput += "<tr><td>" + date.ToString("MM/dd/yyyy HH:mm tt") + "</td><td>absent</td></tr>\n";
                    }
                }

                Student student = new Student();
                StudentHandler studentHandler = new StudentHandler();
            }
            catch
            {
                htmlOutput = "<div class='alert alert-danger'>No records found</div>";
            }
            litReport.Text = htmlOutput;
        }
        protected void btnGetReport_Click(object sender, EventArgs e)
        {
            string chartHead = "<script>new Morris.Line({element: 'mychart',;data: [";
            string chartFoot = "],xkey: 'date',ykeys: ['value'],labels: ['Percentage']});</script>";
            //{ date: '1990', value: 20 },
            string chartBody = "";

            //create report showing the average attendance for a module per roll call
            Student_RollCallHandler student_RollCallHandler = new Student_RollCallHandler();

            List<string> result = student_RollCallHandler.GetModuleAttendanceList(Convert.ToInt32(dlModules.SelectedValue));

            int count = 0;
            int totalStudents = 0;
            //format of string returned is:
            //rollCallID rollCallDate totalModuleStudents totalSignedInStudents
            try
            {

                litReport.Text = "";
                string date = "";
                double attending = 0;

                foreach (String s in result)
                {
                    count++;

                    if (count < 4)
                    {
                        //litReport.Text += s + "&nbsp"; display data
                        if (count == 2)
                        {
                            //{ date: '1990', value: 20 },
                            date = s;
                            date = date.Substring(0, 10);
                            chartBody += "{ date: '" + date + ", ";
                        }
                        if (count == 3)
                        {
                            totalStudents = Convert.ToInt32(s);
                        }
                    }
                    else
                    {
                        //litReport.Text += s + "</br>"; display data
                        count = 0;
                        double attended;
                        if (Convert.ToInt32(s) == 0)
                        {
                            attended = 0;
                        }
                        else
                        {
                            attended = totalStudents / Convert.ToInt32(s);
                        }
                        attending = Convert.ToDouble(s) / Convert.ToDouble(totalStudents);
                        attending *= 100;
                        chartBody += "value: " + Math.Round(attended) + "},";

                        FillGraph(date, attending);
                    }
                }

                litChart.Text = chartHead + chartBody + chartFoot;
            }
            catch (NullReferenceException)
            {
                litReport.Text = "<div class='alert alert-danger'>No records found</div>";
            }
        }
        protected void btnGetReport_Click(object sender, EventArgs e)
        {
            //when a module us selected display all students linked to that module, and their attendance for each roll call
            //data needed: student name, status

            //get studentID, firstname, surname using ModuleID
            //for each student use studentID to find roll call status

            StudentHandler studentHandler = new StudentHandler();
            RollCallHandler rollCallHandler = new RollCallHandler();
            Student_RollCallHandler student_RollCallHandler = new Student_RollCallHandler();
            Student_RollCall student_RollCall = new Student_RollCall();

            List<Student> listStudents = studentHandler.GetStudentList(Convert.ToInt32(dlModules.SelectedValue));

            litReport.Text = "";
            string htmlOutput = "<thead><tr><th>Student <i class='fa fa-sort'></i></th><th>Percent <i class='fa fa-sort'></i></th></tr></thead>";

            try
            {
                //get list of roll calls IDs held for a module
                List<RollCall> listRollCalls = rollCallHandler.GetRollCallList(Convert.ToInt32(dlModules.SelectedValue));

                int countRollCall = 0;
                int countStudent = 0;
                string[,] studentData = new string[listStudents.Count, 2];

                string[] student = new string[listStudents.Count] ;
                int[] attending = new int[listRollCalls.Count];
                int temp = 0;

                for (int i = 0; i < listStudents.Count; i++)
                {
                    studentData[i, 1] = "0";
                }

                foreach (Student s in listStudents)
                {
                    student[countStudent] = s.FirstName + " " + s.Surname;
                    studentData[countStudent, 0] = s.FirstName + " " + s.Surname + " " + s.StudentNumber;

                    //now get this students attendance records, one for each roll call, if no record exists assume absent
                    foreach (RollCall r in listRollCalls)
                    {
                        student_RollCall = student_RollCallHandler.GetStudentAttendance(r.RollCallID, s.StudentID);
                        try
                        {
                            litReport.Text += s.FirstName + "&nbsp" + student_RollCall.Status;

                            attending[countRollCall] += 1;

                            temp = Convert.ToInt32(studentData[countStudent, 1]);
                            temp += 1;
                            studentData[countStudent, 1] = temp.ToString();
                        }
                        catch (NullReferenceException)
                        {
                            litReport.Text += s.FirstName + "&nbsp" + "absent";

                            attending[countRollCall] += 0;

                            temp = Convert.ToInt32(studentData[countStudent, 1]);
                            temp += 0;
                            studentData[countStudent, 1] = temp.ToString();
                        }
                        countRollCall++;
                    }

                    countStudent++;
                    countRollCall = 0;

                    litReport.Text += "</br></br>";

                }

                litReport.Text = "";

                for (int i = 0; i < listStudents.Count; i++)
                {
                    studentData[i, 1] = (Convert.ToDouble(studentData[i, 1]) / listRollCalls.Count * 100).ToString();
                    studentData[i, 1] = Math.Round(Convert.ToDouble(studentData[i, 1]), 0).ToString();

                    htmlOutput += "<tr><td>" + studentData[i, 0] + "</td><td>" + studentData[i, 1] + "</td></tr>\n";
                    litReport.Text += studentData[i, 0] + " " + studentData[i, 1] + "</br>";
                }
            }
            catch
            {
                htmlOutput = "<div class='alert alert-danger'>No records found</div>";
            }

            litReport.Text = htmlOutput;
        }