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);
        }
示例#2
0
        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));
        }
示例#3
0
        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));
        }