private static ISearchDocuments CreateSearchDocuments(PanelContent pc) { if (pc == null || !pc.HasSubpanel("search-results")) { return(EmptySearchDocuments()); } pc = pc.Subpanel("search-results"); if (!pc.HasSubpanel("search-hits")) { return(EmptySearchDocuments()); } pc = pc.Subpanel("search-hits"); if (!pc.HasResult) { return(EmptySearchDocuments()); } var documents = new SearchDocuments(); foreach (var product in pc.ResultAsProducts()) { var productDocument = new SearchDocument(); foreach (var field in product.Select(a => new SearchField(a.Name, a.Value))) { productDocument.Add(field); } documents.Add(productDocument); foreach (var variant in product.VariantList) { var variantDocument = new SearchDocument(); foreach (var field in variant.Select(a => new SearchField(a.Name, a.Value))) { variantDocument.Add(field); } documents.Add(variantDocument); } } documents.TotalCount = documents.Count; //Bug in SearchResults, SearchDocuments.TotalCount is never set implicitly. return(documents); }
private static void ExtractPanelResult(PanelContent pc, IList <PanelResult <Result.Products> > result) { if (pc.Error != null) { var panelResult = new PanelResult <Result.Products>(pc.Error); result.Add(panelResult); return; } if (pc.HasResult && pc.Result().Type == Result.ResultType.Products) { var panelResult = new PanelResult <Result.Products>(pc.Attributes, pc.ResultAsProducts(), pc.Ticket); result.Add(panelResult); return; } foreach (var subPanel in pc.Subpanels) { ExtractPanelResult(subPanel, result); } }