public GetGroupMemberAttributesCombined ( int groupId, int groupTypeId ) : IQueryable |
||
groupId | int | The group identifier. |
groupTypeId | int | The group type identifier. |
return | IQueryable |
/// <summary> /// Adds or update group member's attributes using any page parameters that are attributes of the group. /// </summary> /// <param name="person">The person.</param> /// <param name="group">The group.</param> /// <param name="rockContext">The rock context.</param> private void AddOrUpdateGroupMemberAttributes( Person person, Group group, RockContext rockContext ) { var groupMember = group.Members.Where( m => m.PersonId == person.Id ).FirstOrDefault(); AttributeService attributeService = new AttributeService( rockContext ); // Load all the group member attributes for comparison below. var attributes = attributeService.GetGroupMemberAttributesCombined( group.Id, group.GroupTypeId ); // In order to add attributes to the person, you have to first load them all groupMember.LoadAttributes( rockContext ); foreach ( var entry in PageParameters() ) { // skip the parameter if the group's group type doesn't have that one var attribute = attributes.Where( a => a.Key.Equals( entry.Key, StringComparison.OrdinalIgnoreCase ) ).FirstOrDefault(); if ( attribute == null ) { continue; } //attribute.SetAttributeValue groupMember.SetAttributeValue( entry.Key, (string) entry.Value ); } groupMember.SaveAttributeValues( rockContext ); }