private void RemoveOldAttendanceEvents(Section section, DateTime date)
        {
            var existingAttendanceEvents = _attendanceRepository.GetSectionAttendanceEventsFor(section, date);

            if (!existingAttendanceEvents.IsNullOrEmpty())
            {
                foreach (var attendanceEvent in existingAttendanceEvents.Where(attendanceEvent => IsTardyOrUnexcused
                    (attendanceEvent.AttendanceEventCategoryDescriptorId)))
                {
                    DecrementFlagCount(attendanceEvent.Student);
                }

                _attendanceRepository.Delete(existingAttendanceEvents);
            }
        }
        public List<StudentSectionAttendanceEvent> GetSectionAttendanceEventsFor(Section section, DateTime dateTime)
        {
            return DbContext.Set<StudentSectionAttendanceEvent>()
                .Where(ssae =>
                    ssae.EventDate == dateTime
                    && ssae.SchoolId == section.SchoolId
                    && ssae.ClassPeriodName == section.ClassPeriodName
                    && ssae.ClassroomIdentificationCode == section.ClassroomIdentificationCode
                    && ssae.LocalCourseCode == section.LocalCourseCode
                    && ssae.TermTypeId == section.TermTypeId
                    && ssae.SchoolYear == section.SchoolYear
                )
                .Include(ssae => ssae.Student)
                .Include(ssae => ssae.Student.AttendanceFlags)
                .ToList();

        }
 public void RecordAttendanceFor(Section section, DateTime date, IEnumerable<StudentSectionAttendanceEvent> newAttendanceEvents)
 {
     RemoveOldAttendanceEvents(section, date);
     AddNewAttendanceEvents(newAttendanceEvents);
 }