protected override void OnLoad(EventArgs e) { RockContext rockContext = new RockContext(); AttendanceService attendanceService = new AttendanceService(rockContext); var today = Rock.RockDateTime.Today; var tomorrow = today.AddDays(1); var attendances = attendanceService.Queryable().Where(a => a.StartDateTime > Rock.RockDateTime.Today && a.StartDateTime < tomorrow && a.EndDateTime == null) .GroupBy(a => a.LocationId); foreach (var grouping in attendances) { var cache = CheckInCountCache.GetByLocation(grouping.Key ?? 0); var cachecount = cache.SelectMany(c => c.PersonIds).Count(); var attendanceCount = grouping.Count(); var text = string.Format("<br> LocationId: {0} - Cache:{1}, Actual: {2}", grouping.Key, cachecount, attendanceCount); if (cachecount != attendanceCount) { text = "<b>" + text + "</b>"; } phOutput.Controls.Add(new Literal() { Text = text }); if (cachecount != attendanceCount) { var cachePersonIds = cache.SelectMany(c => c.PersonIds).ToList(); foreach (var actualAttendance in grouping) { if (!cachePersonIds.Contains(actualAttendance.PersonAlias.PersonId)) { phOutput.Controls.Add(new Literal { Text = string.Format("<br>--- Actual: Group: {0}, Location: {1}, Person {2 }", actualAttendance.Group != null ? actualAttendance.Group.Name : "None", actualAttendance.Location != null ? actualAttendance.Location.Name : "None", actualAttendance.PersonAlias.PersonId) } ); } } foreach (var cacheAttendance in grouping) { if (!grouping.Select(a => a.PersonAlias.PersonId).Contains(cacheAttendance.PersonAlias.PersonId)) { phOutput.Controls.Add(new Literal { Text = string.Format("<br>--- Cache: Group: {0}, Location: {1}, Person {2}", cacheAttendance.Group != null ? cacheAttendance.Group.Name : "None", cacheAttendance.Location != null ? cacheAttendance.Location.Name : "None", cacheAttendance.PersonAlias.PersonId) } ); } } } } }
private bool AreChildrenCheckedIn(int locationId) { var lglsc = CheckInCountCache.GetByLocation(locationId); var count = lglsc.Where(glsc => !VolunteerGroupIds.Contains(glsc.GroupId) && glsc.GroupId != 0) .Select(glsc => glsc.InRoomPersonIds.Count()) .Sum(); return(count >= 1); }
private int NumberOfVolunteersCheckedIn(int locationId) { var lglsc = CheckInCountCache.GetByLocation(locationId); return(lglsc .Where(glsc => VolunteerGroupIds.Contains(glsc.GroupId) || glsc.GroupId == 0) .SelectMany(glsc => glsc.InRoomPersonIds) .Distinct() .Count()); }