Пример #1
0
        // TODO: Move this in an utility class
        internal static List <AssetViewModel> GetReferencers(IAssetDependencyManager dependencyManager, SessionViewModel session, IEnumerable <AssetItem> assets)
        {
            var result = new List <AssetViewModel>();

            // Find which assets are referencing the pasted assets in order to fix the reference link.
            foreach (var asset in assets)
            {
                var referencers = dependencyManager.ComputeDependencies(asset.Id, AssetDependencySearchOptions.In, ContentLinkType.Reference);
                if (referencers != null)
                {
                    foreach (var referencerLink in referencers.LinksIn)
                    {
                        AssetViewModel assetViewModel = session.GetAssetById(referencerLink.Item.Id);
                        if (assetViewModel != null)
                        {
                            if (!result.Contains(assetViewModel))
                            {
                                result.Add(assetViewModel);
                            }
                        }
                    }
                }
            }
            return(result);
        }
Пример #2
0
        protected override IEnumerable <KeyValuePair <object, List <AssetViewModel> > > FindReferencers(AssetViewModel deletedObject)
        {
            var session      = deletedObject.Session;
            var dependencies = dependencyManager.ComputeDependencies(deletedObject.AssetItem.Id, AssetDependencySearchOptions.In, ContentLinkType.Reference);
            var referencers  = dependencies?.LinksIn.Select(x => session.GetAssetById(x.Item.Id)).NotNull().Where(x => !hashIds.Contains(x.Id)).ToList() ?? new List <AssetViewModel>();

            yield return(new KeyValuePair <object, List <AssetViewModel> >(deletedObject, referencers));
        }