private void LoadDrillDownModel(DrillDownJsonModel model, int pageNumber, int pageSize,
                                        ProductSearchResultAdv result)
        {
            var products = HccApp.CatalogServices.Products.FindManyWithCache(result.Products);

            model.Types = ToCheckBoxItems(result.Types, result.SelectedTypes, result.TotalCount);

            model.Properties = new List <PropertyFacetItem>();

            foreach (var prop in result.Properties)
            {
                var selProp = result.SelectedProperties.FirstOrDefault(s => s.Id == prop.Id);
                var prop2   = new PropertyFacetItem
                {
                    Id           = prop.Id,
                    DisplayName  = prop.DisplayName,
                    PropertyName = prop.PropertyName
                };

                if (selProp != null && selProp.PropertyValues.Count > 0)
                {
                    prop2.FacetItems = prop.FacetItems
                                       .Select(
                        m =>
                        new CheckboxFacetItem(m, selProp.PropertyValues.Any(pv => pv.Id == m.Id),
                                              result.TotalCount))
                                       .ToList <FacetItem>();
                }
                else
                {
                    prop2.FacetItems = prop.FacetItems
                                       .Select(m => new CheckboxFacetItem(m, false))
                                       .ToList <FacetItem>();
                }

                model.Properties.Add(prop2);
            }

            model.Products              = products.Select(p => new SingleProductJsonModel(p, HccApp)).ToList();
            model.TotalCount            = result.TotalCount;
            model.MinPrice              = result.MinPrice;
            model.MaxPrice              = result.MaxPrice;
            model.SelectedMinPrice      = result.SelectedMinPrice;
            model.SelectedMaxPrice      = result.SelectedMaxPrice;
            model.SelectedManufacturers = result.SelectedManufacturers;
            model.SelectedVendors       = result.SelectedVendors;
            model.SelectedTypes         = result.SelectedTypes;
            model.SelectedProperties    = result.SelectedProperties;

            model.PagerData.PageSize    = pageSize;
            model.PagerData.TotalItems  = result.TotalCount;
            model.PagerData.CurrentPage = pageNumber;
            model.PagerData.PageRange   = 20;
        }
        private DrillDownJsonModel BuildDrillDownModel(CategoryFilterViewModel filter, CategoryModuleSettings sett,
                                                       int pageNumber, int pageSize)
        {
            var model    = new DrillDownJsonModel();
            var manager  = new SearchManager(HccApp.CurrentRequestContext);
            var queryAdv = BuildDrillDownQuery(filter);
            var result   = manager.DoProductSearch(HccApp.CurrentStore.Id, null, queryAdv, pageNumber, pageSize);

            model.Manufacturers = sett.ShowManufacturers
                ? ToCheckBoxItems(result.Manufacturers, result.SelectedManufacturers, result.TotalCount)
                : new List <CheckboxFacetItem>();
            model.Vendors = sett.ShowVendors
                ? ToCheckBoxItems(result.Vendors, result.SelectedVendors, result.TotalCount)
                : new List <CheckboxFacetItem>();

            model.SubCategories = LoadDrillDownCategories(filter.CategoryId);
            model.SortOrder     = queryAdv.SortOrder;

            LoadDrillDownModel(model, pageNumber, pageSize, result);
            return(model);
        }