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