public async Task <IReadOnlyCollection <Publisher> > FindAsync(PublisherSearchCondition searchCondition, string sortProperty) { IQueryable <Publisher> query = BuildFindQuery(searchCondition); query = searchCondition.ListSortDirection == ListSortDirection.Ascending ? query.OrderBy(sortProperty) : query.OrderByDescending(sortProperty); return(await query.Page(searchCondition.Page, searchCondition.PageSize).ToListAsync()); }
private IQueryable <Publisher> BuildFindQuery(PublisherSearchCondition searchCondition) { IQueryable <Publisher> query = dbContext.Publishers; if (searchCondition.Name.Any()) { foreach (var name in searchCondition.Name) { var upperName = name.ToUpper().Trim(); query = query.Where(x => x.Name != null && x.Name.ToUpper().Contains(upperName)); } } return(query); }
public async Task <PagedResponse <FoundPublisherDTO> > Handle(SearchPublisherQuery request, CancellationToken cancellationToken) { PublisherSearchCondition searchCondition = new PublisherSearchCondition() { Name = GetFilterValues(request.SearchCondition.Name), Page = request.SearchCondition.Page, PageSize = request.SearchCondition.PageSize, SortDirection = request.SearchCondition.SortDirection, SortProperty = request.SearchCondition.SortProperty }; var sortProperty = GetSortProperty(searchCondition.SortProperty); IReadOnlyCollection <Publisher> foundPublisher = await publisherService.FindAsync(searchCondition, sortProperty); FoundPublisherDTO[] mappedPublisher = foundPublisher.Select(MapToFoundPublisherDTO).ToArray(); var totalCount = await publisherService.CountAsync(searchCondition); return(new PagedResponse <FoundPublisherDTO> { Items = mappedPublisher, TotalCount = totalCount }); }
public async Task <long> CountAsync(PublisherSearchCondition searchCondition) { IQueryable <Publisher> query = BuildFindQuery(searchCondition); return(await query.LongCountAsync()); }
public async Task <IActionResult> SearchPublisher([FromBody] PublisherSearchCondition searchCondition, CancellationToken cancellationToken = default) { return(await ExecuteQueryAsync(new SearchPublisherQuery(searchCondition), cancellationToken : cancellationToken)); }