Rock.Model.GroupMemberService.CreateKnownRelationship C# (CSharp) Метод

CreateKnownRelationship() публичный Метод

Creates the known relationship.
public CreateKnownRelationship ( int personId, int relatedPersonId, int relationshipRoleId ) : void
personId int The person identifier.
relatedPersonId int The related person identifier.
relationshipRoleId int The relationship role identifier.
Результат void
        public void CreateKnownRelationship( int personId, int relatedPersonId, int relationshipRoleId )
        {
            var groupMemberService = this;
            var rockContext = this.Context as RockContext;

            var knownRelationshipGroupType = GroupTypeCache.Read( Rock.SystemGuid.GroupType.GROUPTYPE_KNOWN_RELATIONSHIPS );
            var ownerRole = knownRelationshipGroupType.Roles.FirstOrDefault( r => r.Guid.Equals( Rock.SystemGuid.GroupRole.GROUPROLE_KNOWN_RELATIONSHIPS_OWNER.AsGuid() ) );
            var relationshipRole = knownRelationshipGroupType.Roles.FirstOrDefault( r => r.Id == relationshipRoleId );
            if ( ownerRole == null )
            {
                throw new Exception( "Unable to find known relationships owner role" );
            }

            if ( relationshipRole == null )
            {
                throw new Exception( "Specified relationshipRoleId is not a known relationships role" );
            }

            var knownRelationshipGroup = groupMemberService.Queryable()
                .Where( m =>
                    m.PersonId == personId &&
                    m.GroupRole.Guid.Equals( ownerRole.Guid ) )
                .Select( m => m.Group )
                .FirstOrDefault();

            // Create known relationship group if doesn't exist
            if ( knownRelationshipGroup == null )
            {
                var groupMember = new GroupMember();
                groupMember.PersonId = personId;
                groupMember.GroupRoleId = ownerRole.Id;

                knownRelationshipGroup = new Group();
                knownRelationshipGroup.Name = knownRelationshipGroupType.Name;
                knownRelationshipGroup.GroupTypeId = knownRelationshipGroupType.Id;
                knownRelationshipGroup.Members.Add( groupMember );

                new GroupService( rockContext ).Add( knownRelationshipGroup );
                rockContext.SaveChanges();
            }

            // Add relationships
            var relationshipMember = groupMemberService.Queryable()
                .FirstOrDefault( m =>
                    m.GroupId == knownRelationshipGroup.Id &&
                    m.PersonId == relatedPersonId &&
                    m.GroupRoleId == relationshipRoleId );

            if ( relationshipMember == null )
            {
                relationshipMember = new GroupMember();
                relationshipMember.GroupId = knownRelationshipGroup.Id;
                relationshipMember.PersonId = relatedPersonId;
                relationshipMember.GroupRoleId = relationshipRoleId;
                groupMemberService.Add( relationshipMember );
                rockContext.SaveChanges();
            }

            var inverseGroupMember = groupMemberService.GetInverseRelationship( relationshipMember, true );
            if ( inverseGroupMember != null )
            {
                groupMemberService.Add( inverseGroupMember );
                rockContext.SaveChanges();
            }
        }

Usage Example

Пример #1
0
        public System.Net.Http.HttpResponseMessage CreateKnownRelationship( int personId, int relatedPersonId, int relationshipRoleId )
        {
            SetProxyCreation( true );
            var rockContext = this.Service.Context as RockContext;
            var personService = new PersonService(rockContext);
            var person = personService.Get(personId);
            var relatedPerson = personService.Get(relatedPersonId);

            CheckCanEdit( person );
            CheckCanEdit( relatedPerson );

            System.Web.HttpContext.Current.Items.Add( "CurrentPerson", GetPerson() );

            var groupMemberService = new GroupMemberService(rockContext);
            groupMemberService.CreateKnownRelationship( personId, relatedPersonId, relationshipRoleId );

            return ControllerContext.Request.CreateResponse( HttpStatusCode.Created );
        }