Beispiel #1
0
        public async Task <List <Post> > GetPostsAsync(PostFilters.GetAllPost filter = null, PaginationFilter paginationFilter = null)
        {
            var queryable = _dataContext.Posts.AsQueryable();

            if (paginationFilter == null)
            {
                return(await queryable.Include(x => x.Tags).ToListAsync());
            }

            queryable = AddFiltersOnQuery(filter, queryable);

            var skip = (paginationFilter.PageNumber - 1) * paginationFilter.PageSize;

            return(await queryable.Include(x => x.Tags)
                   .Skip(skip).Take(paginationFilter.PageSize).ToListAsync());
        }
Beispiel #2
0
        private static IQueryable <Post> AddFiltersOnQuery(PostFilters.GetAllPost filter, IQueryable <Post> queryable)
        {
            if (!string.IsNullOrEmpty(filter?.UserId))
            {
                queryable = queryable.Where(x => x.UserId == filter.UserId);
            }

            if (!string.IsNullOrEmpty(filter?.PostName))
            {
                queryable = queryable.Where(x => x.Name == filter.PostName);
            }

            if (!string.IsNullOrEmpty(filter?.Tags))
            {
                queryable = queryable.Where(x => x.Tags.Any(xx => xx.TagName == filter.Tags));
            }
            return(queryable);
        }