示例#1
0
        //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);
        }
    }