本文整理汇总了C#中Rock.Model.GroupService.GroupAncestorPathName方法的典型用法代码示例。如果您正苦于以下问题:C# GroupService.GroupAncestorPathName方法的具体用法?C# GroupService.GroupAncestorPathName怎么用?C# GroupService.GroupAncestorPathName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Rock.Model.GroupService
的用法示例。
在下文中一共展示了GroupService.GroupAncestorPathName方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Execute
/// <summary>
/// Executes the specified context.
/// </summary>
/// <param name="context">The context.</param>
public void Execute( IJobExecutionContext context )
{
var rockContext = new RockContext();
JobDataMap dataMap = context.JobDetail.JobDataMap;
Guid? systemEmailGuid = dataMap.GetString( "NotificationEmailTemplate" ).AsGuidOrNull();
if ( systemEmailGuid.HasValue )
{
var selectedGroupTypes = new List<Guid>();
if ( !string.IsNullOrWhiteSpace( dataMap.GetString( "GroupTypes" ) ) )
{
selectedGroupTypes = dataMap.GetString( "GroupTypes" ).Split( ',' ).Select( Guid.Parse ).ToList();
}
var excludedGroupRoleIds = new List<int>();
if ( !string.IsNullOrWhiteSpace( dataMap.GetString( "ExcludedGroupRoleIds" ) ) )
{
excludedGroupRoleIds = dataMap.GetString( "ExcludedGroupRoleIds" ).Split( ',' ).Select( int.Parse ).ToList();
}
var notificationOption = dataMap.GetString( "NotifyParentLeaders" ).ConvertToEnum<NotificationOption>( NotificationOption.None );
var accountAbilityGroupGuid = dataMap.GetString( "AccountabilityGroup" ).AsGuid();
// get groups matching of the types provided
GroupService groupService = new GroupService( rockContext );
var groups = groupService.Queryable().AsNoTracking()
.Where( g => selectedGroupTypes.Contains( g.GroupType.Guid )
&& g.IsActive == true
&& g.GroupRequirements.Any() );
foreach ( var group in groups )
{
// check for members that don't meet requirements
var groupMembersWithIssues = groupService.GroupMembersNotMeetingRequirements( group.Id, true );
if ( groupMembersWithIssues.Count > 0 )
{
// add issues to issue list
GroupsMissingRequirements groupMissingRequirements = new GroupsMissingRequirements();
groupMissingRequirements.Id = group.Id;
groupMissingRequirements.Name = group.Name;
if ( group.GroupType != null )
{
groupMissingRequirements.GroupTypeId = group.GroupTypeId;
groupMissingRequirements.GroupTypeName = group.GroupType.Name;
}
groupMissingRequirements.AncestorPathName = groupService.GroupAncestorPathName( group.Id );
// get list of the group leaders
groupMissingRequirements.Leaders = group.Members
.Where( m => m.GroupRole.IsLeader == true && !excludedGroupRoleIds.Contains( m.GroupRoleId ) )
.Select( m => new GroupMemberResult
{
Id = m.Id,
PersonId = m.PersonId,
FullName = m.Person.FullName
} )
.ToList();
List<GroupMembersMissingRequirements> groupMembers = new List<GroupMembersMissingRequirements>();
foreach ( var groupMemberIssue in groupMembersWithIssues )
{
GroupMembersMissingRequirements groupMember = new GroupMembersMissingRequirements();
groupMember.FullName = groupMemberIssue.Key.Person.FullName;
groupMember.Id = groupMemberIssue.Key.Id;
groupMember.PersonId = groupMemberIssue.Key.PersonId;
groupMember.GroupMemberRole = groupMemberIssue.Key.GroupRole.Name;
List<MissingRequirement> missingRequirements = new List<MissingRequirement>();
foreach ( var issue in groupMemberIssue.Value )
{
MissingRequirement missingRequirement = new MissingRequirement();
missingRequirement.Id = issue.Key.GroupRequirement.GroupRequirementType.Id;
missingRequirement.Name = issue.Key.GroupRequirement.GroupRequirementType.Name;
missingRequirement.Status = issue.Key.MeetsGroupRequirement;
missingRequirement.OccurrenceDate = issue.Value;
switch ( issue.Key.MeetsGroupRequirement )
{
case MeetsGroupRequirement.Meets:
missingRequirement.Message = issue.Key.GroupRequirement.GroupRequirementType.PositiveLabel;
break;
case MeetsGroupRequirement.MeetsWithWarning:
missingRequirement.Message = issue.Key.GroupRequirement.GroupRequirementType.WarningLabel;
break;
case MeetsGroupRequirement.NotMet:
missingRequirement.Message = issue.Key.GroupRequirement.GroupRequirementType.NegativeLabel;
break;
}
missingRequirements.Add( missingRequirement );
}
//.........这里部分代码省略.........
示例2: AddGroupControls
/// <summary>
/// Adds the group controls.
/// </summary>
/// <param name="group">The group.</param>
/// <param name="checkBoxList">The check box list.</param>
/// <param name="service">The service.</param>
/// <param name="showGroupAncestry">if set to <c>true</c> [show group ancestry].</param>
private void AddGroupControls( Group group, RockCheckBoxList checkBoxList, GroupService service, bool showGroupAncestry )
{
// Only show groups that actually have a schedule
if ( group != null )
{
if ( group.ScheduleId.HasValue || group.GroupLocations.Any( l => l.Schedules.Any() ) )
{
string displayName = showGroupAncestry ? service.GroupAncestorPathName( group.Id ) : group.Name;
checkBoxList.Items.Add( new ListItem( displayName, group.Id.ToString() ) );
}
if ( group.Groups != null )
{
foreach ( var childGroup in group.Groups
.OrderBy( a => a.Order )
.ThenBy( a => a.Name )
.ToList() )
{
AddGroupControls( childGroup, checkBoxList, service, showGroupAncestry );
}
}
}
}
示例3: BindGrid
/// <summary>
/// Binds the grid.
/// </summary>
protected void BindGrid()
{
AddScheduleColumns();
var rockContext = new RockContext();
var groupLocationService = new GroupLocationService( rockContext );
var groupTypeService = new GroupTypeService( rockContext );
var groupService = new GroupService( rockContext );
IEnumerable<GroupTypePath> groupPaths = new List<GroupTypePath>();
var groupLocationQry = groupLocationService.Queryable();
List<int> currentAndDescendantGroupTypeIds = new List<int>();
var currentGroupTypeIds = this.CurrentGroupTypeIds.ToList();
currentAndDescendantGroupTypeIds.AddRange( currentGroupTypeIds );
foreach ( var templateGroupType in groupTypeService.Queryable().Where( a => currentGroupTypeIds.Contains( a.Id ) ) )
{
foreach ( var childGroupType in groupTypeService.GetChildGroupTypes( templateGroupType.Id ) )
{
currentAndDescendantGroupTypeIds.Add( childGroupType.Id );
currentAndDescendantGroupTypeIds.AddRange( groupTypeService.GetAllAssociatedDescendents( childGroupType.Id ).Select( a => a.Id ).ToList() );
}
}
groupLocationQry = groupLocationQry.Where( a => currentAndDescendantGroupTypeIds.Contains( a.Group.GroupTypeId ) );
groupLocationQry = groupLocationQry.OrderBy( a => a.Group.Name ).ThenBy( a => a.Location.Name );
List<int> currentDeviceLocationIdList = this.GetGroupTypesLocations( rockContext ).Select( a => a.Id ).Distinct().ToList();
var qryList = groupLocationQry
.Where( a => currentDeviceLocationIdList.Contains( a.LocationId ) )
.Select( a =>
new
{
GroupLocationId = a.Id,
a.Location,
GroupId = a.GroupId,
GroupName = a.Group.Name,
ScheduleIdList = a.Schedules.Select( s => s.Id ),
GroupTypeId = a.Group.GroupTypeId
} ).ToList();
var locationService = new LocationService( rockContext );
// put stuff in a datatable so we can dynamically have columns for each Schedule
DataTable dataTable = new DataTable();
dataTable.Columns.Add( "GroupLocationId" );
dataTable.Columns.Add( "GroupId" );
dataTable.Columns.Add( "GroupName" );
dataTable.Columns.Add( "GroupPath" );
dataTable.Columns.Add( "LocationName" );
dataTable.Columns.Add( "LocationPath" );
foreach ( var field in gGroupLocationSchedule.Columns.OfType<CheckBoxEditableField>() )
{
dataTable.Columns.Add( field.DataField, typeof( bool ) );
}
var locationPaths = new Dictionary<int, string>();
foreach ( var row in qryList )
{
DataRow dataRow = dataTable.NewRow();
dataRow["GroupLocationId"] = row.GroupLocationId;
dataRow["GroupName"] = groupService.GroupAncestorPathName( row.GroupId );
dataRow["GroupPath"] = groupPaths.Where( gt => gt.GroupTypeId == row.GroupTypeId ).Select( gt => gt.Path ).FirstOrDefault();
dataRow["LocationName"] = row.Location.Name;
if ( row.Location.ParentLocationId.HasValue )
{
int locationId = row.Location.ParentLocationId.Value;
if ( !locationPaths.ContainsKey( locationId ) )
{
var locationNames = new List<string>();
var parentLocation = locationService.Get( locationId );
while ( parentLocation != null )
{
locationNames.Add( parentLocation.Name );
parentLocation = parentLocation.ParentLocation;
}
if ( locationNames.Any() )
{
locationNames.Reverse();
locationPaths.Add( locationId, locationNames.AsDelimited( " > " ) );
}
else
{
locationPaths.Add( locationId, string.Empty );
}
}
dataRow["LocationPath"] = locationPaths[locationId];
}
//.........这里部分代码省略.........