public async Task<ProductSearchResponse> ProductSearch(PagedRequest<ProductSearchRequest> request) { return await Task.Run(() => { _productHelper = new ProductHelper(); var searchResult = _productHelper.SearchByKeyword(request); var result = new ProductSearchResponse(); if (request.Data.NeedAggregation) { foreach (var agg in searchResult.Aggregation.Aggregations) { foreach (KeyedBucket item in ((BucketAggregate)agg.Value).Items) { switch (agg.Key) { case "agg_brand": result.BrandList.Add(item.Key); break; case "agg_category_level_3": result.CategoryList.Add(item.Key); break; case "agg_tag": result.TagList.Add(item.Key); break; } } } } foreach (var product in searchResult.Data) { result.Products.Add(product.ToSimpleModel()); } var userName = User.Identity.IsAuthenticated ? User.Identity.Name : Const.UnAuthorizedUserId; Task.Run(async () => { var helper = new SearchHistoryIndexHelper(); await helper.IndexDoc(new Search.IndexManager.Documents.SearchHistoryDoc { Keyword = request.Data.Keyword, UserName = userName, SearchType = Search.IndexManager.Documents.SearchType.product }); }); return result; }); }
public ProductTest() { helper = new ProductHelper(); }