public Task <MenuProviderPaginatedList> GetPaginatedList(MenuProviderListQuery query) { var paginatedList = new MenuProviderPaginatedList(); var queryable = _context.MenuProviders.AsQueryable(); if (!string.IsNullOrEmpty(query.SearchText)) { queryable.Where(x => x.Title.Contains(query.SearchText)); } if (!string.IsNullOrEmpty(query.SortBy)) { var camelCase = Char.ToUpper(query.SortBy[0]) + query.SortBy.Substring(1); var propertyInfo = typeof(MenuProviderListItem).GetProperty(camelCase); if (query.Descending) { queryable.OrderBy(x => propertyInfo.GetValue(x, null)); } else { queryable.OrderByDescending(x => propertyInfo.GetValue(x, null)); } } paginatedList.Data = queryable .Skip((query.Page - 1) * query.RowsPerPage) .Take(query.RowsPerPage) .Select(x => _mapper.Map <MenuProviderListItem>(x)) .ToList(); paginatedList.TotalRecords = queryable.Count(); return(Task.FromResult(paginatedList)); }
public async Task <IActionResult> GetAll(MenuProviderListQuery query) { var r = await _queryService.GetPaginatedList(query); var list = r.Data; Response.Headers.Add("X-Pagination-TotalRecords", r.TotalRecords.ToString()); return(Ok(list)); }