public IActionResult GetVotings([FromQuery] VotingParameters votingParameters) { var votings = _repository.Voting.GetVotings(votingParameters); var metadata = new { votings.TotalCount, votings.PageSize, votings.CurrentPage, votings.TotalPages, votings.HasNext, votings.HasPrevious }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata)); _logger.LogInfo($"Returned {votings.TotalCount} votings from database."); var shapedVotings = votings.Select(o => o.Entity).ToList(); var mediaType = (MediaTypeHeaderValue)HttpContext.Items["AcceptHeaderMediaType"]; if (!mediaType.SubTypeWithoutSuffix.EndsWith("hateoas", StringComparison.InvariantCultureIgnoreCase)) { return(Ok(shapedVotings)); } for (var index = 0; index < votings.Count; index++) { var votingLinks = CreateLinksForVoting(votings[index].Id, votingParameters.Fields); shapedVotings[index].Add("Links", votingLinks); } var votingsWrapper = new LinkCollectionWrapper <Entity>(shapedVotings); return(Ok(CreateLinksForVotings(votingsWrapper))); }
public PagedList <ShapedEntity> GetVotings(VotingParameters votingParameters) { IQueryable <Voting> votings; if (votingParameters.WhereIn != null) { string[] filterCategories = votingParameters?.WhereIn.Trim().Split(","); votings = FindAll().Where(e => filterCategories.Contains(e.CategoryId.ToString())).Include(ct => ct.Category). Include(u => u.Users). AsNoTracking(); } else { votings = FindAll().Include(ct => ct.Category).AsNoTracking(); } SearchByName(ref votings, votingParameters.Name); var sortedVotings = _sortHelper.ApplySort(votings, votingParameters.OrderBy); var shapedVotings = _dataShaper.ShapeData(sortedVotings, votingParameters.Fields); return(PagedList <ShapedEntity> .ToPagedList(shapedVotings, votingParameters.PageNumber, votingParameters.PageSize)); }