コード例 #1
0
 public ApiParameters(ApiParameters apiParameters)
 {
     Id          = apiParameters.Id;
     ParentId    = apiParameters.ParentId;
     Fields      = apiParameters.Fields;
     Query       = apiParameters.Query;
     QueryBy     = apiParameters.QueryBy;
     Page        = apiParameters.Page;
     Limit       = apiParameters.Limit;
     Summary     = apiParameters.Summary;
     Order       = apiParameters.Order;
     OrderBy     = apiParameters.OrderBy;
     Pagination  = apiParameters.Pagination;
     PrettyPrint = apiParameters.PrettyPrint;
 }
コード例 #2
0
        public SearchParameters GetSearchParameters(ApiParameters apiParameters)
        {
            var searchParameters = new SearchParameters
            {
                IncludeTotalResultCount = true,
                SearchMode = SearchMode.Any,
                Top        = apiParameters.Limit,
                Skip       = (apiParameters.Page - 1) * apiParameters.Limit,
                QueryType  = QueryType.Full
            };

            if (apiParameters.IsSearchQuery())
            {
                searchParameters.SearchFields = apiParameters.GetSplittedQueryBy();
            }

            var orderBy = "";

            if (!string.IsNullOrWhiteSpace(apiParameters.OrderBy))
            {
                var validOrderByValues = new Dictionary <string, string>
                {
                    { "createdat", "createdAt" },
                    { "distance", "distance" },
                    { "popularity", "numberOfViews" },
                    { "price", "priceWithTaxAndDiscount" },
                    { "size", "overallSize" }
                };

                var orderByLowerCase = apiParameters.OrderBy.ToLowerInvariant();

                if (!validOrderByValues.ContainsKey(orderByLowerCase))
                {
                    orderBy = "createdAt desc";
                }
                else if (!orderByLowerCase.Equals("distance"))
                {
                    orderBy = validOrderByValues[orderByLowerCase] + " ";

                    if (orderByLowerCase.Equals("popularity"))
                    {
                        orderBy += "desc";
                    }
                    else
                    {
                        orderBy += (apiParameters.IsOrderDescending() ? "desc" : "asc");
                    }
                }
            }

            if (string.IsNullOrWhiteSpace(orderBy))
            {
                orderBy = "createdAt desc";
            }

            searchParameters.OrderBy = new List <string> {
                orderBy
            };

            return(searchParameters);
        }