private void AddNativeQueryString <TSource>(PropertyInfo prop, TSource source, string path = "")
        {
            var fullPath = GetFullPath(prop, path);

            var propValue = prop.GetValue(source);

            if (propValue == null)
            {
                return;
            }

            var propValueResult = prop.GetValue(source);

            if (prop.PropertyType == typeof(DateTime?))
            {
                propValueResult = ((DateTime?)propValueResult).GetValueOrDefault().ToString("yyyy-MM-dd");
            }

            if (prop.PropertyType == typeof(DateTime))
            {
                propValueResult = ((DateTime)propValueResult).ToString("yyyy-MM-dd");
            }

            QueryStringCollection.Add(fullPath.ToString(), propValueResult.ToString());
        }
Exemplo n.º 2
0
        internal QueryStringCollection ToQueryString()
        {
            var result = new QueryStringCollection();

            foreach (var property in GetType().GetProperties())
            {
                var value = property.GetValue(this);

                if (value != null)
                {
                    result.Add(ToSnakeCase(property.Name), value.ToString());
                }
            }

            return result;
        }
        /// <summary>
        /// Creates an query string for a facet
        /// </summary>
        /// <param name="facetQuery">The facet query.</param>
        /// <param name="facetName">Name of the facet.</param>
        /// <param name="facetValue">The facet value.</param>
        /// <returns>The query string for the facet.</returns>
        private static string GetFacetQueryString(string facetQuery, string facetName, string facetValue)
        {
            var facetCollection = new QueryStringCollection();

            if (!string.IsNullOrEmpty(facetQuery))
            {
                facetCollection.Parse(HttpUtility.UrlDecode(facetQuery));
            }

            if (facetCollection.Contains(facetName))
            {
                var facetQueryValues = facetCollection[facetName];

                if (facetQueryValues.Contains(facetValue))
                {
                    var newFacetQueryValues = string.Empty;
                    var facetValues         = facetQueryValues.Split('|').Where(p => !string.Equals(p, facetValue, StringComparison.OrdinalIgnoreCase)).ToList();

                    if (facetValues.Count() > 0)
                    {
                        facetCollection.Set(facetName, string.Join("|", facetValues));
                    }
                    else
                    {
                        facetCollection.Remove(facetName);
                    }
                }
                else
                {
                    facetCollection.Set(facetName, facetQueryValues + StorefrontConstants.QueryStrings.FacetsSeparator + facetValue);
                }
            }
            else
            {
                facetCollection.Add(facetName, facetValue);
            }

            return(facetCollection.ToString());
        }
        private void AddSimpleQueryString <TSource>(TSource source, string path = "")
        {
            var fullPath = GetFullPathWithoutPropertyInfo(path);

            QueryStringCollection.Add(fullPath.ToString(), source.ToString());
        }
        /// <summary>
        /// Creates an query string for a facet
        /// </summary>
        /// <param name="facetQuery">The facet query.</param>
        /// <param name="facetName">Name of the facet.</param>
        /// <param name="facetValue">The facet value.</param>
        /// <returns>The query string for the facet.</returns>
        private static string GetFacetQueryString(string facetQuery, string facetName, string facetValue)
        {
            var facetCollection = new QueryStringCollection();

            if (!string.IsNullOrEmpty(facetQuery))
            {
                facetCollection.Parse(HttpUtility.UrlDecode(facetQuery));
            }

            if (facetCollection.Contains(facetName))
            {
                var facetQueryValues = facetCollection[facetName];

                if (facetQueryValues.Contains(facetValue))
                {
                    var newFacetQueryValues = string.Empty;
                    var facetValues = facetQueryValues.Split('|').Where(p => !string.Equals(p, facetValue, StringComparison.OrdinalIgnoreCase)).ToList();

                    if (facetValues.Count() > 0)
                    {
                        facetCollection.Set(facetName, string.Join("|", facetValues));
                    }
                    else
                    {
                        facetCollection.Remove(facetName);
                    }
                }
                else
                {
                    facetCollection.Set(facetName, facetQueryValues + StorefrontConstants.QueryStrings.FacetsSeparator + facetValue);
                }
            }
            else
            {
                facetCollection.Add(facetName, facetValue);
            }

            return facetCollection.ToString();
        }
Exemplo n.º 6
0
        internal static NameValueCollection InternalParseQueryString(string query, Encoding encoding)
        {
            int len;
              if (query == null || (len = query.Length) == 0 || (len == 1 && query[0] == '?'))
            return new NameValueCollection (1);

              if (query[0] == '?')
            query = query.Substring (1);

              var res = new QueryStringCollection ();
              var components = query.Split ('&');
              foreach (var component in components) {
            var i = component.IndexOf ('=');
            if (i > -1) {
              var name = UrlDecode (component.Substring (0, i), encoding);
              var val = component.Length > i + 1
                    ? UrlDecode (component.Substring (i + 1), encoding)
                    : String.Empty;

              res.Add (name, val);
            }
            else {
              res.Add (null, UrlDecode (component, encoding));
            }
              }

              return res;
        }
 public void AddQueryString(string key, string value)
 {
     QueryStringCollection.Add(key, value);
 }