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