예제 #1
0
        protected override List <ID> GetReference(Asset entity, Item accountItem)
        {
            var parameters = new List <Parameter> {
                new Parameter()
                {
                    Name = "embedcode", Type = ParameterType.UrlSegment, Value = entity.EmbedCode
                }
            };

            var context = new RestContext(Constants.SitecoreRestSharpService, new OoyalaAthenticator(accountItem));

            var referencedPlayer = context.Read <ReferencedPlayer>("read_asset_player", parameters).Data;

            if (referencedPlayer == null)
            {
                return(new List <ID>(0));
            }

            var playerIndex = ContentSearchUtil.FindOne <PlayerSearchResult>(Constants.IndexName,
                                                                             i => i.Paths.Contains(accountItem.ID) && i.TemplateId == TemplateIDs.Player && i.Id == referencedPlayer.ID);

            if (playerIndex == null)
            {
                IItemSynchronizer synchronizer = MediaFrameworkContext.GetItemSynchronizer(typeof(Player));
                if (synchronizer != null)
                {
                    Player player = new Player {
                        Id = referencedPlayer.ID
                    };

                    playerIndex = synchronizer.Fallback(player, accountItem) as PlayerSearchResult;
                }
            }

            return(playerIndex != null ? new List <ID> {
                playerIndex.ItemId
            } : new List <ID>(0));
        }
예제 #2
0
        protected virtual Item GetParentItem(Label label, Item accountItem)
        {
            if (string.IsNullOrEmpty(label.ParentId))
            {
                return(accountItem.Children["Labels"]);
            }

            var expression = ContentSearchUtil.GetAncestorFilter <LabelSearchResult>(accountItem, TemplateIDs.Label);

            expression.And(i => i.Id == label.ParentId);

            LabelSearchResult searchResults = ContentSearchUtil.FindOne(Constants.IndexName, expression.And(i => i.Id == label.ParentId));

            if (searchResults != null)
            {
                Item item = searchResults.GetItem();
                if (item != null)
                {
                    return(item);
                }
            }

            return(accountItem.Axes.SelectSingleItem(string.Format("./Labels//*[@@templateid='{0}' and @Id='{1}']", TemplateIDs.Label, label.ParentId)));
        }
        protected virtual TSearchResult GetSearchResult <TSearchResult>(string indexName, Item accountItem, Expression <Func <TSearchResult, bool> > selector) where TSearchResult : MediaServiceSearchResult, new()
        {
            Expression <Func <TSearchResult, bool> > predicate = ContentSearchUtil.GetAncestorFilter <TSearchResult>(accountItem);

            return(ContentSearchUtil.FindOne <TSearchResult>(indexName, predicate.And(selector)));
        }
예제 #4
0
        public static TSearchResult GetSearchResultForAncesterFilter <TSearchResult>(string indexName, Item ancesterItem, Expression <Func <TSearchResult, bool> > selector) where TSearchResult : MediaServiceSearchResult, new()
        {
            Expression <Func <TSearchResult, bool> > ancestorFilter = ContentSearchUtil.GetAncestorFilter <TSearchResult>(ancesterItem, (List <ID>)null);

            return(ContentSearchUtil.FindOne <TSearchResult>(indexName, PredicateBuilder.And <TSearchResult>(ancestorFilter, selector)));
        }