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