コード例 #1
0
        private string CreateQuestionsResourceUri(
            QuestionsResourceParameters questionsResourceParameters,
            ResourceUriType type)
        {
            switch (type)
            {
            case ResourceUriType.PreviousPage:
                return(_urlHelper.Link("GetAllQuestions",
                                       new
                {
                    searchQuery = questionsResourceParameters.SearchQuery,
                    pageNumber = questionsResourceParameters.PageNumber - 1,
                    pageSize = questionsResourceParameters.PageSize
                }));

            case ResourceUriType.NextPage:
                return(_urlHelper.Link("GetAllQuestions",
                                       new
                {
                    searchQuery = questionsResourceParameters.SearchQuery,
                    pageNumber = questionsResourceParameters.PageNumber + 1,
                    pageSize = questionsResourceParameters.PageSize
                }));

            default:
                return(_urlHelper.Link("GetAllQuestions",
                                       new
                {
                    searchQuery = questionsResourceParameters.SearchQuery,
                    pageNumber = questionsResourceParameters.PageNumber,
                    pageSize = questionsResourceParameters.PageSize
                }));
            }
        }
コード例 #2
0
        public IActionResult GetQuestions(QuestionsResourceParameters questionsResourceParameters)
        {
            var questionsFromRepo = _quizRepository.GetQuestions(questionsResourceParameters);

            var previousPageLink = questionsFromRepo.HasPrevious ?
                                   CreateQuestionsResourceUri(questionsResourceParameters,
                                                              ResourceUriType.PreviousPage) : null;

            var nextPageLink = questionsFromRepo.HasNext ?
                               CreateQuestionsResourceUri(questionsResourceParameters,
                                                          ResourceUriType.NextPage) : null;

            var paginationMetadata = new
            {
                totalCount       = questionsFromRepo.TotalCount,
                pageSize         = questionsFromRepo.PageSize,
                currentPage      = questionsFromRepo.CurrentPage,
                totalPages       = questionsFromRepo.TotalPages,
                previousPageLink = previousPageLink,
                nextPageLink     = nextPageLink
            };

            Response.Headers.Add("X-Pagination",
                                 Newtonsoft.Json.JsonConvert.SerializeObject(paginationMetadata));

            var questions = Mapper.Map <IEnumerable <QuestionDto> >(questionsFromRepo);

            return(Ok(questions));
        }
コード例 #3
0
        public PagedList <Question> GetQuestions(QuestionsResourceParameters questionsResourceParameters)
        {
            var collectionBeforePaging =
                _context.Questions.AsQueryable();

            if (!string.IsNullOrEmpty(questionsResourceParameters.SearchQuery))
            {
                var searchQueryForWhereClause = questionsResourceParameters.SearchQuery
                                                .Trim().ToLowerInvariant();

                collectionBeforePaging = collectionBeforePaging
                                         .Where(a => a.QuestionText.ToLowerInvariant().Contains(searchQueryForWhereClause));
            }

            return(PagedList <Question> .Create(collectionBeforePaging,
                                                questionsResourceParameters.PageNumber,
                                                questionsResourceParameters.PageSize));
        }