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()); }
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); }
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 }); }
public async Task <long> CountAsync(AdminSearchCondition searchCondition) { IQueryable <Admin> query = BuildFindQuery(searchCondition); return(await query.LongCountAsync()); }
/// <inheritdoc /> public PagedSearchQuery(AdminSearchCondition searchCondition) : base(searchCondition) { }
public async Task<IActionResult> SearchAdmins([FromBody] AdminSearchCondition searchCondition, CancellationToken cancellationToken = default) { return await ExecuteQueryAsync(new SearchAdminQuery(searchCondition), cancellationToken: cancellationToken); }