/// <summary> /// Reads the list of related entity IDs out of an entity for a given relationship type. /// </summary> private static IEnumerable <IEntity> GetRelationshipList(IEntity entity, IEntity relationshipDefn, Direction direction, string alias) { IEntityRelationshipCollection <IEntity> oRelated = entity.GetRelationships(relationshipDefn, direction); if (oRelated == null) { return(Enumerable.Empty <IEntity>()); } return(oRelated.Where(ri => ri.Entity != null)); }
/// <summary> /// Get the added entities in a rel collection /// </summary> IEnumerable <IEntity> GetAdded(IEntityRelationshipCollection <IEntity> rels) { var removedIds = rels.Tracker.Removed.Select(i => i.Key); var addedIds = rels.Tracker.Added.Select(i => i.Key).Except(removedIds); if (addedIds.Any()) { return(rels.Where(e => e != null && addedIds.Contains(e.Id)).ToList()); } else { return(Enumerable.Empty <IEntity>()); } }
/// <summary> /// Locates the invalid permission relationships. /// </summary> /// <param name="entities">The entities.</param> /// <param name="permission">The permission.</param> /// <param name="permissionRelationships">The permission relationships.</param> /// <param name="direction">The direction.</param> /// <param name="invalidPermissions">The invalid permissions.</param> private void LocateInvalidPermissionRelationships(IEnumerable <IEntity> entities, Permission permission, IEntityRelationshipCollection <IEntity> permissionRelationships, Direction direction, ISet <long> invalidPermissions) { if (permissionRelationships != null && permissionRelationships.Count > 0) { IList <IEntity> enumerable = entities as IList <IEntity> ?? entities.ToList( ); foreach (var relationship in permissionRelationships.Where(entityRelationship => entityRelationship != null && entityRelationship.Entity != null)) { LocateInvalidObjects(enumerable, relationship.Entity.Id, direction, invalidObjects => { ///// // If there are any invalid objects, mark the permission as invalid. ///// if (invalidObjects != null && invalidObjects.Count > 0) { invalidPermissions.Add(permission.Id); } }); } } }