//TODO: add this to as api methods later /*public ActionResult ClassListNew(DateTime? date, int classId) * { * date = (date ?? SchoolLocator.Context.NowSchoolYearTime).Date; * var attendance = SchoolLocator.AttendanceService.GetClassAttendance(date.Value, classId); * if (attendance != null) * { * IList<AttendanceReason> attendanceReason = SchoolLocator.AttendanceReasonService.List(); * var res = ClassAttendanceViewData.Create(attendance, attendanceReason); * res.StudentAttendances = res.StudentAttendances.OrderBy(x => x.Student.LastName).ToList(); * return Json(res); * } * return Json(ClassAttendanceViewData.Create(classId, date.Value)); * } */ private IList <StudentClassAttendanceOldViewData> ClassAttendanceList(DateTime date, int classId) { var listClassAttendance = new List <StudentClassAttendanceOldViewData>(); var attendance = SchoolLocator.AttendanceService.GetClassAttendance(date, classId); if (attendance != null) { IList <AttendanceReason> attendanceReason = SchoolLocator.AttendanceReasonService.List(); listClassAttendance = StudentClassAttendanceOldViewData.Create(attendance, attendanceReason).ToList(); listClassAttendance = listClassAttendance.OrderBy(x => x.Student.LastName).ThenBy(x => x.Student.FirstName).ToList(); } return(listClassAttendance); }
public static AttendanceSeatingChartViewData Create(SeatingChartInfo seatingChart , IList <StudentClassAttendanceOldViewData> classAttendance, IList <Student> students) { var res = new AttendanceSeatingChartViewData { Columns = seatingChart.Columns, Rows = seatingChart.Rows, SeatingList = new List <IList <AttendanceSeatingChartItemViewData> >(), NotSeatingStudents = new List <StudentClassAttendanceOldViewData>(), IsScheduled = classAttendance.Count > 0, IsDailyAttendancePeriod = classAttendance.Count > 0 && classAttendance.First().IsDailyAttendancePeriod }; var notSeatingStudents = students.Where(x => seatingChart.SeatingList.All(y => y.All(z => x.Id != z.StudentId))).OrderBy(x => x.LastName).ThenBy(x => x.FirstName).ToList(); foreach (var notSeatingStudent in notSeatingStudents) { var classAtt = classAttendance.FirstOrDefault(x => x.Student.Id == notSeatingStudent.Id) ?? new StudentClassAttendanceOldViewData { Student = StudentViewData.Create(notSeatingStudent) }; res.NotSeatingStudents.Add(classAtt); } classAttendance.Where(x => seatingChart.SeatingList.All(y => y.All(z => x.Student.Id != z.StudentId))).ToList(); foreach (var seats in seatingChart.SeatingList) { var seatingItems = new List <AttendanceSeatingChartItemViewData>(); foreach (var seat in seats) { StudentClassAttendanceOldViewData classAtt = null; var student = students.FirstOrDefault(x => x.Id == seat.StudentId); if (student != null) { classAtt = classAttendance.FirstOrDefault(x => x.Student.Id == student.Id) ?? new StudentClassAttendanceOldViewData { Student = StudentViewData.Create(student) } } ; seatingItems.Add(AttendanceSeatingChartItemViewData.Create(seat, classAtt)); } res.SeatingList.Add(seatingItems); } return(res); } }