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); }
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); }