public static StudentAttendanceSummaryViewData Create(StudentAttendanceSummary attendanceSummary, GradingPeriod currentGradingPeriod, IList <GradingPeriod> gradingPeriods , IList <StudentCustomAlertDetail> customAlerts, IList <StudentHealthCondition> healthConditions, IList <StudentHealthFormInfo> healthForms) { var res = new StudentAttendanceSummaryViewData(attendanceSummary.Student, customAlerts, healthConditions, healthForms) { GradingPeriods = GradingPeriodViewData.Create(gradingPeriods) }; if (currentGradingPeriod != null) { res.CurrentGradingPeriod = GradingPeriodViewData.Create(currentGradingPeriod); } decimal posibleDailyAttendanceCount = 0, dailyLates = 0, dailyAbsents = 0, dailyPresents = 0; if (attendanceSummary.DailyAttendanceSummary != null) { posibleDailyAttendanceCount = attendanceSummary.DailyAttendanceSummary.PosibleAttendanceCount; dailyLates = attendanceSummary.DailyAttendanceSummary.Tardies ?? 0; dailyAbsents = attendanceSummary.DailyAttendanceSummary.Absences ?? 0; dailyPresents = attendanceSummary.DailyAttendanceSummary.Presents ?? 0; } res.Absences = PrepareAttendanceBox(dailyAbsents, posibleDailyAttendanceCount, attendanceSummary.ClassAttendanceSummaries, x => x.Absences, 5); res.Lates = PrepareAttendanceBox(dailyLates, posibleDailyAttendanceCount, attendanceSummary.ClassAttendanceSummaries, x => x.Tardies, 10); res.Presents = PrepareAttendanceBox(dailyPresents, posibleDailyAttendanceCount, attendanceSummary.ClassAttendanceSummaries, x => x.Presents, 0, true); return(res); }
public StudentAttendanceSummary GetStudentAttendanceSummary(int studentId, int?gradingPeriodId) { DateTime startDate, endDate; ((DemoGradingPeriodService)ServiceLocator.GradingPeriodService).GetDateRangeByGpID(gradingPeriodId, out startDate, out endDate); var syId = ServiceLocator.SchoolYearService.GetCurrentSchoolYear().Id; var student = ServiceLocator.StudentService.GetById(studentId, syId); var classes = ServiceLocator.ClassService.GetStudentClasses(syId, studentId); var sectionSummaries = GetSectionAttendanceSummary(studentId, startDate, endDate); var res = new StudentAttendanceSummary { Student = student, ClassAttendanceSummaries = new List <StudentClassAttendanceSummary>() }; foreach (var classDetailse in classes) { var sectionSummay = sectionSummaries.FirstOrDefault(x => x.SectionId == classDetailse.Id); if (sectionSummay != null) { var studentSectionSummary = sectionSummay.Students.FirstOrDefault(s => s.StudentId == studentId && s.SectionId == classDetailse.Id); if (studentSectionSummary == null) { continue; } res.ClassAttendanceSummaries.Add(StudentClassAttendanceSummary.Create(studentSectionSummary, classDetailse)); } } return(res); }
public StudentAttendanceSummary GetStudentAttendanceSummary(int studentId, int?gradingPeriodId) { var syId = ServiceLocator.SchoolYearService.GetCurrentSchoolYear().Id; var student = ServiceLocator.StudentService.GetById(studentId, syId); var stiModel = ConnectorLocator.StudentConnector.GetStudentAttendanceSummary(studentId, syId, gradingPeriodId); int?mpId = null; if (gradingPeriodId.HasValue) { var gp = ServiceLocator.GradingPeriodService.GetGradingPeriodById(gradingPeriodId.Value); mpId = gp.MarkingPeriodRef; } var classes = ServiceLocator.ClassService.GetStudentClasses(syId, studentId, mpId); var res = new StudentAttendanceSummary { Student = student }; if (stiModel != null) { if (stiModel.DailyAttendance != null) { res.DailyAttendanceSummary = StudentDailyAttendanceSummary.Create(stiModel.DailyAttendance); } if (stiModel.PeriodAttendance != null) { res.ClassAttendanceSummaries = StudentClassAttendanceSummary.Create(stiModel.PeriodAttendance.ToList(), classes); } } return(res); }
public async Task <AttendanceSummary> GetAttendanceSummary(int teacherId, GradingPeriod gradingPeriod) { var classes = ServiceLocator.ClassService.GetTeacherClasses(gradingPeriod.SchoolYearRef, teacherId, gradingPeriod.MarkingPeriodRef); if (classes.Count == 0) { return(new AttendanceSummary { ClassesDaysStat = new List <ClassDailyAttendanceSummary>(), Students = new List <StudentAttendanceSummary>() }); } var classesIds = classes.Select(x => x.Id).ToList(); var attSummarytask = ConnectorLocator.AttendanceConnector.GetSectionAttendanceSummary(classesIds, gradingPeriod.StartDate, gradingPeriod.EndDate); var students = ServiceLocator.StudentService.GetTeacherStudents(teacherId, gradingPeriod.SchoolYearRef); var sectionsAttendanceSummary = await attSummarytask; var res = new AttendanceSummary(); var dailySectionAttendances = new List <DailySectionAbsenceSummary>(); var studentAtts = new List <StudentSectionAbsenceSummary>(); var sectionStSet = new HashSet <Pair <int, int> >(); var sectionDaySet = new HashSet <Pair <int, DateTime> >(); foreach (var sectionAttendanceSummary in sectionsAttendanceSummary) { foreach (var dailySectionAtt in sectionAttendanceSummary.Days) { var pair = new Pair <int, DateTime>(dailySectionAtt.SectionId, dailySectionAtt.Date); if (!sectionDaySet.Contains(pair)) { sectionDaySet.Add(pair); dailySectionAttendances.Add(dailySectionAtt); } } foreach (var student in sectionAttendanceSummary.Students) { var pair = new Pair <int, int>(student.SectionId, student.StudentId); if (!sectionStSet.Contains(pair)) { sectionStSet.Add(pair); studentAtts.Add(student); } } } studentAtts = studentAtts.Where(x => classesIds.Contains(x.SectionId)).ToList(); res.ClassesDaysStat = ClassDailyAttendanceSummary.Create(dailySectionAttendances, classes); res.Students = StudentAttendanceSummary.Create(studentAtts, students, classes); return(res); }
public async Task <AttendanceSummary> GetAttendanceSummary(int teacherId, GradingPeriod gradingPeriod) { Trace.Assert(Context.SchoolYearId.HasValue); var classes = ServiceLocator.ClassService.GetTeacherClasses(gradingPeriod.SchoolYearRef, teacherId, gradingPeriod.MarkingPeriodRef); var classesIds = classes.Select(x => x.Id).ToList(); var students = ServiceLocator.StudentService.GetTeacherStudents(teacherId, Context.SchoolYearId.Value); var sectionsAttendanceSummary = GetSectionAttendanceSummary(classesIds, gradingPeriod.StartDate, gradingPeriod.EndDate); var res = new AttendanceSummary(); var dailySectionAttendances = new List <DailySectionAbsenceSummary>(); var studentAtts = new List <StudentSectionAbsenceSummary>(); foreach (var sectionAttendanceSummary in sectionsAttendanceSummary) { dailySectionAttendances.AddRange(sectionAttendanceSummary.Days); studentAtts.AddRange(sectionAttendanceSummary.Students); } res.ClassesDaysStat = ClassDailyAttendanceSummary.Create(dailySectionAttendances, classes); studentAtts = studentAtts.Where(x => classesIds.Contains(x.SectionId)).ToList(); res.Students = StudentAttendanceSummary.Create(studentAtts, students, classes); return(res); }
private void Init() { #region Filling AttendanceData Test Data AttendanceData = new Dictionary <int, StudentAttendance>(); var attendanceEntries = new List <AttendanceEntry>(); var attendanceEntry1 = new AttendanceEntry { StudentNo = 1, Student = "Alex", Course = "Test001 (T-1)", TermBeginDate = new DateTime(2011, 2, 16), ClassDate = new DateTime(2011, 2, 16), ClassStartTime = new DateTime(1899, 12, 30, 5, 30, 0), ClassEndTime = new DateTime(1899, 12, 30, 9, 30, 0), ClassHours = "4", Complete = "Y", AttendanceHours = 4, CourseDescription = "This is test 1 course.", AttendanceCode = "P", AttendedAdj = 4, ScheduledAdj = 4 }; var attendanceEntry2 = new AttendanceEntry { StudentNo = 1, Student = "Alex", Course = "Test001 (T-1)", TermBeginDate = new DateTime(2011, 2, 16), ClassDate = new DateTime(2011, 2, 17), ClassStartTime = new DateTime(1899, 12, 30, 5, 30, 0), ClassEndTime = new DateTime(1899, 12, 30, 9, 30, 0), ClassHours = "4", Complete = "Y", AttendanceHours = 4, CourseDescription = "This is test 1 course.", AttendanceCode = "P", AttendedAdj = 4, ScheduledAdj = 4 }; var attendanceEntry3 = new AttendanceEntry { StudentNo = 1, Student = "Alex", Course = "Test002 (T-2)", TermBeginDate = new DateTime(2011, 2, 16), ClassDate = new DateTime(2011, 3, 10), ClassStartTime = null, ClassEndTime = null, ClassHours = "0", Complete = "Y", AttendanceHours = 3, CourseDescription = "This is test 3 course.", AttendanceCode = "P", AttendedAdj = 3, ScheduledAdj = 3 }; attendanceEntries.Add(attendanceEntry1); attendanceEntries.Add(attendanceEntry2); attendanceEntries.Add(attendanceEntry3); var studentAttendance = new StudentAttendance(attendanceEntries); AttendanceData.Add(1, studentAttendance); attendanceEntry1 = new AttendanceEntry { StudentNo = 2, Student = "Ben", Course = "Test011 (T-11)", TermBeginDate = new DateTime(2011, 3, 8), ClassDate = new DateTime(2011, 3, 8), ClassStartTime = new DateTime(1899, 12, 30, 5, 30, 0), ClassEndTime = new DateTime(1899, 12, 30, 9, 30, 0), ClassHours = "4", Complete = "Y", AttendanceHours = 4, CourseDescription = "This is a test 11 course.", AttendanceCode = "P", AttendedAdj = 4, ScheduledAdj = 4 }; attendanceEntry2 = new AttendanceEntry { StudentNo = 2, Student = "Ben", Course = "Test012 (T-12)", TermBeginDate = new DateTime(2011, 3, 8), ClassDate = new DateTime(2011, 3, 9), ClassStartTime = new DateTime(1899, 12, 30, 5, 30, 0), ClassEndTime = new DateTime(1899, 12, 30, 9, 30, 0), ClassHours = "4", Complete = "Y", AttendanceHours = 4, CourseDescription = "This is a test 2 course.", AttendanceCode = "P", AttendedAdj = 4, ScheduledAdj = 4 }; attendanceEntry3 = new AttendanceEntry { StudentNo = 2, Student = "Ben", Course = "Test013 (T-13)", TermBeginDate = new DateTime(2011, 3, 8), ClassDate = new DateTime(2011, 3, 22), ClassStartTime = null, ClassEndTime = null, ClassHours = "4", Complete = "Y", AttendanceHours = 4, CourseDescription = "This is a test 13 course.", AttendanceCode = "P", AttendedAdj = 4, ScheduledAdj = 4 }; attendanceEntries = new List <AttendanceEntry> { attendanceEntry1, attendanceEntry2, attendanceEntry3 }; studentAttendance = new StudentAttendance(attendanceEntries); AttendanceData.Add(2, studentAttendance); #endregion SummaryData = new Dictionary <int, StudentAttendanceSummary>(); var attendanceSummary1 = new AttendanceSummary(); attendanceSummary1.StudentNo = 1; attendanceSummary1.Student = "Alex"; attendanceSummary1.Course = "Test001 (T-1)"; attendanceSummary1.CourseDescription = "This is Test 1 Course"; attendanceSummary1.TermBeginDate = new DateTime(2011, 2, 16); attendanceSummary1.ScheduledTotal = 8; attendanceSummary1.ScheduledToDate = 8; attendanceSummary1.AttendedToDate = 8; attendanceSummary1.AttendedPercentage = ((attendanceSummary1.AttendedToDate * 100) / attendanceSummary1.ScheduledToDate); var attendanceSummary2 = new AttendanceSummary(); attendanceSummary2.StudentNo = 1; attendanceSummary2.Student = "Alex"; attendanceSummary2.Course = "Test002 (T-2)"; attendanceSummary2.CourseDescription = "This is Test 2 Course"; attendanceSummary2.TermBeginDate = new DateTime(2011, 2, 16); attendanceSummary2.ScheduledTotal = 3; attendanceSummary2.ScheduledToDate = 3; attendanceSummary2.AttendedToDate = 3; attendanceSummary2.AttendedPercentage = ((attendanceSummary2.AttendedToDate * 100) / attendanceSummary2.ScheduledToDate); var summary = new StudentAttendanceSummary(new[] { attendanceSummary1, attendanceSummary2 }); SummaryData.Add(1, summary); attendanceSummary1 = new AttendanceSummary(); attendanceSummary1.StudentNo = 2; attendanceSummary1.Student = "Ben"; attendanceSummary1.Course = "Test011 (T-11)"; attendanceSummary1.CourseDescription = "This is Test 11 Course"; attendanceSummary1.TermBeginDate = new DateTime(2011, 2, 16); attendanceSummary1.ScheduledTotal = 8; attendanceSummary1.ScheduledToDate = 8; attendanceSummary1.AttendedToDate = 8; attendanceSummary1.AttendedPercentage = ((attendanceSummary1.AttendedToDate * 100) / attendanceSummary1.ScheduledToDate); attendanceSummary2 = new AttendanceSummary(); attendanceSummary2.StudentNo = 2; attendanceSummary2.Student = "Ben"; attendanceSummary2.Course = "Test012 (T-12)"; attendanceSummary2.CourseDescription = "This is Test 12 Course"; attendanceSummary2.TermBeginDate = new DateTime(2011, 2, 16); attendanceSummary2.ScheduledTotal = 12; attendanceSummary2.ScheduledToDate = 12; attendanceSummary2.AttendedToDate = 12; attendanceSummary2.AttendedPercentage = ((attendanceSummary2.AttendedToDate * 100) / attendanceSummary2.ScheduledToDate); summary = new StudentAttendanceSummary(new[] { attendanceSummary1, attendanceSummary2 }); SummaryData.Add(2, summary); }