public RatingListDto GetRatings([FromUri]RatingFilterDto filterParams)
        {
            var ratingDataList = new RatingListDto();
            var filter = new FilterContentForVisitor();
            var pages = GetChildPages(ContentReference.StartPage).ToList();
            filter.Filter(pages);
            var ratingTableDataList = new List<RatingTableDataDto>();

            var ratingInterfacePages = filterParams != null && filterParams.RatingEnabled ?
                pages.OfType<IRatingPage>().Where(p => p.RatingEnabled == filterParams.RatingEnabled).ToList() : pages.OfType<IRatingPage>().ToList();


            //var reviews = GetReviews(ratingInterfacePages);


            foreach (var ratingPage in ratingInterfacePages)
            {
                var ratingContent = (IContent)ratingPage;
                var ratings = _reviewService.GetReviews(ratingContent.ContentLink);

                if (ratings == null)
                {
                    continue;
                }

                var ratingsList = ratings.ToList();

                var ratingTableData = new RatingTableDataDto
                {
                    PageName = ratingContent.Name,
                    RatingEnabled = ratingPage.RatingEnabled,
                    ContentId = ratingContent.ContentLink.ID.ToString(),
                    ContentUrl = PageEditing.GetEditUrl(ratingContent.ContentLink),
                    PageFriendlyUrl = _urlResolver.GetUrl(ratingContent.ContentLink)
                };

                if (ratingsList.Any())
                {
                    if (filterParams != null)
                    {
                        ratingsList = ratingsList.Where(r => !filterParams.DateFrom.HasValue || r.Created.Date >= filterParams.DateFrom.Value.Date &&
                                                             (!filterParams.DateTo.HasValue || r.Created.Date <= filterParams.DateTo.Value.Date)).ToList();
                    }

                    var allCommentsDto = ratingsList.Where(r => !string.IsNullOrEmpty(r.Text))
                                   .Select(r => new RatingCommentDto { CommentText = r.Text, CommentDate = r.Created }).ToList();

                    ratingTableData.ShortComments = new List<RatingCommentDto>(allCommentsDto.OrderByDescending(c => c.CommentDate).Take(5)
                        .Select(c => new RatingCommentDto
                        {
                            CommentText = c.CommentText.Length > 500 ? c.CommentText.Substring(0, 500) + "..." : c.CommentText,
                            CommentDate = c.CommentDate
                        }));

                    ratingTableData.Comments = new List<RatingCommentDto>(allCommentsDto.Select(comment => new RatingCommentDto
                    {
                        CommentText = comment.CommentText + "{nl}",
                        CommentDate = comment.CommentDate
                    }));

                    ratingTableData.Rating = (int)ratingsList.Select(r => r.Rating).Sum();
                    ratingTableData.LastCommentDate = allCommentsDto.OrderByDescending(c => c.CommentDate).First().CommentDate;
                    ratingTableData.RatingCount = ratingsList.Count;
                    ratingTableData.PositiveRatingCount = ratingsList.Count(r => r.Rating > 0);
                    ratingTableData.NegativeRatingCount = ratingsList.Count(r => r.Rating < 0);
                }

                if (filterParams == null || !filterParams.OnlyRatedPages || (filterParams.OnlyRatedPages && ratingsList.Any()))
                {
                    ratingTableDataList.Add(ratingTableData);
                }
            }
            ratingDataList.RatingData = ratingTableDataList;

            return ratingDataList;
        }
        public RatingListDto GetPageComments([FromUri] RatingFilterDto filterParams)
        {
            var ratingTableData = new RatingTableDataDto();

            ContentReference contentRef;

            if (ContentReference.TryParse(filterParams.ContentId, out contentRef))
            {
                var ratingPageContent = _loader.Get<IContent>(contentRef);
                var ratings = GetReviews(contentRef);

                if (ratings != null)
                {
                    ratingTableData.PageName = ratingPageContent.Name;
                    ratingTableData.ContentId = ratingPageContent.ContentLink.ID.ToString();
                    ratingTableData.Comments =
                        ratings.Where(r => !string.IsNullOrEmpty(r.Text)).OrderByDescending(r => r.Created).
                                Select(r => new RatingCommentDto { CommentText = r.Text, CommentDate = r.Created });
                }
            }
            return new RatingListDto { RatingData = new List<RatingTableDataDto> { ratingTableData } };
        }