public ContentSearchViewModel SearchContent(FilterOptionViewModel filterOptions)
        {
            var model = new ContentSearchViewModel
            {
                FilterOption = filterOptions,
                Hits         = new List <SearchHit>()
            };

            if (!filterOptions.Q.IsNullOrEmpty())
            {
                var siteId            = SiteDefinition.Current.Id;
                var contentReferences = _contentLoader.GetDescendents(ContentReference.StartPage);
                var result            = contentReferences.Select(x => _contentLoader.Get <IContent>(x))
                                        .OfType <FoundationPageData>()
                                        .Where(x => x.Name.ToLowerInvariant().StartsWith(filterOptions.Q))
                                        .Select(x => new SearchHit {
                    Title    = x.Name,
                    Url      = _urlResolver.GetUrl(x.ContentLink),
                    Excerpt  = x.PageDescription,
                    ImageUri = _urlResolver.GetUrl(x.PageImage)
                })
                                        .Skip((filterOptions.Page - 1) * filterOptions.PageSize)
                                        .Take(filterOptions.PageSize);
                model.Hits = result;
            }

            return(model);
        }
        public virtual IHttpActionResult GetContentSearchResults(GetContentSearchResultsRequest request)
        {
            var queryString   = HttpUtility.ParseQueryString(request.QueryString ?? "");
            var CurrentPage   = int.TryParse(queryString[SearchRequestParams.Page], out int page) && page > 0 ? page : 1;
            var SortDirection = queryString[SearchRequestParams.SortDirection] ?? SearchRequestParams.DefaultSortDirection;
            var SortBy        = queryString[SearchRequestParams.SortBy] ?? SearchRequestParams.DefaultSortBy;
            var Keywords      = queryString[SearchRequestParams.Keywords];

            ContentSearchViewModel contentSearchVm = ContentSearchViewService.GetContentSearchViewModel(new GetContentSearchParameter
            {
                Culture                = ComposerContext.CultureInfo,
                PageSize               = SearchConfiguration.MaxItemsPerPage,
                CurrentPage            = CurrentPage,
                PathInfo               = request.CurrentTabPathInfo,
                CurrentSiteOnly        = request.IsCurrentSiteOnly,
                SearchQuery            = Keywords,
                IsCorrectedSearchQuery = false,
                CorrectedSearchQuery   = string.Empty,
                QueryKeys              = queryString?.AllKeys,
                ProductsTabActive      = false,
                SortBy        = SortBy,
                SortDirection = SortDirection
            });

            return(Ok(contentSearchVm));
        }
Exemple #3
0
        public async Task <dynamic> Search(ContentSearchViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Invalid Request"));
            }

            return(await _contentSearchService.SearchAsync(model.Url));
        }
Exemple #4
0
        public virtual ContentSearchViewModel GetContentSearchViewModel(GetContentSearchParameter param)
        {
            using (var conn = new DataConnection(param.Culture))
            {
                var contentTabs = DataFacade.GetData <IContentTab>().Where(c => !string.IsNullOrEmpty(c.DataTypes)).OrderBy(t => t.Order).ToList();
                if (contentTabs == null || contentTabs.Count == 0)
                {
                    return(null);
                }

                var vm = new ContentSearchViewModel();

                foreach (var tab in contentTabs)
                {
                    var isActive      = param.PathInfo == tab.UrlTitle;
                    var searchQuery   = GetSearchQuery(param);
                    var searchRequest = GetSearchRequestForContentTab(param, tab, searchQuery);
                    var result        = WebsiteSearchFacade.Search(searchRequest);

                    vm.Tabs.Add(new ContentSearchTabViewModel
                    {
                        Title         = tab.Title,
                        UrlTitle      = tab.UrlTitle,
                        TabUrl        = GetTabUrl(param, tab, searchQuery),
                        PagesCount    = (int)Math.Ceiling((decimal)result.ResultsFound / param.PageSize),
                        Total         = result.ResultsFound,
                        IsActive      = isActive,
                        SearchResults = result.Entries.Select(x => GetSearchResultsEntryViewModel(x)).ToList(),
                        DataTypes     = tab.DataTypes
                    });

                    if (isActive)
                    {
                        vm.SelectedFacets = GetSelectedFacets(param, result);
                        vm.Facets         = GetFacets(param, result);
                    }
                }

                var sortBys = DataFacade.GetData <ISortOption>().OrderBy(t => t.Order).ToList();
                vm.AvailableSortBys = sortBys;
                vm.SelectedSortBy   = sortBys.Find(o => o.FieldName == param.SortBy && (o.IsReverted && param.SortDirection == "desc" || !o.IsReverted && param.SortDirection == "asc")) ?? sortBys.First();

                vm.SuggestedTabs = GetSuggestedTabs(param, contentTabs);

                return(vm);
            }
        }
Exemple #5
0
        public virtual ContentSearchViewModel GetContentSearchViewModel(GetContentSearchParameter param)
        {
            var contentTabs = DataFacade.GetData <IContentTab>().Where(c => !string.IsNullOrEmpty(c.DataTypes)).OrderBy(t => t.Order).ToList();

            if (contentTabs == null || contentTabs.Count == 0)
            {
                return(null);
            }

            var vm = new ContentSearchViewModel();

            foreach (var tab in contentTabs)
            {
                var isActive      = param.PathInfo == tab.UrlTitle;
                var searchQuery   = GetSearchQuery(param);
                var searchRequest = GetSearchRequestForContentTab(param, tab, searchQuery);
                var result        = WebsiteSearchFacade.Search(searchRequest);

                vm.Tabs.Add(new ContentSearchTabViewModel
                {
                    Title         = tab.Title,
                    UrlTitle      = tab.UrlTitle,
                    TabUrl        = GetTabUrl(param, tab, searchQuery),
                    SearchResults = result,
                    PagesCount    = (int)Math.Ceiling((decimal)result.ResultsFound / param.PageSize),
                    Total         = result.ResultsFound,
                    IsActive      = isActive
                });
            }

            vm.SuggestedTabs = GetSuggestedTabs(param, contentTabs);

            if (vm.ActiveTab != null)
            {
                vm.SelectedFacets = GetSelectedFacets(param, vm.ActiveTab);
                vm.Facets         = GetFacets(param, vm.ActiveTab);
            }

            return(vm);
        }
Exemple #6
0
 public ImportSamplePage()
 {
     NavigationCacheMode = NavigationCacheMode.Enabled;
     DataContext         = new ContentSearchViewModel(App.Services);
     InitializeComponent();
 }