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)); }
public async Task <dynamic> Search(ContentSearchViewModel model) { if (!ModelState.IsValid) { return(BadRequest("Invalid Request")); } return(await _contentSearchService.SearchAsync(model.Url)); }
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); } }
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); }
public ImportSamplePage() { NavigationCacheMode = NavigationCacheMode.Enabled; DataContext = new ContentSearchViewModel(App.Services); InitializeComponent(); }