private string CreateScoreResouceUri( ScoresResourceParameters scoreResourceParameters, ResourceUriType type) { switch (type) { case ResourceUriType.PreviousPage: return(_urlHelper.Link("GetScores", new { instanceScore = scoreResourceParameters.InstanceScore, pageNumber = scoreResourceParameters.PageNumber - 1, pageSize = scoreResourceParameters.PageSize })); case ResourceUriType.NextPage: return(_urlHelper.Link("GetScores", new { instanceScore = scoreResourceParameters.InstanceScore, pageNumber = scoreResourceParameters.PageNumber + 1, pageSize = scoreResourceParameters.PageSize })); default: return(_urlHelper.Link("GetScores", new { instanceScore = scoreResourceParameters.InstanceScore, pageNumber = scoreResourceParameters.PageNumber, pageSize = scoreResourceParameters.PageSize })); } }
public PagedList <Score> GetScoresForUser(Guid userId, ScoresResourceParameters scoresResourceParameters) { var collectionBeforePaging = _context.Scores .Where(b => b.UserId == userId) .OrderBy(a => a.TimeStamp) .ThenBy(a => a.InstanceScore).AsQueryable(); ////Search using search query (Timestamp) //if (!string.IsNullOrEmpty(scoresResourceParameters.SearchQuery)) //{ // var searhcQueryForWhereClause = scoresResourceParameters.SearchQuery; // collectionBeforePaging = collectionBeforePaging // .Where(a => a.TimeStamp.ToString("dddd, MMM dd yyyy HH:mm:ss zzz").Contains(searhcQueryForWhereClause)); //} //Filter suing InstanceScore //if (scoresResourceParameters.InstanceScore != null) //{ // var instanceScoreForWhereClause = scoresResourceParameters.InstanceScore; // collectionBeforePaging = collectionBeforePaging // .Where(a => a.InstanceScore == instanceScoreForWhereClause); //} return(PagedList <Score> .Create(collectionBeforePaging, scoresResourceParameters.PageNumber, scoresResourceParameters.PageSize)); }
public IActionResult GetScoresForUser(Guid userId, ScoresResourceParameters scoreResourceParameters) { if (!_libraryRepository.UserExists(userId)) { return(NotFound()); } var scoresFromRepo = _libraryRepository.GetScoresForUser(userId, scoreResourceParameters); var previousPageLink = scoresFromRepo.HasPrevious ? CreateScoreResouceUri(scoreResourceParameters, ResourceUriType.PreviousPage) : null; var nextPageLink = scoresFromRepo.HasNext ? CreateScoreResouceUri(scoreResourceParameters, ResourceUriType.PreviousPage) : null; var paginationMetadata = new { totalCount = scoresFromRepo.TotalCount, pageSize = scoresFromRepo.PageSize, currentPage = scoresFromRepo.CurrentPage, totalPages = scoresFromRepo.TotalPages, previousPageLink = previousPageLink, nextPageLink = nextPageLink }; Response.Headers.Add("X-Pagination", Newtonsoft.Json.JsonConvert.SerializeObject(paginationMetadata)); var scoresForUser = Mapper.Map <IEnumerable <ScoreDto> >(scoresFromRepo); scoresForUser = scoresForUser.Select(score => { score = CreateLinksForScore(score); return(score); }); var wrapper = new LinkedCollectionResourceWrapperDto <ScoreDto>(scoresForUser); return(Ok(CreateLinksForScores(wrapper))); }