Example #1
0
        public virtual async Task <GetArticleListOutput> GetArticleWithFilter(GetArticleListFilter filter)
        {
            var query = _blogManager.GetAll().AsEnumerable()
                        .WhereIf(filter.UserId != 0, a => a.CreatorUserId == filter.UserId)
                        .WhereIf(!filter.Keyword.IsNullOrWhiteSpace(), a =>
                                 a.Article.Content.Contains(filter.Keyword) || a.Article.Title.ToLower().Contains(filter.Keyword.ToLower()))
                        .ToList();

            return(await Task.Run(() => new GetArticleListOutput
            {
                AllResultCount = query.Count,
                Articles = query
                           .Skip(filter.SkipCount)
                           .Take(filter.MaxResultCount)
                           .Select(a => new GetArticleListDto
                {
                    Id = a.Id,

                    Title = a.Article.Title,
                    Content = string.Join("", a.Article.Content.Take(ListContentLength)),
                    Image = new Regex(@"!\[.*?\]\((.*?)\)").Match(a.Article.Content).Groups[1].Value,

                    CreationTime = a.CreationTime,
                    CreatorUserId = a.CreatorUserId ?? AppConsts.FallBackUserId
                })
                           .OrderByDescending(a => a.CreationTime)
            }));
        }
Example #2
0
        public async Task <ActionResult> Index(int page, long user, string keyword)
        {
            var filter = new GetArticleListFilter
            {
                MaxResultCount = PageSize,
                SkipCount      = (page <= 1 ? 0 : page - 1) * PageSize,
                UserId         = user,
                Keyword        = keyword
            };
            var result = await _articleAppService.GetArticleWithFilter(filter);

            return(View(new IndexViewModel
            {
                Articles = result,
                Filter = filter
            }));
        }