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); } } }
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); }
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); }
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); }
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(); } } }