コード例 #1
0
        private void PopulateGroups(Dictionary <string, string> userPreferences = null)
        {
            string groupTypeTemplateGuid = this.GetAttributeValue("GroupTypeTemplate");

            if (!String.IsNullOrEmpty(groupTypeTemplateGuid))
            {
                var groupType = new GroupTypeService(new RockContext()).Get(groupTypeTemplateGuid.AsGuid());
                var groups    = new ChildCheckInGroupGenerator().Get(new List <GroupType> {
                    groupType
                });
                ddlGroups.Items.Clear();
                //Find groups with schedules which folks can attend
                foreach (var group in groups.Where(g => g.GroupLocations.Any(l => l.Schedules.Count > 0)))
                {
                    var listItem = new ListItem();
                    listItem.Text  = group.Name;
                    listItem.Value = group.Id.ToString();
                    ddlGroups.Items.Add(listItem);
                }
                if (ddlGroups.Items.Count < 1)
                {
                    DisplayBox("No groups found for the selected Attendance Type", NotificationBoxType.Warning);
                }
            }
        }
コード例 #2
0
        public int GetWeeksAttendedInDuration(int personId, int weekCount, string idList, bool recursive)
        {
            var parameters = new Dictionary <string, object>();

            if (recursive)
            {
                var groupTypeIds = idList.SplitDelimitedValues().AsIntegerList();
                var groupIds     = new ChildCheckInGroupGenerator().Get(groupTypeIds).Select(g => g.Id).ToList();
                idList = string.Join(",", groupIds);
            }

            parameters.Add("PersonId", personId);
            parameters.Add("WeekDuration", weekCount);
            parameters.Add("idList", idList);
            parameters.Add("recursive", recursive);

            var result = DbService.ExecuteScaler("spBricksandMortarStudio_Checkin_WeeksAttendedInDurationWithGroupType", System.Data.CommandType.StoredProcedure, parameters);

            if (result != null)
            {
                return(( int )result);
            }

            return(-1);
        }
コード例 #3
0
        private List <TemplateContainer> GetCheckInTemplateGroups()
        {
            var checkInGroupTypes = cblCheckInTemplates.SelectedValuesAsInt.Any() ? cblCheckInTemplates.SelectedValuesAsInt.Select(i => _groupTypeService.Get(i)).ToList() : GetCheckInTemplatesGroupTypes();
            var result            = new List <TemplateContainer>();

            foreach (var groupType in checkInGroupTypes)
            {
                var results = new ChildCheckInGroupGenerator().Get(new List <GroupType> {
                    groupType
                });
                result.Add(new TemplateContainer
                {
                    GroupType   = groupType,
                    GroupTypeId = groupType.Id,
                    GroupGuids  = results.Select(g => g.Guid).ToList(),
                    GroupIds    = results.Select(g => g.Id).ToList()
                });
            }
            return(result);
        }
コード例 #4
0
        public IQueryable <MonthlyAttendanceSummary> GetFamilyAttendanceForGroupType(int personId, int monthCount, string idList, bool recursive)
        {
            //If recursive, id list is a list of group IDs, else it's a list of group type ids
            var attendanceSummary =
                new List <MonthlyAttendanceSummary>();

            if (recursive)
            {
                var groupTypeIds = idList.SplitDelimitedValues().AsIntegerList();
                var groupIds     = new ChildCheckInGroupGenerator().Get(groupTypeIds).Select(g => g.Id).ToList();
                idList = string.Join(",", groupIds);
            }

            Dictionary <string, object> parameters = new Dictionary <string, object>();

            parameters.Add("PersonId", personId);
            parameters.Add("MonthCount", monthCount);
            parameters.Add("idList", idList);

            //Tell the SQL if it's dealing with groups or grouptypes
            parameters.Add("groups", recursive);

            var table = DbService.GetDataTable("spBricksandMortarStudio_BadgeAttendanceWithGroupType", CommandType.StoredProcedure,
                                               parameters);

            if (table != null)
            {
                foreach (DataRow row in table.Rows)
                {
                    var item = new MonthlyAttendanceSummary();
                    item.AttendanceCount = row["AttendanceCount"].ToString().AsInteger();
                    item.SundaysInMonth  = row["SundaysInMonth"].ToString().AsInteger();
                    item.Month           = row["Month"].ToString().AsInteger();
                    item.Year            = row["Year"].ToString().AsInteger();

                    attendanceSummary.Add(item);
                }
            }

            return(attendanceSummary.AsQueryable());
        }
        private void CreateRowsForGroupType(GroupType groupType, List <YearHeadcountComparisonRow> rows)
        {
            var groups = new ChildCheckInGroupGenerator().Get(groupType);

            // Add row to mark group type
            var groupTypeTitleRow = new YearHeadcountComparisonRow(groupType.Name);

            rows.Add(groupTypeTitleRow);

            // Add row for each group in groupType
            var groupTypeRows = new List <YearHeadcountComparisonRow>();

            groupTypeRows.AddRange(groups.Select(CreateStatisticsRow));

            // Calculate group type specific totals
            var totalRow = new YearHeadcountComparisonRow(groupTypeRows.Sum(r => r.TotalMonthly) ?? 0, groupTypeRows.Sum(r => r.AverageMonthlyAttendance) ?? 0.0m, groupTypeRows.Sum(r => r.YearToDateTotal) ?? 0, groupTypeRows.Sum(r => r.YearToDateAverage) ?? 0.0m,
                                                          groupTypeRows.Sum(r => r.ComparisonYearTotalMonthly) ?? 0, groupTypeRows.Sum(r => r.ComparisonYearAverageMonthlyAttendance) ?? 0.0m, groupTypeRows.Sum(r => r.ComparisonYearToDateTotal) ?? 0, groupTypeRows.Sum(r => r.ComparisonYearToDateAverage) ?? 0.0m);

            // Add rows to the list of rows gStatistics will bind
            rows.AddRange(groupTypeRows);
            rows.Add(totalRow);
        }
        private void CreateRowsForGroupType(GroupType groupType, List <QuarterlyHeadcountComparisonRow> rows)
        {
            int comparisonYear = ddlComparisonYear.SelectedValue.AsInteger();
            var groups         = new ChildCheckInGroupGenerator().Get(groupType);

            // Add row to mark group type
            var groupTypeTitleRow = new QuarterlyHeadcountComparisonRow(groupType.Name);

            rows.Add(groupTypeTitleRow);

            // Add row for each group in groupType
            var groupRows = new List <QuarterlyHeadcountComparisonRow>();

            groupRows.AddRange(
                groups.Select(
                    g =>
            {
                return(_statisticCalculator.Calculate(g, _startDateTime, _endDateTime,
                                                      comparisonYear));
            }));

            // Generate total row
            var totalQuarter = new QuarterInformation(groupRows.Sum(qi => qi.Quarter.YearTotal),
                                                      groupRows.Sum(qi => qi.Quarter.Q1Total), groupRows.Sum(qi => qi.Quarter.Q2Total),
                                                      groupRows.Sum(qi => qi.Quarter.Q3Total), groupRows.Sum(qi => qi.Quarter.Q4Total), groupRows.Sum(qi => qi.Quarter.Average));

            var comparisonQuarter = new QuarterInformation(groupRows.Sum(qi => qi.ComparisonQuarter.YearTotal),
                                                           groupRows.Sum(qi => qi.ComparisonQuarter.Q1Total), groupRows.Sum(qi => qi.ComparisonQuarter.Q2Total),
                                                           groupRows.Sum(qi => qi.ComparisonQuarter.Q3Total), groupRows.Sum(qi => qi.ComparisonQuarter.Q4Total), groupRows.Sum(qi => qi.ComparisonQuarter.Average));

            var totalRow = new QuarterlyHeadcountComparisonRow(totalQuarter, comparisonQuarter, comparisonYear);

            // Add rows to the list of rows gStatistics will bind
            rows.AddRange(groupRows);
            rows.Add(totalRow);
        }
コード例 #7
0
        private void PopulateGroups()
        {
            int checkInTemplateId = DefinedValueCache.Get(Rock.SystemGuid.DefinedValue.GROUPTYPE_PURPOSE_CHECKIN_TEMPLATE).Id;
            var checkInTemplates  = new GroupTypeService(new RockContext()).Queryable().AsNoTracking().Where(g => g.GroupTypePurposeValueId == checkInTemplateId);
            var groups            = new ChildCheckInGroupGenerator().Get(checkInTemplates).AsEnumerable();

            if (GetAttributeValue("StrictCampusFilter").AsBoolean())
            {
                groups = groups.Where(g => g.CampusId == _campusId);
            }
            else
            {
                groups = groups.Where(g => g.CampusId == null || g.CampusId == _campusId);
            }
            ddlGroups.Items.Clear();
            var enumeratedGroups = groups as IList <Group> ?? groups.ToList();

            foreach (var group in enumeratedGroups)
            {
                var listItem = new ListItem();
                listItem.Text  = group.Name;
                listItem.Value = group.Id.ToString();
                ddlGroups.Items.Add(listItem);
            }
            if (ddlGroups.Items.Count < 1)
            {
                nbWarning.Heading = "No checkin groups found.";
            }
            else
            {
                if (_groupId.HasValue && enumeratedGroups.Any(g => g.Id == _groupId.Value))
                {
                    ddlGroups.SelectedValue = _groupId.ToString();
                }
            }
        }