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)); }
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)); }
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)); }