public void Attendance(List <Students> stu)
        {
            var dbTransection = db.Database.BeginTransaction();

            try
            {
                foreach (var item in stu)
                {
                    AspNetAttendance attendance = new AspNetAttendance();
                    attendance.StudentID = item.Id;
                    attendance.SubjectID = item.SubjectID;
                    attendance.Status    = item.Status;
                    attendance.Reason    = item.Reason;
                    attendance.Date      = DateTime.Now.Date;
                    var check = db.AspNetAttendances.Any(x => x.StudentID == attendance.StudentID && x.SubjectID == attendance.SubjectID && x.Date == attendance.Date);
                    if (check)
                    {
                        AspNetAttendance attend = (from x in db.AspNetAttendances
                                                   where x.StudentID == attendance.StudentID && x.SubjectID == attendance.SubjectID && x.Date == attendance.Date
                                                   select x).First();
                        attend.Status = attendance.Status;
                        attend.Reason = attendance.Reason;
                    }
                    else
                    {
                        db.AspNetAttendances.Add(attendance);
                    }
                    db.SaveChanges();
                }
                dbTransection.Commit();
            }
            catch (Exception) { dbTransection.Dispose(); }
        }
        public void AttendancefromFile(AspNetAttendance aspNetAttendance)
        {
            var    dbTransection = db.Database.BeginTransaction();
            String ErrorID       = null;

            try
            {
                HttpPostedFileBase        file               = Request.Files["Attendance"];
                AspNetAttendance          TodayAttendance    = db.AspNetAttendances.Where(x => x.SubjectID == aspNetAttendance.SubjectID && x.Date == aspNetAttendance.Date).FirstOrDefault();
                List <student_attendance> Student_Attendance = new List <student_attendance>();
                using (var package = new ExcelPackage(file.InputStream))
                {
                    var currentSheet = package.Workbook.Worksheets;
                    var workSheet    = currentSheet.First();
                    var noOfCol      = workSheet.Dimension.End.Column;
                    var noOfRow      = workSheet.Dimension.End.Row;
                    for (int rowIterator = 3; rowIterator <= noOfRow; rowIterator++)
                    {
                        student_attendance stu_atten = new student_attendance();
                        string             username;
                        try
                        {
                            username = workSheet.Cells[rowIterator, 1].Value.ToString();
                        }
                        catch (Exception)
                        {
                            username = "";
                        }
                        try
                        {
                            stu_atten.Status = workSheet.Cells[rowIterator, 3].Value.ToString();
                        }
                        catch (Exception)
                        {
                            stu_atten.Status = "Present";
                        }
                        try
                        {
                            stu_atten.Reason = workSheet.Cells[rowIterator, 4].Value.ToString();
                        }
                        catch (Exception)
                        {
                            stu_atten.Reason = "";
                        }

                        stu_atten.Id = db.AspNetUsers.Where(x => x.UserName == username).Select(x => x.Id).FirstOrDefault();

                        Student_Attendance.Add(stu_atten);
                    }
                }

                if (TodayAttendance == null)
                {
                    AspNetAttendance Attendance = new AspNetAttendance();
                    Attendance.Date      = aspNetAttendance.Date;
                    Attendance.SubjectID = aspNetAttendance.SubjectID;
                    db.AspNetAttendances.Add(Attendance);
                    db.SaveChanges();
                    int attendanceID = db.AspNetAttendances.Max(x => x.Id);

                    foreach (var studentattendance in Student_Attendance)
                    {
                        AspNetStudent_Attendance stu_attend = new AspNetStudent_Attendance();
                        stu_attend.StudentID    = studentattendance.Id;
                        stu_attend.Status       = studentattendance.Status;
                        stu_attend.Reason       = studentattendance.Reason;
                        stu_attend.AttendanceID = attendanceID;
                        db.AspNetStudent_Attendance.Add(stu_attend);
                    }
                }
                else
                {
                    foreach (var student_attendance in Student_Attendance)
                    {
                        AspNetStudent_Attendance stu_attend = db.AspNetStudent_Attendance.Where(x => x.AttendanceID == TodayAttendance.Id && x.StudentID == student_attendance.Id).FirstOrDefault();
                        if (stu_attend != null)
                        {
                            stu_attend.Status = student_attendance.Status;
                            stu_attend.Reason = student_attendance.Reason;
                        }
                    }
                }


                db.SaveChanges();
                dbTransection.Commit();
            }
            catch (Exception)
            {
                dbTransection.Dispose();
                ViewBag.Error = "Error Adding ID: " + ErrorID;
            }
        }
        public JsonResult Attendance(attendance attendances)
        {
            var    dbTransection = db.Database.BeginTransaction();
            String ErrorID       = null;

            try
            {
                char check = attendances.SubjectID[0];
                if (check != '0')
                {
                    var date      = DateTime.Now.Date;
                    int subjectID = Convert.ToInt32(attendances.SubjectID);
                    AspNetAttendance TodayAttendance = db.AspNetAttendances.Where(x => x.SubjectID == subjectID && x.Date == date).FirstOrDefault();
                    if (TodayAttendance == null)
                    {
                        AspNetAttendance Attendance = new AspNetAttendance();
                        Attendance.Date      = DateTime.Now.Date;
                        Attendance.SubjectID = subjectID;
                        db.AspNetAttendances.Add(Attendance);
                        db.SaveChanges();
                        int attendanceID = db.AspNetAttendances.Max(x => x.Id);
                        foreach (var student_attendance in attendances.studentAttendance)
                        {
                            AspNetStudent_Attendance stu_attend = new AspNetStudent_Attendance();
                            stu_attend.StudentID    = student_attendance.Id;
                            stu_attend.Status       = student_attendance.Status;
                            stu_attend.Reason       = student_attendance.Reason;
                            stu_attend.AttendanceID = attendanceID;
                            db.AspNetStudent_Attendance.Add(stu_attend);
                        }
                    }
                    else
                    {
                        foreach (var student_attendance in attendances.studentAttendance)
                        {
                            AspNetStudent_Attendance stu_attend = db.AspNetStudent_Attendance.Where(x => x.AttendanceID == TodayAttendance.Id && x.StudentID == student_attendance.Id).FirstOrDefault();
                            if (stu_attend != null)
                            {
                                stu_attend.Status = student_attendance.Status;
                                stu_attend.Reason = student_attendance.Reason;
                            }
                        }
                    }
                }
                else // Second Phase
                {
                    var date    = DateTime.Now.Date;
                    int ClassID = Convert.ToInt32(attendances.SubjectID);
                    var sub     = db.AspNetSubjects.Where(x => x.ClassID == ClassID).Select(x => x.Id).ToList();
                    AspNetAttendance TodayAttendance = db.AspNetAttendances.Where(x => x.Date == date && sub.Contains(x.SubjectID)).FirstOrDefault();
                    if (TodayAttendance == null)
                    {
                        string Class = attendances.SubjectID;

                        Class = Class.Remove(0, 1);

                        int ClassId = Convert.ToInt32(Class);

                        var subject = (from subjects in db.AspNetSubjects
                                       orderby subjects.Id descending
                                       where subjects.ClassID == ClassId
                                       select new { subjects.Id, subjects.SubjectName }).ToList();


                        foreach (var item in subject)
                        {
                            AspNetAttendance Attendance = new AspNetAttendance();
                            Attendance.Date      = DateTime.Now.Date;
                            Attendance.SubjectID = item.Id;
                            db.AspNetAttendances.Add(Attendance);
                            db.SaveChanges();
                            int attendanceID = db.AspNetAttendances.Max(x => x.Id);
                            foreach (var student_attendance in attendances.studentAttendance)
                            {
                                AspNetStudent_Attendance stu_attend = new AspNetStudent_Attendance();
                                stu_attend.StudentID    = student_attendance.Id;
                                stu_attend.Status       = student_attendance.Status;
                                stu_attend.Reason       = student_attendance.Reason;
                                stu_attend.AttendanceID = attendanceID;
                                db.AspNetStudent_Attendance.Add(stu_attend);
                            }
                        }
                    }
                    else
                    {
                        foreach (var student_attendance in attendances.studentAttendance)
                        {
                            AspNetStudent_Attendance stu_attend = db.AspNetStudent_Attendance.Where(x => x.AttendanceID == TodayAttendance.Id && x.StudentID == student_attendance.Id).FirstOrDefault();
                            if (stu_attend != null)
                            {
                                stu_attend.Status = student_attendance.Status;
                                stu_attend.Reason = student_attendance.Reason;
                            }
                        }
                    }
                }
                db.SaveChanges();
                dbTransection.Commit();
            }
            catch (Exception)
            {
                dbTransection.Dispose();
                ViewBag.Error = "Error Adding ID: " + ErrorID;
            }

            return(Json("Saved", JsonRequestBehavior.AllowGet));
        }