public async Task <IActionResult> GetAssets(QueryParams queryParams = null) { var pageSize = queryParams?.PageSize ?? DefaultPageSize; var pageNumber = queryParams?.PageNumber ?? DefaultPageNumber; pageSize = pageSize > MaxPageSize ? MaxPageSize : pageSize; var query = GetFilteredQuery(_context.Asset, queryParams); //TODO: Convert to service var result = await query .Where(a => !a.IsDeleted) .Include(a => a.Country) .Include(a => a.MimeType) .ToPagedResult(pageNumber, pageSize, MaxRecordCount); var totalItemCount = result.TotalItems; pageNumber = result.PageNumber; var startRecordNumber = (pageNumber - 1) * pageSize + 1; var endRecordNumber = (pageNumber - 1) * pageSize + pageSize; endRecordNumber = endRecordNumber > totalItemCount ? totalItemCount : endRecordNumber; var output = new AssetOutputModel { Paging = new Pagination { TotalItems = totalItemCount, PageSize = pageSize, PageNumber = pageNumber, LastPageNumber = result.TotalPages, NextPageLink = result.HasNextPage ? queryParams.ToUrl(Request.GetUri(), pageNumber + 1, pageSize) : null, PreviousPageLink = result.HasPreviousPage ? queryParams.ToUrl(Request.GetUri(), pageNumber - 1, pageSize) : null, PageStartRecordNumber = startRecordNumber, PageEndRecordNumber = endRecordNumber }, Data = result.Items }; return(Ok(output)); }