Beispiel #1
0
        /// <summary>
        /// Method to get listing model
        /// </summary>
        /// <param name="pageNumber">page number</param>
        /// <param name="pageSize">page size</param>
        /// <param name="filter">filter</param>
        /// <param name="parentItemId">Parent id when directly access Folder item</param>
        /// <returns>SearchResultsGeneric<ListingSearchResultItem> </returns>
        public SearchResultsGeneric <ListingSearchResultItem> GetListingModel(int pageNumber = -1, int pageSize = -1, string filter = "", string itemId = "", string listItemTemplateId = "", bool showFilters = false, string parentItemId = "")
        {
            List <SearchCondition> yearFolderparentSearchCondition = new List <SearchCondition>();

            listItemTemplateId = SearchHelper.FormatGuid(listItemTemplateId);
            SearchResultsGeneric <ListingSearchResultItem> resultsList       = new SearchResultsGeneric <ListingSearchResultItem>();
            SearchResultsGeneric <ListingSearchResultItem> parentResultsList = new SearchResultsGeneric <ListingSearchResultItem>();
            ID id = null;

            //This is used when the context item from folder template for SEO, so get its parent listing page as context item
            if (!string.IsNullOrEmpty(parentItemId) && !string.IsNullOrEmpty(filter))
            {
                Sitecore.Data.ID.TryParse(parentItemId, out id);
            }
            else//Context item id
            {
                Sitecore.Data.ID.TryParse(itemId, out id);
            }

            if (id.IsNull)
            {
                return(resultsList);
            }
            Item parent = null;

            if (!string.IsNullOrEmpty(parentItemId) && string.IsNullOrEmpty(filter))
            {
                //Filter from parent items
                parent = Sitecore.Context.Database.GetItem(parentItemId);
                yearFolderparentSearchCondition = new List <SearchCondition>
                {
                    new SearchCondition()
                    {
                        Name = CommonConstants.TemplateID, Value = listItemTemplateId, CompareType = CompareType.ExactMatch
                    },
                    new SearchCondition()
                    {
                        Name = Sitecore.ContentSearch.BuiltinFields.Path, Value = SearchHelper.FormatGuid(parentItemId.ToString()), CompareType = CompareType.ExactMatch
                    }
                };
            }
            //Filter current context item childs
            List <SearchCondition> conditions = new List <SearchCondition>
            {
                new SearchCondition()
                {
                    Name = CommonConstants.TemplateID, Value = listItemTemplateId, CompareType = CompareType.ExactMatch
                },
                new SearchCondition()
                {
                    Name = Sitecore.ContentSearch.BuiltinFields.Path, Value = SearchHelper.FormatGuid(id.ToString()), CompareType = CompareType.ExactMatch
                }
            };

            //Get Events of only current year
            if (listItemTemplateId.Equals(SearchHelper.FormatGuid(CommonConstants.EventsTemplateID)))
            {
                conditions.Add(new SearchCondition()
                {
                    Name = CommonConstants.YearFacetField, Value = DateTime.UtcNow.Year.ToString(), CompareType = CompareType.ExactMatch
                });
            }
            yearFolderparentSearchCondition = SearchHelper.AddFilterConditions(filter, yearFolderparentSearchCondition);
            conditions = SearchHelper.AddFilterConditions(filter, conditions);
            List <Facet> facets = new List <Facet>();

            //Facets not required from second request,
            if (pageNumber <= 0 && showFilters)
            {
                // Add Year facet except events and downloads
                if (!listItemTemplateId.Equals(SearchHelper.FormatGuid(CommonConstants.EventsTemplateID)) &&
                    !listItemTemplateId.Equals(SearchHelper.FormatGuid(CommonConstants.DownloadItemTemplateID)))
                {
                    facets.Add(new Facet()
                    {
                        facetField = CommonConstants.YearFacetField, allLabel = Sitecore.Globalization.Translate.Text(CommonConstants.AllYearsKey), minCount = 1
                    });
                }

                // Add Categories facet except Image items (Image Album page)
                if (!listItemTemplateId.Equals(SearchHelper.FormatGuid(CommonConstants.ImageItemTemplateID)))
                {
                    facets.Add(new Facet()
                    {
                        facetField = CommonConstants.CategoriesFacetField, allLabel = Sitecore.Globalization.Translate.Text(CommonConstants.AllCategoriesKey), minCount = 1
                    });
                }
            }


            //Sort Option
            if (parent != null && (parent.TemplateID.Equals(Sitecore.Data.ID.Parse(CommonConstants.NewsListingPageTemplateID)) ||
                                   parent.TemplateID.Equals(Sitecore.Data.ID.Parse(CommonConstants.EventsListingPageTemplateID)) ||
                                   parent.TemplateID.Equals(Sitecore.Data.ID.Parse(CommonConstants.ImageGalleryPageTemplateID)) ||
                                   parent.TemplateID.Equals(Sitecore.Data.ID.Parse(CommonConstants.VideoGalleryTemplateID)) ||
                                   parent.TemplateID.Equals(Sitecore.Data.ID.Parse(CommonConstants.VideoAlbumWithFiltersTemplateID))))
            {
                parentResultsList = _searchManager.GetSearchResults <ListingSearchResultItem>(yearFolderparentSearchCondition, facets, null, 0, 0, false, true, true);
                resultsList       = _searchManager.GetSearchResults <ListingSearchResultItem>(conditions, facets, null, pageNumber, pageSize, false, true);
            }
            else if (listItemTemplateId.Equals(SearchHelper.FormatGuid(CommonConstants.NewsTemplateID)))
            {
                resultsList = _searchManager.GetSearchResults <ListingSearchResultItem>(conditions, facets, null, pageNumber, pageSize, false, true);
            }
            else if (listItemTemplateId.Equals(SearchHelper.FormatGuid(CommonConstants.EventsTemplateID)))
            {
                resultsList = _searchManager.GetSearchResults <ListingSearchResultItem>(conditions, facets, null, pageNumber, pageSize, false, false, true);
            }
            else if (listItemTemplateId.Equals(SearchHelper.FormatGuid(CommonConstants.DownloadItemTemplateID)))
            {
                SortOption sortOption = new SortOption()
                {
                    SortFieldName = CommonConstants.CustomSortorder,
                    SortOrder     = SortOrder.Ascending
                };
                resultsList = _searchManager.GetSearchResults <ListingSearchResultItem>(conditions, facets, sortOption, pageNumber, pageSize, false, false, false);
            }
            else
            {
                resultsList = _searchManager.GetSearchResults <ListingSearchResultItem>(conditions, facets, null, pageNumber, pageSize, true, false);
            }


            //Adding filter "Event Type"(Upcoming and Past events)
            if (listItemTemplateId.Equals(SearchHelper.FormatGuid(CommonConstants.EventsTemplateID)) &&
                pageNumber <= 0 && resultsList != null && resultsList.filters != null)
            {
                List <FilterValues> filterValues = new List <FilterValues>
                {
                    new FilterValues()
                    {
                        id = CommonConstants.AllEvents, label = Sitecore.Globalization.Translate.Text(CommonConstants.AllEvents)
                    },
                    new FilterValues()
                    {
                        id = CommonConstants.Upcoming, label = Sitecore.Globalization.Translate.Text(CommonConstants.UpcomingEvents)
                    },
                    new FilterValues()
                    {
                        id = CommonConstants.Past, label = Sitecore.Globalization.Translate.Text(CommonConstants.PastEvents)
                    }
                };
                resultsList.filters.Add(new Filters()
                {
                    filterLabel = CommonConstants.EventType, filterValues = filterValues
                });
            }
            if (listItemTemplateId.Equals(SearchHelper.FormatGuid(CommonConstants.ImageAlbumPageTemplateID)) ||
                listItemTemplateId.Equals(SearchHelper.FormatGuid(CommonConstants.VideoAlbumWithoutFiltersTemplateID)) ||
                listItemTemplateId.Equals(SearchHelper.FormatGuid(CommonConstants.VideoAlbumWithFiltersTemplateID)))
            {
                string contentItemTemplateId = string.Empty;
                if (listItemTemplateId.Equals(SearchHelper.FormatGuid(CommonConstants.VideoAlbumWithoutFiltersTemplateID)) ||
                    listItemTemplateId.Equals(SearchHelper.FormatGuid(CommonConstants.VideoAlbumWithFiltersTemplateID)))
                {
                    contentItemTemplateId = CommonConstants.VideoItemTemplateID;
                }
                else
                {
                    contentItemTemplateId = CommonConstants.ImageItemTemplateID;
                }
            }
            //Changing the filter based on the template selected(whether it is folder page or listing page)
            if (!string.IsNullOrEmpty(parentItemId) && parentResultsList.filters != null)
            {
                resultsList.filters = parentResultsList.filters;
            }
            return(resultsList);
        }
Beispiel #2
0
        /// <summary>
        /// Method to get listing model
        /// </summary>
        /// <param name="pageNumber">page number</param>
        /// <param name="pageSize">page size</param>
        /// <returns>SearchResultsGeneric<ListingSearchResultItem> </returns>
        public SearchResultsGeneric <ListingSearchResultItem> GetSearchResultsModelObject(int pageNumber = -1, int pageSize = -1, string searchTerm = "*")
        {
            SearchResultsGeneric <ListingSearchResultItem> resultsList = new SearchResultsGeneric <ListingSearchResultItem>();
            List <SearchCondition> conditions = new List <SearchCondition>();

            if (searchTerm.Trim() != "*")
            {
                searchTerm = Regex.Replace(searchTerm, "[^0-9A-Za-z ]", "");
            }

            if (string.IsNullOrWhiteSpace(searchTerm.Trim()))
            {
                searchTerm = "*";
            }

            if (searchTerm == "*")
            {
                conditions.Add(new SearchCondition()
                {
                    Name = CommonConstants.TitleIndexField, Value = searchTerm, CompareType = CompareType.PartialMatch, AddORcondition = true
                });
                conditions.Add(new SearchCondition()
                {
                    Name = CommonConstants.IntroductionIndexField, Value = searchTerm, CompareType = CompareType.PartialMatch, AddORcondition = true
                });
                conditions.Add(new SearchCondition()
                {
                    Name = CommonConstants.ContentIndexField, Value = searchTerm, CompareType = CompareType.PartialMatch, AddORcondition = true
                });
                conditions.Add(new SearchCondition()
                {
                    Name = CommonConstants.RenderingsContentIndexField, Value = searchTerm, CompareType = CompareType.PartialMatch, AddORcondition = true
                });
            }
            conditions.Add(new SearchCondition()
            {
                Name = CommonConstants.TitleIndexField, Value = searchTerm, CompareType = CompareType.ExactMatch, AddORcondition = true
            });
            conditions.Add(new SearchCondition()
            {
                Name = CommonConstants.IntroductionIndexField, Value = searchTerm, CompareType = CompareType.ExactMatch, AddORcondition = true
            });
            conditions.Add(new SearchCondition()
            {
                Name = CommonConstants.ContentIndexField, Value = searchTerm, CompareType = CompareType.ExactMatch, AddORcondition = true
            });
            conditions.Add(new SearchCondition()
            {
                Name = CommonConstants.RenderingsContentIndexField, Value = searchTerm, CompareType = CompareType.ExactMatch, AddORcondition = true
            });

            if (searchTerm != "*")
            {
                conditions.Add(new SearchCondition()
                {
                    Name = CommonConstants.TitleIndexField, Value = searchTerm, CompareType = CompareType.StartsWith, AddORcondition = true
                });
                conditions.Add(new SearchCondition()
                {
                    Name = CommonConstants.IntroductionIndexField, Value = searchTerm, CompareType = CompareType.StartsWith, AddORcondition = true
                });
                conditions.Add(new SearchCondition()
                {
                    Name = CommonConstants.ContentIndexField, Value = searchTerm, CompareType = CompareType.StartsWith, AddORcondition = true
                });
                conditions.Add(new SearchCondition()
                {
                    Name = CommonConstants.RenderingsContentIndexField, Value = searchTerm, CompareType = CompareType.StartsWith, AddORcondition = true
                });
            }


            conditions.Add(new SearchCondition()
            {
                Name = CommonConstants.PageUrl, Value = string.Empty, CompareType = CompareType.IsNotNull
            });
            conditions.Add(new SearchCondition()
            {
                Name = CommonConstants.Title, Value = string.Empty, CompareType = CompareType.IsNotNull
            });
            conditions.Add(new SearchCondition()
            {
                Name = CommonConstants.Title, Value = string.Empty, CompareType = CompareType.IsNotEmpty
            });

            if (!string.IsNullOrWhiteSpace(SitecoreSettings.ExcludeTemplatesFromSearchPage))
            {
                foreach (string val in SitecoreSettings.ExcludeTemplatesFromSearchPage.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
                {
                    conditions.Add(new SearchCondition()
                    {
                        Name = CommonConstants.TemplateID, Value = SearchHelper.FormatGuid(val), CompareType = CompareType.NotEquals
                    });
                }
            }
            if (!string.IsNullOrWhiteSpace(SitecoreSettings.ExcludeItemNamesFromSearchPage))
            {
                foreach (string val in SitecoreSettings.ExcludeItemNamesFromSearchPage.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
                {
                    conditions.Add(new SearchCondition()
                    {
                        Name = CommonConstants.IndexNameField, Value = SearchHelper.FormatGuid(val), CompareType = CompareType.NotEquals
                    });
                }
            }

            conditions = SearchHelper.AddFilterConditions("", conditions);

            resultsList = _searchManager.GetSearchResults <ListingSearchResultItem>(conditions, null, null, pageNumber, pageSize, false, false);

            if (searchTerm != "*" && resultsList != null && resultsList.results != null && resultsList.results.results != null && resultsList.results.results.Count > 0)
            {
                int count = 0;
                foreach (var listItem in resultsList.results.results)
                {
                    resultsList.results.results[count].title       = HighlightKeywords(resultsList.results.results[count].title, searchTerm);
                    resultsList.results.results[count].description = HighlightKeywords(resultsList.results.results[count].description, searchTerm);
                    if (resultsList.results.results[count].description.Contains("<mark>"))
                    {
                        resultsList.results.results[count].description = GetFragment(resultsList.results.results[count].description);
                    }
                    else
                    {
                        resultsList.results.results[count].description = HighlightKeywords(resultsList.results.results[count].renderingsContent, searchTerm);
                        if (resultsList.results.results[count].description.Contains("<mark>"))
                        {
                            resultsList.results.results[count].description = GetFragment(resultsList.results.results[count].description);
                        }
                        else
                        {
                            resultsList.results.results[count].description = HighlightKeywords(resultsList.results.results[count].Content, searchTerm);
                            if (resultsList.results.results[count].description.Contains("<mark>"))
                            {
                                resultsList.results.results[count].description = GetFragment(resultsList.results.results[count].description);
                            }
                        }

                        if (!string.IsNullOrWhiteSpace(resultsList.results.results[count].description) &&
                            !resultsList.results.results[count].description.Contains("<mark>") &&
                            resultsList.results.results[count].description.Length > 150)
                        {
                            resultsList.results.results[count].description = resultsList.results.results[count].description.Substring(0, 150) + "...";
                        }
                    }
                    count++;
                }
            }

            return(resultsList);
        }