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