Exemple #1
0
        public CategorySearchModel GetCategoriesForSearch(ProductSearchQuery query)
        {
            List <int> availableCategories = _productSearchIndexService.GetCategories(query);

            if (!query.CategoryId.HasValue)
            {
                return(GetRootCategoryModel(availableCategories));
            }

            var             category   = _session.Get <Category>(query.CategoryId);
            List <Category> categories =
                _session.QueryOver <Category>()
                .Where(cat => cat.Parent.Id == category.Id && cat.Id.IsIn(availableCategories))
                .Cacheable()
                .List().ToList();
            List <Category> hierarchy =
                category.ActivePages.OfType <Category>().Where(cat => availableCategories.Contains(cat.Id)).ToList();

            hierarchy.Reverse();
            return(new CategorySearchModel
            {
                Children = categories,
                Hierarchy = hierarchy
            });
        }