public async Task <Page <OfficeViewData> > GetPaginatedEntitiesAsync(
     int pageSize,
     int currentPage,
     string searchText,
     OfficeSearchOptions sortBy,
     OfficeSearchOptions searchBy)
 {
     return(await _repository.GetPaginatedResultsAsync(pageSize, currentPage, searchText, sortBy, searchBy));
 }
示例#2
0
 public async Task <Page <OfficeViewData> > GetSearchResults(
     int pageSize                 = 10,
     int currentPage              = 1,
     string searchText            = "",
     OfficeSearchOptions sortBy   = OfficeSearchOptions.City,
     OfficeSearchOptions searchBy = OfficeSearchOptions.City
     )
 {
     return(await _service.GetPaginatedEntitiesAsync(pageSize, currentPage, searchText, sortBy, searchBy));
 }
示例#3
0
        public async Task <Page <OfficeViewData> > GetPaginatedResultsAsync(
            int pageSize,
            int currentPage,
            string searchText,
            OfficeSearchOptions sortBy,
            OfficeSearchOptions searchBy)
        {
            var filters = new Filters <OfficeViewData>();

            switch (searchBy)
            {
            case OfficeSearchOptions.Country:
                filters.Add(!string.IsNullOrEmpty(searchText), x => x.Country.Contains(searchText));
                break;

            case OfficeSearchOptions.Street:
                filters.Add(!string.IsNullOrEmpty(searchText), x => x.Street.Contains(searchText));
                break;

            case OfficeSearchOptions.City:
            default:
                filters.Add(!string.IsNullOrEmpty(searchText), x => x.City.Contains(searchText));
                break;
            }

            var sorts = new Sorts <OfficeViewData>();

            sorts.Add(sortBy == OfficeSearchOptions.City, x => x.City);
            sorts.Add(sortBy == OfficeSearchOptions.Country, x => x.Country);
            sorts.Add(sortBy == OfficeSearchOptions.Street, x => x.Street);

            return(await _dbContext.Offices
                   .Select(o => new OfficeViewData
            {
                Id = o.Id,
                CompanyId = o.CompanyId,
                Country = o.Country,
                City = o.City,
                Street = o.Street,
                StreetNumber = o.StreetNumber,
                Employees = _dbContext.Employees.Where(e => e.OfficeId == o.Id).Count()
            })
                   .PaginateAsync(currentPage, pageSize, sorts, filters));
        }