Ejemplo n.º 1
0
        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));
        }