コード例 #1
0
        public async Task <IReadOnlyCollection <Admin> > FindAsync(AdminSearchCondition searchCondition, string sortProperty)
        {
            IQueryable <Admin> query = BuildFindQuery(searchCondition);

            query = searchCondition.ListSortDirection == ListSortDirection.Ascending
                ? query.OrderBy(sortProperty)
                : query.OrderByDescending(sortProperty);

            return(await query.Page(searchCondition.Page, searchCondition.PageSize).ToListAsync());
        }
コード例 #2
0
        private IQueryable <Admin> BuildFindQuery(AdminSearchCondition searchCondition)
        {
            IQueryable <Admin> query = dbContext.Admins;

            if (searchCondition.Login.Any())
            {
                foreach (var loginPerson in searchCondition.Login)
                {
                    var upperLoginPerson = loginPerson.ToUpper().Trim();
                    query = query.Where(x =>
                                        x.Login != null && x.Login.ToUpper().Contains(upperLoginPerson));
                }
            }

            return(query);
        }
コード例 #3
0
        public async Task <PagedResponse <FoundAdminDTO> > Handle(SearchAdminQuery request, CancellationToken cancellationToken)
        {
            AdminSearchCondition searchCondition = new AdminSearchCondition()
            {
                Login         = GetFilterValues(request.SearchCondition.Login),
                Page          = request.SearchCondition.Page,
                PageSize      = request.SearchCondition.PageSize,
                SortDirection = request.SearchCondition.SortDirection,
                SortProperty  = request.SearchCondition.SortProperty
            };

            var sortProperty = GetSortProperty(searchCondition.SortProperty);
            IReadOnlyCollection <Admin> foundAdmin = await adminService.FindAsync(searchCondition, sortProperty);

            FoundAdminDTO[] mappedAdmins = foundAdmin.Select(MapToFoundAdmin).ToArray();
            var             totalCount   = await adminService.CountAsync(searchCondition);

            return(new PagedResponse <FoundAdminDTO>
            {
                Items = mappedAdmins,
                TotalCount = totalCount
            });
        }
コード例 #4
0
        public async Task <long> CountAsync(AdminSearchCondition searchCondition)
        {
            IQueryable <Admin> query = BuildFindQuery(searchCondition);

            return(await query.LongCountAsync());
        }
コード例 #5
0
 /// <inheritdoc />
 public PagedSearchQuery(AdminSearchCondition searchCondition)
     : base(searchCondition)
 {
 }
コード例 #6
0
 public async Task<IActionResult> SearchAdmins([FromBody] AdminSearchCondition searchCondition, CancellationToken cancellationToken = default)
 {
     return await ExecuteQueryAsync(new SearchAdminQuery(searchCondition), cancellationToken: cancellationToken);
 }