Rock.Model.GroupMemberService.DeleteKnownRelationship C# (CSharp) Method

DeleteKnownRelationship() public method

Deletes the known relationship.
public DeleteKnownRelationship ( int personId, int relatedPersonId, int relationshipRoleId ) : void
personId int The person identifier.
relatedPersonId int The related person identifier.
relationshipRoleId int The relationship role identifier.
return void
        public void DeleteKnownRelationship( 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();

            if ( knownRelationshipGroup == null )
            {
                // no group, so it doesn't exist
                return;
            }

            // lookup the relationship to delete
            var relationshipMember = groupMemberService.Queryable()
                .FirstOrDefault( m =>
                    m.GroupId == knownRelationshipGroup.Id &&
                    m.PersonId == relatedPersonId &&
                    m.GroupRoleId == relationshipRoleId );

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

                groupMemberService.Delete( relationshipMember );
                rockContext.SaveChanges();
            }
        }

Usage Example

Esempio n. 1
0
        public void DeleteKnownRelationship( 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.DeleteKnownRelationship( personId, relatedPersonId, relationshipRoleId );
        }