Exemple #1
0
        /// <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));
        }
Exemple #2
0
        /// <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>());
            }
        }
Exemple #3
0
        /// <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);
                        }
                    });
                }
            }
        }