Пример #1
0
        public static IQueryable <Post> SetFilter(
            this IQueryable <Post> query,
            AdminPostIndexFilter filter)
        {
            if (!filter.LangKey.IsNullOrEmpty())
            {
                query = query.Where(_ => _.Language.LangKey.ToLower() == filter.LangKey.ToLower());
            }

            if (!filter.Title.IsNullOrEmpty())
            {
                query = query.Where(_ => _.Title.ToLower() == filter.Title.ToLower());
            }

            if (filter.CategoryId.HasValue)
            {
                query = query.Where(_ => _.CategoryId == filter.CategoryId.Value);
            }

            if (filter.Status.HasValue)
            {
                query = query.Where(_ => _.Status == filter.Status.Value);
            }

            if (filter.UserId.HasValue)
            {
                query = query.Where(_ => _.CreatorUserId == filter.UserId.Value ||
                                    _.ModifierUserId == filter.UserId.Value);
            }

            return(query);
        }
Пример #2
0
        public async Task <IActionResult> Index(string postType)
        {
            var filter = new AdminPostIndexFilter {
                PostTypeSlug = postType,
                PageIndex    = 0,
                PageSize     = 10,
                OrderKey     = "ordernum"
            };
            var result = await _postService.GetAdminIndexAsync(filter);

            var model = result.Adapt <AdminPostIndexViewModel>();

            return(View(model));
        }
Пример #3
0
        public async Task <AdminPostIndexDto> GetAdminIndexAsync(
            AdminPostIndexFilter filter)
        {
            var postType = await _postTypeRepository
                           .GetBySlugAsync(filter.PostTypeSlug);

            if (postType == null)
            {
                throw new PostTypeNotFoundException();
            }

            var result = new AdminPostIndexDto {
                PostTypeSlug  = postType.Slug,
                PostTypeTitle = postType.Title
            };

            var query = _repository
                        .Query()
                        .Include(_ => _.Language)
                        .Include(_ => _.CreatorUser)
                        .Include(_ => _.ModifierUser)
                        .Include(_ => _.Category)
                        .Include(_ => _.PostTags)
                        .ThenInclude(_ => _.Tag)
                        .Where(_ => _.PostTypeId == postType.Id)
                        .Where(_ => !_.IsComponent);

            result.DataSource.TotalCount = await query.CountAsync();

            result.DataSource.PageIndex = filter.PageIndex;
            result.DataSource.PageSize  = filter.PageSize;

            query = query.SetFilter(filter)
                    .Skip(filter.StartIndex)
                    .Take(filter.PageSize);

            result.DataSource.Items = await query
                                      .Select(_ => _.Adapt <AdminPostIndexItemDto>())
                                      .ToListAsync();

            return(await Task.FromResult(result));
        }