コード例 #1
0
        public async Task <PagedList <SlugEntity> > GetAllSlugsAsync(SlugsResourceParameters slugsResourceParameter)
        {
            if (slugsResourceParameter == null)
            {
                throw new ArgumentNullException(nameof(slugsResourceParameter));
            }

            IQueryable <SlugEntity> collection = _murlContext.Slugs;
            var orderedCollection = collection.OrderBy(c => c.Url);

            return(await PagedList <SlugEntity> .Create(orderedCollection, slugsResourceParameter));
        }
コード例 #2
0
        private object CreatePaginationMetaData(PagedList <SlugEntity> slugs, SlugsResourceParameters slugsResourceParameters)
        {
            string previousPageLink = slugs.HasPrevious ? CreateSlugsResourceUri(slugsResourceParameters, ResourceUriType.PreviousPage) : null;
            string nextPageLink     = slugs.HasNext ? CreateSlugsResourceUri(slugsResourceParameters, ResourceUriType.NextPage) : null;

            return(new
            {
                totalCount = slugs.TotalCount,
                pageSize = slugs.PageSize,
                currentPage = slugs.CurrentPage,
                totalPages = slugs.TotalPages,
                previousPageLink,
                nextPageLink
            });
        }
コード例 #3
0
        public async Task <ActionResult <IEnumerable <SlugDto> > > GetSlugs([FromQuery] SlugsResourceParameters slugsResourceParameters)
        {
            _logger.LogInformation(string.Format($"GetSlugs [HTTP Get]: getting all URL values for page number: {slugsResourceParameters.PageNumber} and page size: {slugsResourceParameters.PageSize}"));

            // check if slug exists
            PagedList <SlugEntity> slugs = await _murlRepository.GetAllSlugsAsync(slugsResourceParameters);

            var paginationMetaData = CreatePaginationMetaData(slugs, slugsResourceParameters);

            Response.Headers.Add("X-Pagination", JsonSerializer.Serialize(paginationMetaData));

            if (slugs == null || slugs.Count() == 0)
            {
                return(new NotFoundObjectResult(new { message = "no URLs found." }));
            }
            else
            {
                return(new OkObjectResult(slugs));
            }
        }
コード例 #4
0
        private string CreateSlugsResourceUri(SlugsResourceParameters slugsResourceParameters, ResourceUriType type)
        {
            dynamic routevalues = new ExpandoObject();

            routevalues.pageNumber   = slugsResourceParameters.PageNumber;
            routevalues.pageSize     = slugsResourceParameters.PageSize;
            routevalues.mainCategory = slugsResourceParameters.MainCategory;
            routevalues.searchQuery  = slugsResourceParameters.SearchQuery;

            switch (type)
            {
            case ResourceUriType.PreviousPage:
                routevalues.pageNumber = slugsResourceParameters.PageNumber - 1;
                break;

            case ResourceUriType.NextPage:
                routevalues.pageNumber = slugsResourceParameters.PageNumber + 1;
                break;

            default:
                break;
            }
            return(Url.Link("GetSlugs", routevalues));
        }