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