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)); }