public async Task <IActionResult> Detail(int id)
        {
            //Establish user information
            var model = new DetailClassView();
            var user  = await GetCurrentUserAsync();

            var    dateAndTime = DateTime.Now;
            var    today       = dateAndTime.Date;
            string Title       = context.Class.Where(c => c.ClassId == id).SingleOrDefault().Title;
            string Subject     = context.Class.Where(c => c.ClassId == id).SingleOrDefault().Subject;

            //Creates needed information for LINQ Query
            List <Attendance> AttendanceList            = new List <Attendance>();
            List <Attendance> AllAttendanceEverPerClass = new List <Attendance>();
            List <Attendance> AllAttendanceEver         = await context.Attendance.ToListAsync();

            List <Student> AllStudents = await context.Student.OrderBy(s => s.LastName).ToListAsync();

            List <ClassMember> ClassMemberList = await context.ClassMember.Where(c => c.ClassId == id).OrderBy(c => c.ClassMemberId).ToListAsync();

            //Creates Changeable Attendance List in Class Detail View
            foreach (ClassMember ClassMember in ClassMemberList)
            {
                Attendance Attendance = await context.Attendance.Where(a => a.ClassMemberId == ClassMember.ClassMemberId && a.Date == today).SingleOrDefaultAsync();

                List <Attendance> AttendancePerStudentNotCurrent = await context.Attendance.Where(a => a.ClassMemberId == ClassMember.ClassMemberId).ToListAsync();

                AttendanceList.Add(Attendance);
                AllAttendanceEverPerClass.AddRange(AttendancePerStudentNotCurrent);
            }

            //Creates Top 5 Attendance List
            model.Top5Attendance    = Utility.FindTop5Students(AllStudents, ClassMemberList, AllAttendanceEver, today);
            model.Bottom5Attendance = Utility.FindBottom5(AllStudents, ClassMemberList, AllAttendanceEver, today);

            //Applies Data to View-Model
            model.Attendance                       = AttendanceList;
            model.AllAttendance                    = AllAttendanceEver;
            model.ClassMember                      = ClassMemberList;
            model.DailyAverageAttendance           = Math.Round(Utility.FindAverageAttendanceByClassForToday(AllAttendanceEver, ClassMemberList, today));
            model.ClassAverageAttendancePercentage = Math.Round(Utility.FindAverageAttendanceByClass(AllAttendanceEver, ClassMemberList, today));
            model.AverageAttendancePercentage      = Math.Round(Utility.FindAverageAttendanceBySchool(AllAttendanceEver, today));
            model.Student     = AllStudents;
            model.Title       = Title;
            model.ClassId     = id;
            model.Subject     = Subject;
            model.DesiredDate = today;

            //Returns View Model with needed information to View
            return(View(model));
        }
        public async Task <IActionResult> Update(int id, int dayAway)
        {
            var model = new DetailClassView();
            var user  = await GetCurrentUserAsync();

            var dateAndTime = DateTime.Now.AddDays(dayAway);
            var DesiredDate = dateAndTime.Date;

            if (Convert.ToString(DesiredDate.DayOfWeek) == "Saturday" || Convert.ToString(DesiredDate.DayOfWeek) == "Sunday")
            {
                if (dayAway > 0)
                {
                    dayAway++;
                    return(RedirectToAction("Update", new RouteValueDictionary(
                                                new { controller = "Class", action = "Update", Id = id, dayAway = dayAway })));
                }
            }
            string            Title                     = context.Class.Where(c => c.ClassId == id).SingleOrDefault().Title;
            string            Subject                   = context.Class.Where(c => c.ClassId == id).SingleOrDefault().Subject;
            List <Attendance> AttendanceList            = new List <Attendance>();
            List <Attendance> AllAttendanceEverPerClass = new List <Attendance>();
            List <Attendance> AllAttendanceEver         = await context.Attendance.ToListAsync();

            List <Student> AllStudents = await context.Student.ToListAsync();

            List <ClassMember> ClassMemberList = await context.ClassMember.Where(c => c.ClassId == id).ToListAsync();

            foreach (ClassMember ClassMember in ClassMemberList)
            {
                Attendance Attendance = await context.Attendance.Where(a => a.ClassMemberId == ClassMember.ClassMemberId && a.Date == DesiredDate).SingleOrDefaultAsync();

                if (Attendance == null)
                {
                    Attendance = new Attendance {
                        ClassMemberId = ClassMember.ClassMemberId, CurrentlyAbsent = false, Date = DesiredDate
                    };
                    context.Add(Attendance);
                    await context.SaveChangesAsync();
                }
                List <Attendance> AttendancePerStudentNotCurrent = await context.Attendance.Where(a => a.ClassMemberId == ClassMember.ClassMemberId).ToListAsync();

                AttendanceList.Add(Attendance);
                AllAttendanceEverPerClass.AddRange(AttendancePerStudentNotCurrent);
            }

            model.NewDayDifferenceFromToday      = dayAway + 1;
            model.PreviousDayDifferenceFromToday = dayAway - 1;
            model.Attendance  = AttendanceList;
            model.ClassMember = ClassMemberList;
            model.AverageAttendancePercentage = 100;
            model.Student     = AllStudents;
            model.Title       = Title;
            model.ClassId     = id;
            model.Subject     = Subject;
            model.DesiredDate = DesiredDate;

            if (dayAway == 0)
            {
                return(RedirectToAction("Detail", new RouteValueDictionary(
                                            new { controller = "Class", action = "Detail", Id = id })));
            }

            return(View(model));
        }