/// <summary> /// Flyout Facets /// </summary> /// <param name="entity"></param> /// <param name="containerSize"></param> /// <returns></returns> public ActionResult FlyoutFacets(EntityModel entity, int containerSize = 0) { SetupViewData(entity, containerSize); FacetsWidget widget = (FacetsWidget)entity; if (widget.CategoryReference != null) { widget.CategoryReference.Category = ResolveCategory(widget.CategoryReference); if (widget.CategoryReference.Category != null) { var cachedData = this.GetCachedFlyoutData(widget.CategoryReference.Category.Id); if (cachedData == null) { var queryResult = ECommerceContext.Client.QueryService.Query( new Api.Model.Query { Category = widget.CategoryReference.Category, ViewType = Api.Model.ViewType.FLYOUT }); cachedData = new FlyoutData { FacetGroups = queryResult.FacetGroups.ToList(), Promotions = queryResult.Promotions.ToList() }; this.CacheFlyoutData(widget.CategoryReference.Category.Id, cachedData); } widget.FacetGroups = cachedData.FacetGroups; widget.RelatedPromotions = cachedData.Promotions; } } return(View(entity.MvcData.ViewName, entity)); }
private void CacheFlyoutData(string categoryId, FlyoutData flyoutData) { // Default cache flyout data in 1 hour. TODO: Have this configurable // this.flyoutCache.Add(categoryId, flyoutData, DateTimeOffset.Now.AddHours(1.0)); }