Exemplo n.º 1
0
        public void ApplySelectedFilterTags(IDictionary <string, ISet <string> > tags)
        {
            if (tags != null)
            {
                var cultureInfo = new Guid(_request.LanguageId).GetLanguage()?.CultureInfo;
                foreach (var tag in tags.Where(x => x.Value.Count > 0))
                {
                    var tagName = tag.Key.GetFieldDefinitionForProducts()?.GetTagName(cultureInfo) ?? tag.Key;
                    if (tag.Value.Count > 1)
                    {
                        var tagClause = new OptionalTagClause();
                        foreach (var tagValue in tag.Value)
                        {
                            var value = string.Concat("\"", tagValue, "\"");
                            tagClause.Tags.Add(new Tag(tagName, value.ToLower(CultureInfo.CurrentCulture))
                            {
                                Analyzer = "keyword"
                            });
                        }

                        _request.FilterTags.Add(tagClause);
                    }
                    else
                    {
                        _request.FilterTags.Add(new Tag(tagName, string.Concat("\"", tag.Value.First().ToLower(CultureInfo.CurrentCulture), "\""))
                        {
                            Analyzer = "keyword"
                        });
                    }
                }
            }
        }
Exemplo n.º 2
0
        public void ApplyFreeTextSearchTags()
        {
            var text = _searchQuery.Text;

            if (string.IsNullOrEmpty(text))
            {
                return;
            }

            var textTermClause = new MandatoryTagClause();

            foreach (var term in FilterTerms(SearchStringHelper.ExtractTerms(text)))
            {
                var textClause = new OptionalTagClause();

                textClause.Tags.Add(new Tag(Foundation.Search.Constants.TagNames.Body, term)
                {
                    AllowFuzzy = true
                });
                textClause.Tags.Add(new Tag(Foundation.Search.Constants.TagNames.Body, term + "*"));
                textClause.Tags.Add(new Tag(Foundation.Search.Constants.TagNames.Body, "*" + term));
                textClause.Tags.Add(new Tag(Foundation.Search.Constants.TagNames.Body, term));

                if (textClause.TagsExist)
                {
                    textTermClause.Tags.Add(textClause);
                }
            }

            if (textTermClause.TagsExist)
            {
                _request.QueryTags.Add(textTermClause);
            }
        }
Exemplo n.º 3
0
        public void ApplySelectedFilterCategories()
        {
            if (_searchQuery.Category.Count > 0)
            {
                var op = new OptionalTagClause();
                foreach (var item in _searchQuery.Category)
                {
                    op.Tags.Add(new Tag(TagNames.CategorySystemId, item));
                }

                _request.FilterTags.Add(op);
            }
        }
Exemplo n.º 4
0
        public void ApplyOrganizationSearchTags()
        {
            if (_personStorage.CurrentSelectedOrganization != null)
            {
                var tagClause = new OptionalTagClause();
                tagClause.Tags.Add(new Tag(_organizationPointer, Guid.Empty));
                tagClause.Tags.Add(new Tag(_organizationPointer, _personStorage.CurrentSelectedOrganization.SystemId));

                _request.FilterTags.Add(tagClause);
            }
            else
            {
                _request.FilterTags.Add(new Tag(_organizationPointer, Guid.Empty));
            }
        }
Exemplo n.º 5
0
        public void AddPriceFilterTags(SearchQuery searchQuery, QueryRequest request)
        {
            if (searchQuery.ContainsPriceFilter())
            {
                var priceListSystemIds = _priceListForUser.Value;
                var campaignSystemIds  = _campaignsForUser.Value;
                var allPrices          = new List <(int Min, int Max)>(searchQuery.PriceRanges);
                var countryId          = _requestModelAccessor.RequestModel.CountryModel.SystemId;

                var tagClause = new OptionalTagClause();
                foreach (var item in priceListSystemIds)
                {
                    var name = _requestModelAccessor.RequestModel.Cart.IncludeVAT
                        ? TagNames.GetTagNameForPriceIncludingVAT(item, countryId)
                        : TagNames.GetTagNameForPriceExludingVAT(item, countryId);

                    request.ReadTags.Add(name);
                    foreach (var priceItem in allPrices)
                    {
                        tagClause.Tags.Add(new RangeTag(name, priceItem.Min, priceItem.Max));
                    }
                }

                foreach (var item in campaignSystemIds)
                {
                    var name = FilteringConstants.GetCampaignTagName(item);
                    request.ReadTags.Add(name);
                    foreach (var priceItem in allPrices)
                    {
                        tagClause.Tags.Add(new RangeTag(name, priceItem.Min, priceItem.Max));
                    }
                }

                if (tagClause.TagsExist)
                {
                    request.FilterTags.Add(tagClause);
                }
            }
        }
Exemplo n.º 6
0
        public QueryRequest GetPagesTaggedWithMetadataQueryRequest(List<Metadata> requiredMetadatas, List<Metadata> optionalMetadatas, Guid parentPageId, Guid webSiteId, SortType sortType, int pageIndex, int pageSize, Guid languageId, SecurityToken token)
        {
            var request = new QueryRequest(languageId, SearchDomains.Pages, token);

            // Make sure page is searchable
            request.FilterTags.Add(new Tag(TagNames.IsSearchable, bool.TrueString));

            // Make sure pages are published
            request.FilterTags.Add(new Tag(TagNames.IsPublished, bool.TrueString));

            if (parentPageId != Guid.Empty)
            {
                // Only search pages under specified page
                request.FilterTags.Add(new Tag(TagNames.PageParentTreeId, parentPageId));
            }

            if (webSiteId != Guid.Empty)
            {
                // Only search pages under specified web site
                request.FilterTags.Add(new Tag(TagNames.WebSiteId, webSiteId));
            }

            // Add required metadatas as filter
            foreach (Metadata metadata in requiredMetadatas)
            {
                request.FilterTags.Add(new Tag(TagNames.GetTagNameForProperty(Metadata.PropertyNameSelectedMetadata), metadata.ID));
            }

            if (optionalMetadatas != null && optionalMetadatas.Count > 0)
            {
                // Add optional metadatas
                OptionalTagClause optionalMetadatasClause = new OptionalTagClause();
                foreach (Metadata metadata in optionalMetadatas)
                {
                    optionalMetadatasClause.FilterTags.Add(new Tag(TagNames.GetTagNameForProperty(Metadata.PropertyNameSelectedMetadata), metadata.ID));
                }
                request.FilterTags.Add(optionalMetadatasClause);
            }

            request.Paging = GetPaging(pageIndex, pageSize);

            Sorting sorting = GetSortType(sortType);

            if (sorting != null)
            {
                request.Sortings.Add(sorting);
            }

            return request;
        }