public async Task <IList <SearchResultBlogPostViewModel> > HandleAsync(GetSearchResultBlogPostsBySearchTextViewModelQuery query) { var posts = await _context.BlogPosts .AsNoTracking() .FromSql("SELECT * from [dbo].[BlogPost] WHERE Contains((Content, Description, Title), {0})", query.SearchText) .Where(bp => bp.Public == true && bp.PublishOn < DateTime.Now) .OrderByDescending(bp => bp.PublishOn) .ThenByDescending(bp => bp.ModifiedAt) .Include(bp => bp.Author) .Include(bp => bp.Comments) .Include(bp => bp.BlogPostCategory) .ThenInclude(bpc => bpc.Category) .ToListAsync(); var bps = new List <SearchResultBlogPostViewModel>(); foreach (var post in posts) { var categories = post.BlogPostCategory.Select(c => c.Category).ToList(); var vsrbpvm = new SearchResultBlogPostViewModel() { BlogPost = post, Categories = categories }; bps.Add(vsrbpvm); } return(bps); }
public async Task <IActionResult> Search(string searchText) { var search = "\"*" + searchText + "*\""; var gbpbst = new GetSearchResultBlogPostsBySearchTextViewModelQuery() { SearchText = search }; IEnumerable <SearchResultBlogPostViewModel> bps = null; try { bps = await _qpa.ProcessAsync(gbpbst); } catch (Exception e) { _logger.LogError(0, e, "Exception during search!"); bps = new List <SearchResultBlogPostViewModel>(); } var vsrvm = new SearchResultsViewModel() { SearchTerm = searchText, BlogPosts = bps }; return(View(vsrvm)); }
public async Task <IActionResult> Search(string searchText) { var search = "\"*" + searchText + "*\""; GetSearchResultBlogPostsBySearchTextViewModelQuery gbpbst = new GetSearchResultBlogPostsBySearchTextViewModelQuery() { SearchText = search }; var bps = await _qpa.ProcessAsync(gbpbst); var vsrvm = new SearchResultsViewModel() { SearchTerm = searchText, BlogPosts = bps }; return(View(vsrvm)); }