本文整理汇总了C#中Rock.Model.GroupMemberService.Join方法的典型用法代码示例。如果您正苦于以下问题:C# GroupMemberService.Join方法的具体用法?C# GroupMemberService.Join怎么用?C# GroupMemberService.Join使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Rock.Model.GroupMemberService
的用法示例。
在下文中一共展示了GroupMemberService.Join方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetMergeObjectList
/// <summary>
/// Gets the merge object list for the current EntitySet
/// </summary>
/// <param name="rockContext">The rock context.</param>
/// <param name="fetchCount">The fetch count.</param>
/// <returns></returns>
private List<object> GetMergeObjectList( RockContext rockContext, int? fetchCount = null )
{
int entitySetId = hfEntitySetId.Value.AsInteger();
var entitySetService = new EntitySetService( rockContext );
var entitySet = entitySetService.Get( entitySetId );
Dictionary<int, object> mergeObjectsDictionary = new Dictionary<int, object>();
// If this EntitySet contains IEntity Items, add those first
if ( entitySet.EntityTypeId.HasValue )
{
var qryEntity = entitySetService.GetEntityQuery( entitySetId );
if ( fetchCount.HasValue )
{
qryEntity = qryEntity.Take( fetchCount.Value );
}
var entityTypeCache = EntityTypeCache.Read( entitySet.EntityTypeId.Value );
bool isPersonEntityType = entityTypeCache != null && entityTypeCache.Guid == Rock.SystemGuid.EntityType.PERSON.AsGuid();
bool isGroupMemberEntityType = entityTypeCache != null && entityTypeCache.Guid == Rock.SystemGuid.EntityType.GROUP_MEMBER.AsGuid();
bool combineFamilyMembers = cbCombineFamilyMembers.Visible && cbCombineFamilyMembers.Checked;
if ( ( isGroupMemberEntityType || isPersonEntityType ) && combineFamilyMembers )
{
IQueryable<IEntity> qryPersons;
if ( isGroupMemberEntityType )
{
qryPersons = qryEntity.OfType<GroupMember>().Select( a => a.Person ).Distinct();
}
else
{
qryPersons = qryEntity;
}
Guid familyGroupType = Rock.SystemGuid.GroupType.GROUPTYPE_FAMILY.AsGuid();
var qryFamilyGroupMembers = new GroupMemberService( rockContext ).Queryable()
.Where( a => a.Group.GroupType.Guid == familyGroupType )
.Where( a => qryPersons.Any( aa => aa.Id == a.PersonId ) );
var qryCombined = qryFamilyGroupMembers.Join(
qryPersons,
m => m.PersonId,
p => p.Id,
( m, p ) => new { GroupMember = m, Person = p } )
.GroupBy( a => a.GroupMember.GroupId )
.Select( x => new
{
GroupId = x.Key,
Persons = x.Select( xx => xx.Person ).Distinct()
} );
foreach ( var combinedFamilyItem in qryCombined )
{
object mergeObject;
string commaPersonIds = combinedFamilyItem.Persons.Select( a => a.Id ).Distinct().ToList().AsDelimited( "," );
var primaryGroupPerson = combinedFamilyItem.Persons.FirstOrDefault() as Person;
if ( mergeObjectsDictionary.ContainsKey( primaryGroupPerson.Id ) )
{
foreach ( var person in combinedFamilyItem.Persons )
{
if ( !mergeObjectsDictionary.ContainsKey( person.Id ) )
{
primaryGroupPerson = person as Person;
break;
}
}
}
// if we are combining from a GroupMemberEntityType list add the GroupMember attributes of the primary person in the combined list
if ( isGroupMemberEntityType )
{
var groupMember = qryEntity.OfType<GroupMember>().Where( a => a.PersonId == primaryGroupPerson.Id ).FirstOrDefault();
primaryGroupPerson.AdditionalLavaFields = primaryGroupPerson.AdditionalLavaFields ?? new Dictionary<string, object>();
if ( groupMember != null )
{
primaryGroupPerson.AdditionalLavaFields.Add( "GroupMember", groupMember );
}
}
if ( combinedFamilyItem.Persons.Count() > 1 )
{
var combinedPerson = primaryGroupPerson.ToJson().FromJsonOrNull<MergeTemplateCombinedPerson>();
var familyTitle = RockUdfHelper.ufnCrm_GetFamilyTitle( rockContext, null, combinedFamilyItem.GroupId, commaPersonIds, true );
combinedPerson.FullName = familyTitle;
var firstNameList = combinedFamilyItem.Persons.Select( a => ( a as Person ).FirstName ).ToList();
var nickNameList = combinedFamilyItem.Persons.Select( a => ( a as Person ).NickName ).ToList();
combinedPerson.FirstName = firstNameList.AsDelimited( ", ", " & " );
combinedPerson.NickName = nickNameList.AsDelimited( ", ", " & " );
//.........这里部分代码省略.........