public PagedResponse <GetArticlesDto> Execute(ArticlesSearch search) { var query = _context.Articles.Include(x => x.ArticleCategories) .ThenInclude(x => x.Category) .Include(x => x.User) .AsQueryable(); if (!string.IsNullOrEmpty(search.Subject) || !string.IsNullOrWhiteSpace(search.Subject)) { query = query.Where(x => x.Subject.ToLower().Contains(search.Subject.ToLower())); } query = query.Where(x => x.IsActive == true); var skipCount = search.PerPage * (search.Page - 1); var response = new PagedResponse <GetArticlesDto> { TotalCount = query.Count(), CurrentPage = search.Page, ItemsPerPage = search.PerPage, Items = query.Skip(skipCount) .Take(search.PerPage) .Select(a => new GetArticlesDto { Id = a.Id, Subject = a.Subject, Text = a.Text, Description = a.Description, ArticleCategories = a.ArticleCategories.Select(ac => new GetArticlesCategoriesDto { Id = ac.CategoryId, Name = ac.Category.Name }), User = a.User.FirstName + ' ' + a.User.FirstName }) }; return(response); }
public IActionResult Get([FromQuery] ArticlesSearch search, [FromServices] IGetArticlesQuery query) { return(Ok(executor.ExecuteQuery(query, search))); }