public ActionResult Add()
 {
     int school_id = SessionHandler.GetSchoolID();
     ParentDetails _pd = new ParentDetails();
     ClassDetails _cd = new ClassDetails();
     ViewBag.parents = _pd.GetAll(school_id);
     ViewBag.classes = _cd.GetAll(school_id);
     return View();
 }
        public ActionResult ExamMarks(int class_id = 0, int subject_id = 0)
        {
            int school_id = SessionHandler.GetSchoolID();
            var exam_types = _ed.GetAll(school_id).ToList();

            if (school_id != 0 && class_id != 0 && subject_id != 0)
            {
                var rests = _ed.FindOnCondition(school_id,class_id, subject_id);

                if (rests.ToList().Count == 0 || exam_types.Count != rests.ToList().Count)
                {

                    foreach (var exam in exam_types)
                    {
                        if (rests.ToList().Count == 0)
                        {
                            _ed.InsertSubjectExam(school_id, subject_id, exam.exam_id, class_id, 1);
                        }
                        else {
                            foreach (var se in rests)
                            {
                                if (se.exam_id == exam.exam_id && se.subject_id == subject_id && class_id == se.class_id)
                                    continue;
                                _ed.InsertSubjectExam(school_id, subject_id, exam.exam_id, class_id, 1);
                            }
                        }
                    }
                }

                ViewBag.class_id = class_id;
                ViewBag.subject_id = subject_id;
                SubjectDetails sbs = new SubjectDetails();
                ClassDetails clss = new ClassDetails();

                ViewBag.subjects = sbs.GetAll(school_id).ToList().ToJSON();
                ViewBag.classes = clss.GetAll(school_id);

                var rest = _ed.FindOnCondition(school_id, class_id, subject_id);

                return View(rest);
            }
            else
            {
                SubjectDetails sbs = new SubjectDetails();
                ClassDetails clss = new ClassDetails();

                ViewBag.subjects = sbs.GetAll(school_id).ToList().ToJSON();
                ViewBag.classes = clss.GetAll(school_id);

                return View();
            }
        }
        //
        // GET: /Parent/
        public ActionResult Index()
        {
            if (Session[Configuration.SESSION_USER_ID] == null)
            {
                return RedirectToAction("Index", "Login");
            }

            int school_id = SchoolID();

            TeacherDetail _td = new TeacherDetail();
            ViewBag.teachers_list = _td.GetAll(school_id);
            ClassDetails _cd = new ClassDetails();
            ViewBag.classes_list = _cd.GetAll(school_id);

            var result = _sd.GetAll(school_id).ToList();
            return View(result);
        }
        public ActionResult StudentFee(int class_id=0,int exam_id = 0)
        {
            if (Session[Configuration.SESSION_USER_ID] == null)
            {
                return RedirectToAction("Index", "Login");
            }
            int school_id = SessionHandler.GetSchoolID();
            ExamDetails _ed = new ExamDetails();
            ClassDetails _cd = new ClassDetails();
            ViewBag.exams = _ed.GetAll(school_id).ToList();
            ViewBag.classes = _cd.GetAll(school_id).ToList();

            if (school_id != 0 && class_id != 0 && exam_id != 0)
            {
                StudentDetails _sd = new StudentDetails();

                var stds = _sd.GetAll(school_id,class_id);

                //if (stds.ToList().Count == 0 || exam_types.Count != rests.ToList().Count)
                //{

                //    foreach (var exam in exam_types)
                //    {
                //        if (rests.ToList().Count == 0)
                //        {
                //            _ed.InsertSubjectExam(school_id, subject_id, exam.exam_id, class_id, 1);
                //        }
                //        else
                //        {
                //            foreach (var se in rests)
                //            {
                //                if (se.exam_id == exam.exam_id && se.subject_id == subject_id && class_id == se.class_id)
                //                    continue;
                //                _ed.InsertSubjectExam(school_id, subject_id, exam.exam_id, class_id, 1);
                //            }
                //        }
                //    }
                //}

            }
            return View();
        }
        public ActionResult Edit(int id, StudentModelView student)
        {
            int school_id = SessionHandler.GetUserID();
            var result = _sd.FindSingle(id, school_id);

            ParentDetails _pd = new ParentDetails();
            ClassDetails _cd = new ClassDetails();

            ViewBag.parents = _pd.GetAll(school_id);
            ViewBag.classes = _cd.GetAll(school_id);

            return View(result);
        }
        public ActionResult MarkClass(int class_id = 0, string date = "")
        {
            if (Session[Configuration.SESSION_USER_ID] == null)
            {
                return RedirectToAction("Index", "Login");
            }

            ClassDetails _cd = new ClassDetails();
            int school_id = SessionHandler.GetSchoolID();
            ViewBag.class_id = class_id;
            ViewBag.date = date;

            ViewBag.classes = _cd.GetAll(school_id);
            ViewBag.Days = 0;

            if (class_id != 0)
            {
                var result = _ad.GetAll(school_id, class_id).ToList();
                var _sd = new StudentDetails();
                var stds = _sd.GetAll(school_id, class_id);

                var adResult = _ad.GetAll(school_id, class_id, date).ToList();

                //int daysInMonth = this.GetDaysInMonth(date);
                ViewBag.Days = 1;

                var day = date.GetDayOfMonth();
                List<StudentOneDay> attendance = new List<StudentOneDay>();
                foreach (var std in stds)
                {
                    StudentOneDay stdAttnd = new StudentOneDay() { student_name = std.first_name + " " + std.last_name, student_id = std.user_id, status = -1 };
                    attendance.Add(stdAttnd);

                    var isExsited = false;
                    foreach (var adr in adResult)
                    {
                        if (std.user_id == adr.student_id)
                        {
                            isExsited = true;
                        }
                    }
                    if (!isExsited)
                    {
                        Attendance atd = new Attendance() { student_id = std.user_id, school_id = SessionHandler.GetSchoolID(), status = -1, class_id = class_id, date = date, updated_by = SessionHandler.GetUserID() };
                        _ad.Insert(atd);
                    }
                }
                return View(attendance);
            }
            return View();
        }
        public ActionResult ViewClass(int class_id = 0, string date = "")
        {
            ClassDetails _cd = new ClassDetails();
            int school_id = SessionHandler.GetSchoolID();

            ViewBag.classes = _cd.GetAll(school_id);
            ViewBag.Days = 0;

            ViewBag.class_id = class_id;
            ViewBag.date = date;

            if (class_id != 0 && date != "")
            {
                string startDate = "";
                string endDate = "";
                date.makeDateString(ref startDate, ref endDate);

                int daysInMonth = date.GetDaysInMonth();

                var result = _ad.GetAll(school_id, class_id, startDate, endDate).ToList();
                var _sd = new StudentDetails();
                var stds = _sd.GetAll(school_id, class_id);

                ViewBag.Days = daysInMonth;

                List<StudentAttendance> attendance = new List<StudentAttendance>();

                foreach (var std in stds)
                {
                    StudentAttendance stdAttnd = new StudentAttendance() { student_name = std.first_name + " " + std.last_name, student_id = std.user_id };
                    for (int x = 1; x <= daysInMonth; x++)
                    {
                        PresentStatus _ps = new PresentStatus() { dayOfMonth = x, status = -1 };

                        foreach (var atnd in result)
                        {
                            int dayInAtnd = atnd.date.GetDayOfMonth();

                            if (atnd.student_id == std.user_id && x == dayInAtnd)
                            {
                                _ps.status = atnd.status;
                                break;
                            }
                        }
                        stdAttnd.AttendanceDays.Add(_ps);
                    }
                    attendance.Add(stdAttnd);
                }
                return View(attendance);
            }
            return View();
        }
        public ActionResult StudentMarks(int class_id = 0, int subject_id = 0, int exam_id = 0)
        {
            int school_id = SessionHandler.GetSchoolID();
            int user_id = SessionHandler.GetUserID();
            SubjectDetails sbs = new SubjectDetails();
            ClassDetails clss = new ClassDetails();

            ViewBag.subjects = sbs.GetAll(school_id).ToList().ToJSON();
            ViewBag.classes = clss.GetAll(school_id);
            ViewBag.exams = _ed.GetAll(school_id).ToList();

            if (school_id != 0 && class_id != 0 && subject_id != 0 && exam_id != 0)
            {
                StudentDetails stds = new StudentDetails();

                var stnds_result = stds.GetAll(school_id, class_id).ToList();

                var rests = _ed.FindMarksOnCondition(school_id, class_id, subject_id, exam_id);

                if (rests.ToList().Count == 0 || stnds_result.Count != rests.ToList().Count)
                {

                    foreach (var std in stnds_result)
                    {
                        if (rests.ToList().Count == 0)
                        {
                            _ed.InsertSubjectMarks(school_id, subject_id, exam_id, class_id, std.user_id, user_id);
                        }
                        else
                        {
                            bool isExisted = false;
                            foreach (var se in rests)
                            {
                                if (se.exam_id == exam_id && se.subject_id == subject_id && class_id == se.class_id && se.student_id == std.user_id)
                                    isExisted = true;
                            }

                            if (!isExisted)
                            {
                                _ed.InsertSubjectMarks(school_id, subject_id, exam_id, class_id, std.user_id, user_id);
                            }
                        }
                    }
                }

                ViewBag.class_id = class_id;
                ViewBag.subject_id = subject_id;

                var rest = _ed.FindMarksOnCondition(school_id, class_id, subject_id, exam_id);

                return View(rest);
            }
            return View();
        }