private CategoriesFilterViewModel GetCategoriesFilter(IContent currentContent, string query)
        {
            var bestBets         = new BestBetRepository().List().Where(i => i.PhraseCriterion.Phrase.CompareTo(query) == 0);
            var ownStyleBestBets = bestBets.Where(i => i.BestBetSelector is CommerceBestBetSelector && i.HasOwnStyle);
            var catalogId        = 0;
            var node             = currentContent as NodeContent;

            if (node != null)
            {
                catalogId = node.CatalogId;
            }
            var catalog = _contentLoader.GetChildren <CatalogContentBase>(_referenceConverter.GetRootLink())
                          .FirstOrDefault(x => catalogId == 0 || x.CatalogId == catalogId);

            if (catalog == null)
            {
                return(new CategoriesFilterViewModel());
            }

            var viewModel = new CategoriesFilterViewModel();

            foreach (var nodeContent in _contentLoader.GetChildren <NodeContent>(catalog.ContentLink))
            {
                var nodeFilter = new CategoryFilter
                {
                    DisplayName = nodeContent.DisplayName,
                    Url         = _urlResolver.GetUrl(nodeContent.ContentLink),
                    IsActive    = currentContent != null && currentContent.ContentLink == nodeContent.ContentLink,
                    IsBestBet   = ownStyleBestBets.Any(x => ((CommerceBestBetSelector)x.BestBetSelector).ContentLink.ID == nodeContent.ContentLink.ID)
                };
                viewModel.Categories.Add(nodeFilter);

                var nodeChildren = _contentLoader.GetChildren <NodeContent>(nodeContent.ContentLink);
                foreach (var nodeChild in nodeChildren)
                {
                    var nodeChildFilter = new CategoryFilter
                    {
                        DisplayName = nodeChild.DisplayName,
                        Url         = _urlResolver.GetUrl(nodeChild.ContentLink),
                        IsActive    = currentContent != null && currentContent.ContentLink == nodeChild.ContentLink,
                        IsBestBet   = ownStyleBestBets.Any(x => ((CommerceBestBetSelector)x.BestBetSelector).ContentLink.ID == nodeChild.ContentLink.ID)
                    };

                    nodeFilter.Children.Add(nodeChildFilter);
                    if (nodeChildFilter.IsActive)
                    {
                        nodeFilter.IsActive = true;
                    }

                    var nodeChildrenOfNodeChild = _contentLoader.GetChildren <NodeContent>(nodeChild.ContentLink);
                    foreach (var nodeChildOfChild in nodeChildrenOfNodeChild)
                    {
                        var nodeChildOfChildFilter = new CategoryFilter
                        {
                            DisplayName = nodeChildOfChild.DisplayName,
                            Url         = _urlResolver.GetUrl(nodeChildOfChild.ContentLink),
                            IsActive    = currentContent != null && currentContent.ContentLink == nodeChildOfChild.ContentLink,
                            IsBestBet   = ownStyleBestBets.Any(x => ((CommerceBestBetSelector)x.BestBetSelector).ContentLink.ID == nodeChildOfChild.ContentLink.ID)
                        };

                        nodeChildFilter.Children.Add(nodeChildOfChildFilter);
                        if (nodeChildOfChildFilter.IsActive)
                        {
                            nodeFilter.IsActive = nodeChildFilter.IsActive = true;
                        }
                    }
                }
            }
            return(viewModel);
        }
示例#2
0
        private CategoriesFilterViewModel GetCategoriesFilter(IContent currentContent)
        {
            var catalogId = 0;
            var node      = currentContent as NodeContent;

            if (node != null)
            {
                catalogId = node.CatalogId;
            }
            var catalog = _contentLoader.GetChildren <CatalogContentBase>(_referenceConverter.GetRootLink())
                          .FirstOrDefault(x => catalogId == 0 || x.CatalogId == catalogId);

            if (catalog == null)
            {
                return(new CategoriesFilterViewModel());
            }

            var viewModel = new CategoriesFilterViewModel();

            foreach (var nodeContent in _contentLoader.GetChildren <NodeContent>(catalog.ContentLink))
            {
                var nodeFilter = new CategoryFilter
                {
                    DisplayName = nodeContent.DisplayName,
                    Url         = _urlResolver.GetUrl(nodeContent.ContentLink),
                    IsActive    = currentContent != null && currentContent.ContentLink == nodeContent.ContentLink
                };
                viewModel.Categories.Add(nodeFilter);

                var nodeChildren = _contentLoader.GetChildren <NodeContent>(nodeContent.ContentLink);
                foreach (var nodeChild in nodeChildren)
                {
                    var nodeChildFilter = new CategoryFilter
                    {
                        DisplayName = nodeChild.DisplayName,
                        Url         = _urlResolver.GetUrl(nodeChild.ContentLink),
                        IsActive    = currentContent != null && currentContent.ContentLink == nodeChild.ContentLink
                    };

                    nodeFilter.Children.Add(nodeChildFilter);
                    if (nodeChildFilter.IsActive)
                    {
                        nodeFilter.IsActive = true;
                    }

                    var nodeChildrenOfNodeChild = _contentLoader.GetChildren <NodeContent>(nodeChild.ContentLink);
                    foreach (var nodeChildOfChild in nodeChildrenOfNodeChild)
                    {
                        var nodeChildOfChildFilter = new CategoryFilter
                        {
                            DisplayName = nodeChildOfChild.DisplayName,
                            Url         = _urlResolver.GetUrl(nodeChildOfChild.ContentLink),
                            IsActive    = currentContent != null && currentContent.ContentLink == nodeChildOfChild.ContentLink
                        };

                        nodeChildFilter.Children.Add(nodeChildOfChildFilter);
                        if (nodeChildOfChildFilter.IsActive)
                        {
                            nodeFilter.IsActive = nodeChildFilter.IsActive = true;
                        }
                    }
                }
            }
            return(viewModel);
        }