/// <summary> /// Search click event handler. /// </summary> public override void Search() { var options = this.CreateSearchOptions(); var settingsResolver = Context.Entity.Resolve <SiteSettingsResolver>(); BusinessCatalogSettings settings; var provider = Context.Entity.Resolve <Ecommerce.Search.ISearchProvider>(); try { settings = settingsResolver.GetSiteSettings(this.View.CurrentItemUri); } catch (InvalidOperationException ex) { Log.Error("Unable to resolve Business Catalog settings.", ex, this); return; } options.SearchRoot = settings.ProductsLink; base.Search(options); if (this.CatalogSettings.ProductIDs.Count <= 0) { return; } var builder = new ItemIDListQueryBuilder(this.CatalogSettings.ProductIDs); var converter = new ItemResultDataConverter(); using (new LanguageSwitcher(this.View.CurrentItemUri.Language)) { var arrangedProducts = this.CatalogSettings.ProductIDs.Join(provider.Search(builder.GetResultQuery()), productId => productId, productItem => productItem.ID.ToString(), (productId, productItem) => productItem); var data = converter.Convert(arrangedProducts, this.ProductCatalog.GetGridColumns()); this.View.FillSelectedProductsGrid(data); } }
/// <summary> /// Search click event handler. /// </summary> public override void Search() { var options = this.CreateSearchOptions(); var settingsResolver = Context.Entity.Resolve<SiteSettingsResolver>(); BusinessCatalogSettings settings; var provider = Context.Entity.Resolve<Ecommerce.Search.ISearchProvider>(); try { settings = settingsResolver.GetSiteSettings(this.View.CurrentItemUri); } catch (InvalidOperationException ex) { Log.Error("Unable to resolve Business Catalog settings.", ex, this); return; } options.SearchRoot = settings.ProductsLink; base.Search(options); if (this.CatalogSettings.ProductIDs.Count <= 0) { return; } var builder = new ItemIDListQueryBuilder(this.CatalogSettings.ProductIDs); var converter = new ItemResultDataConverter(); using (new LanguageSwitcher(this.View.CurrentItemUri.Language)) { var arrangedProducts = this.CatalogSettings.ProductIDs.Join(provider.Search(builder.GetResultQuery()), productId => productId, productItem => productItem.ID.ToString(), (productId, productItem) => productItem); var data = converter.Convert(arrangedProducts, this.ProductCatalog.GetGridColumns()); this.View.FillSelectedProductsGrid(data); } }