Exemplo n.º 1
0
        private static IFilter GetPriceRangeFilterRecursive(int pricelistNumber, string commonFieldName, IList <string> pricelists, string lower, string upper, bool includeLower, bool includeUpper)
        {
            IFilter result = null;

            if (pricelists.IsNullOrEmpty())
            {
                result = CreateRangeFilter(commonFieldName, lower, upper, includeLower, includeUpper);
            }
            else if (pricelistNumber < pricelists.Count)
            {
                // Create negative query for previous pricelist
                IFilter previousPricelistQuery = null;
                if (pricelistNumber > 0)
                {
                    var previousFieldName = StringsHelper.JoinNonEmptyStrings("_", commonFieldName, pricelists[pricelistNumber - 1]).ToLowerInvariant();
                    previousPricelistQuery = CreateRangeFilter(previousFieldName, "0", null, false, false);
                }

                // Create positive query for current pricelist
                var currentFieldName      = StringsHelper.JoinNonEmptyStrings("_", commonFieldName, pricelists[pricelistNumber]).ToLowerInvariant();
                var currentPricelistQuery = CreateRangeFilter(currentFieldName, lower, upper, includeLower, includeUpper);

                // Get query for next pricelist
                var nextPricelistQuery = GetPriceRangeFilterRecursive(pricelistNumber + 1, commonFieldName, pricelists, lower, upper, includeLower, includeUpper);

                result = previousPricelistQuery.Not().And(currentPricelistQuery.Or(nextPricelistQuery));
            }

            return(result);
        }
Exemplo n.º 2
0
        public static IFilter CreatePriceRangeFilter(string currency, IList <string> pricelists, string lower, string upper, bool includeLower, bool includeUpper)
        {
            var commonFieldName = StringsHelper.JoinNonEmptyStrings("_", "price", currency).ToLowerInvariant();
            var result          = GetPriceRangeFilterRecursive(0, commonFieldName, pricelists, lower, upper, includeLower, includeUpper);

            return(result);
        }
        public static IList <string> GetOutlines(this CatalogSearchCriteriaBase criteria)
        {
            var result = criteria
                         .GetRawOutlines()
                         .Select(outline => StringsHelper.JoinNonEmptyStrings("/", criteria.CatalogId, outline).ToLowerInvariant())
                         .Distinct(StringComparer.OrdinalIgnoreCase)
                         .ToArray();

            return(result);
        }
        public static IList <string> GetPriorityFields(this CatalogSearchCriteriaBase criteria)
        {
            var allNames = criteria
                           .GetRawOutlines()
                           .Select(outline => StringsHelper.JoinNonEmptyStrings("_", "priority", criteria.CatalogId, outline.Split('/').LastOrDefault()).ToLowerInvariant())
                           .ToList();

            allNames.Add("priority");

            var result = allNames.Distinct(StringComparer.OrdinalIgnoreCase).ToArray();

            return(result);
        }