コード例 #1
0
        private IQueryCollection AppendPriceQueryIfNeeded(IQueryCollection query)
        {
            var key = "price-range";

            if (query[key].Count == 1)
            {
                var value = query[key][0].Replace(" ", "");

                if (value.Contains("-"))
                {
                    var values = value.Split("-");
                    if (values.Count() != 2)
                    {
                        return(query);
                    }
                    var minPrice = new KeyValuePair <String, StringValues>("minprice", values[0].ToString());
                    var maxPrice = new KeyValuePair <String, StringValues>("maxprice", values[1].ToString());
                    query = query.AppendQueryItem(minPrice);
                    query = query.AppendQueryItem(maxPrice);
                }
                else if (value.Contains("<"))
                {
                    var maxValue = value.Replace("<", "");
                    var maxPrice = new KeyValuePair <String, StringValues>("maxprice", maxValue);
                    query = query.AppendQueryItem(maxPrice);
                }
                else if (value.Contains(">"))
                {
                    var minValue = value.Replace(">", "");
                    var minPrice = new KeyValuePair <String, StringValues>("minprice", minValue);
                    query = query.AppendQueryItem(minPrice);
                }
            }
            return(query);
        }
コード例 #2
0
        /*
         *  Summary:
         *  - Modify query from the request.
         *  - If derived class override the method for further modifying, it should call base method.
         */
        protected virtual Task <IQueryCollection> TransformQuery(IQueryCollection query, RequestContext requestContext)
        {
            // Dictionary<string, StringValues> dict = query.ToDictionary(c => c.Key, c => c);
            switch (requestContext.APIRoute)
            {
            case APIRoute.AdminGetAll:
            case APIRoute.ClientGetAll:

                // Detect if need include items with delete flag
                var includeDeletedKey = "includeDeleted";
                var defaultDeleteFlag = "false";
                if (query.ContainsKey(includeDeletedKey))
                {
                    if (query[includeDeletedKey].Count != 1)
                    {
                        throw new InvalidQueryParamsException();
                    }

                    if (query[includeDeletedKey][0] == "true")
                    {
                        defaultDeleteFlag = "true";
                    }
                }
                var queryItem = new KeyValuePair <string, StringValues>("DeleteFlag", defaultDeleteFlag);
                query = query.AppendQueryItem(queryItem);
                break;

            default:
                break;
            }

            return(Task.FromResult(query));
        }
コード例 #3
0
        public static IQueryCollection AppendQueryItem(
            this IQueryCollection queryCollection,
            string key,
            StringValues values)
        {
            var queryItem = new KeyValuePair <string, StringValues>(key, values);

            return(queryCollection.AppendQueryItem(queryItem));
        }
コード例 #4
0
        private async Task <IQueryCollection> AppendNewQueryIfNeeded(IQueryCollection query)
        {
            var isNewKey = "new";

            if (query[isNewKey].Count == 1)
            {
                var queryParam = query[isNewKey];
                var queryItem  = new KeyValuePair <String, StringValues>("isNew", queryParam[0]);
                query = query.AppendQueryItem(queryItem);
            }
            return(await Task.FromResult(query));
        }
コード例 #5
0
        public IQueryCollection AppendQueryByMappKeysIfNeeded(IQueryCollection query)
        {
            var plainMaps = new Dictionary <String, String>()
            {
                { "new", "isNew" },
                { "sale", "isOnSale" },
            };

            foreach (var kv in plainMaps)
            {
                if (query[kv.Key].Count == 1)
                {
                    var queryParam = query[kv.Key];
                    var queryItem  = new KeyValuePair <String, StringValues>(kv.Value, queryParam[0]);
                    query = query.AppendQueryItem(queryItem);
                }
            }
            return(query);
        }
コード例 #6
0
        private IQueryCollection AppendQueryByNameIfNeeded(IQueryCollection query)
        {
            var queryKeyInfos = new List <(string queryKey, string internalKey, Type type)>()
            {
                (queryKey : "brand", internalKey : "brandId", type : typeof(ShoesBrand)),
                (queryKey : "size", internalKey : "sizeId", type : typeof(Size)),
                (queryKey : "style", internalKey : "styleId", type : typeof(ShoesType)),
                (queryKey : "gender", internalKey : "genderId", type : typeof(Gender))
            };

            foreach (var info in queryKeyInfos)
            {
                if (query[info.queryKey].Count == 1)
                {
                    var paramValue = query[info.queryKey][0];
                    // var entity = await _context.Genders.FirstOrDefaultAsync(g => g.Name.ToLower() == paramValue.ToString().ToLower());
                    // var type = typeof(Gender);
                    //dynamic entity = _context.Query(info.type).Where("o => o.Name == @0", paramValue);
                    dynamic entity = _context.Query(info.type).FirstOrDefault("c => c.Name == @0", paramValue);

                    var id = 0;
                    if (entity != null)
                    {
                        id = entity.Id;
                    }
                    else if (info.queryKey == "gender")
                    {
                        if (paramValue.ToLower() == "nam")
                        {
                            id = 6;
                        }
                        else
                        {
                            id = 7;
                        }
                    }
                    var queryItem = new KeyValuePair <String, StringValues>(info.internalKey, id.ToString());
                    query = query.AppendQueryItem(queryItem);
                }
            }
            return(query);
        }