Beispiel #1
0
        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());
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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
            });
        }
Beispiel #4
0
        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));
 }