public async Task <Page <EmployeeViewData> > GetPaginatedResultsAsync(
            int pageSize,
            int currentPage,
            string searchText,
            EmployeeSearchOptions sortBy,
            EmployeeSearchOptions searchBy)
        {
            var filters = new Filters <EmployeeViewData>();

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

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

            var sorts = new Sorts <EmployeeViewData>();

            sorts.Add(sortBy == EmployeeSearchOptions.FirstName, x => x.FirstName);
            sorts.Add(sortBy == EmployeeSearchOptions.LastName, x => x.LastName);

            return(await _dbContext.Employees
                   .Select(e => _mapper.MapToViewModel(e))
                   .PaginateAsync(currentPage, pageSize, sorts, filters));
        }
Beispiel #2
0
 public async Task <Page <EmployeeViewData> > GetPaginatedEntitiesAsync(
     int pageSize,
     int currentPage,
     string searchText,
     EmployeeSearchOptions sortBy,
     EmployeeSearchOptions searchBy)
 {
     return(await _repository.GetPaginatedResultsAsync(pageSize, currentPage, searchText, sortBy, searchBy));
 }
 public async Task <Page <EmployeeViewData> > GetSearchResults(
     int pageSize                   = 10,
     int currentPage                = 1,
     string searchText              = "",
     EmployeeSearchOptions sortBy   = EmployeeSearchOptions.FirstName,
     EmployeeSearchOptions searchBy = EmployeeSearchOptions.FirstName
     )
 {
     return(await _service.GetPaginatedEntitiesAsync(pageSize, currentPage, searchText, sortBy, searchBy));
 }