/// <summary> /// Initializes the view model /// </summary> /// <param name="rendering">The rendering</param> /// <param name="childCategories">The list of child categories</param> public void Initialize(Rendering rendering, CategorySearchResults childCategories) { base.Initialize(rendering); if (childCategories != null) { ChildCategories = childCategories.CategoryItems; } }
public CategorySearchResults SearchByCategory(Pagination pagination) { if (pagination == null) { pagination = new Pagination(); } var query = _findClient.Search <FoundationPageData>(); query = query.FilterByCategories(pagination.Categories); if (pagination.Sort == CategorySorting.PublishedDate.ToString()) { if (pagination.SortDirection.ToLower() == "asc") { query = query.OrderBy(x => x.StartPublish); } else { query = query.OrderByDescending(x => x.StartPublish); } } if (pagination.Sort == CategorySorting.Name.ToString()) { if (pagination.SortDirection.ToLower() == "asc") { query = query.OrderBy(x => x.Name); } else { query = query.OrderByDescending(x => x.Name); } } query = query.Skip((pagination.Page - 1) * pagination.PageSize).Take(pagination.PageSize); var results = query.GetContentResult(); var model = new CategorySearchResults { Pagination = pagination, RelatedPages = results }; model.Pagination.TotalMatching = results.TotalMatching; model.Pagination.TotalPage = (model.Pagination.TotalMatching / pagination.PageSize) + (model.Pagination.TotalMatching % pagination.PageSize > 0 ? 1 : 0); return(model); }
private NavigationViewModel GetNavigationViewModel(Item categoryItem, Item datasource, Rendering currentRendering) { var cacheKey = string.Format("Navigation/{0}", categoryItem.Name); if (this.CurrentSiteContext.Items[cacheKey] != null) { return((NavigationViewModel)this.CurrentSiteContext.Items[cacheKey]); } var navigationViewModel = new NavigationViewModel(); CategorySearchResults childCategories = GetChildCategories(datasource, new CommerceSearchOptions(), categoryItem); navigationViewModel.Initialize(currentRendering, childCategories, categoryItem.ID); this.CurrentSiteContext.Items[cacheKey] = navigationViewModel; return(navigationViewModel); }
/// <summary> /// This method returns child categories for this category /// </summary> /// <param name="searchOptions">The options to perform the search with</param> /// <param name="categoryItem">The category item whose children to retrieve</param> /// <returns>A list of child categories</returns> protected CategorySearchResults GetChildCategories(CommerceSearchOptions searchOptions, Item categoryItem) { var returnList = new List <Item>(); var totalPageCount = 0; var totalCategoryCount = 0; if (Item != null) { var searchResponse = SearchNavigation.GetCategoryChildCategories(categoryItem.ID, searchOptions); returnList.AddRange(searchResponse.ResponseItems); totalCategoryCount = searchResponse.TotalItemCount; totalPageCount = searchResponse.TotalPageCount; } var results = new CategorySearchResults(returnList, totalCategoryCount, totalPageCount, searchOptions.StartPageIndex, new List <FacetCategory>()); return(results); }
/// <summary> /// Builds a navigation view model or retrieves it if it already exists /// </summary> /// <param name="categoryItem">The category item to base the view model on</param> /// <param name="rendering">The rendering to initialize the model with</param> /// <returns> /// A category view model /// </returns> protected virtual NavigationViewModel GetNavigationViewModel(Item categoryItem, Rendering rendering) { string cacheKey = "Navigation/" + categoryItem.Name; bool noCache = (string.IsNullOrEmpty(categoryItem.Name)); if (this.CurrentSiteContext.Items[cacheKey] != null && !noCache) { return((NavigationViewModel)this.CurrentSiteContext.Items[cacheKey]); } var navigationViewModel = new NavigationViewModel(); CategorySearchResults childCategories = GetChildCategories(new CommerceSearchOptions(), categoryItem); navigationViewModel.Initialize(rendering, childCategories); if (noCache) { return(navigationViewModel); } this.CurrentSiteContext.Items[cacheKey] = navigationViewModel; return(navigationViewModel); }
/// <summary> /// This method returns child categories for this category /// </summary> /// <param name="searchOptions">The options to perform the search with</param> /// <param name="categoryItem">The category item whose children to retrieve</param> /// <returns>A list of child categories</returns> protected CategorySearchResults GetChildCategories(CommerceSearchOptions searchOptions, Item categoryItem) { var returnList = new List<Item>(); var totalPageCount = 0; var totalCategoryCount = 0; if (Item != null) { var searchResponse = SearchNavigation.GetCategoryChildCategories(categoryItem.ID, searchOptions); returnList.AddRange(searchResponse.ResponseItems); totalCategoryCount = searchResponse.TotalItemCount; totalPageCount = searchResponse.TotalPageCount; } var results = new CategorySearchResults(returnList, totalCategoryCount, totalPageCount, searchOptions.StartPageIndex, new List<FacetCategory>()); return results; }