예제 #1
0
        public async Task <SearchResult <Product> > GetBySearchAsync(string searchTerm,
                                                                     string languageCode,
                                                                     string categoryId,
                                                                     string pageCursor,
                                                                     int pageSize,
                                                                     ProductSortKey sortKey,
                                                                     bool reverse,
                                                                     string currencyCode)
        {
            return(await _grpcCallerService.CallService(_productServiceProvider.GrpcEndpoint, async (grpcChannel) =>
            {
                var client = new ProductService.ProductServiceClient(grpcChannel);
                var response = await client.GetBySearchAsync(new GetBySearchRequest
                {
                    SearchTerm = searchTerm,
                    LanguageCode = languageCode,
                    CategoryId = categoryId,
                    PageCursor = pageCursor,
                    PageSize = pageSize,
                    SortKey = sortKey,
                    Reverse = reverse,
                    CurrencyCode = currencyCode,
                });

                var results = response
                              .Results
                              .Select(x => new CursorNodeResult <Product>
                {
                    Cursor = x.Cursor,
                    Node = x.Node,
                })
                              .ToList();

                return new SearchResult <Product>
                {
                    HasNextPage = response.HasNextPage,
                    HasPreviousPage = response.HasPreviousPage,
                    StartCursor = response.StartCursor,
                    EndCursor = response.EndCursor,
                    TotalResults = response.TotalResults,
                    Results = results,
                };
            }));
        }