private void FindHotNews(int count) { IsHotNews = false; var hotTopics = _context.TopicAnswers .GroupBy( t => t.TopicId, t => t.AuthorId, (key, aggr) => new { TopicId = key, Count = aggr.Count() }) .OrderByDescending(t => t.Count) .Take(count) .ToList(); var result = new List <TopicPreviewDTO>(); foreach (var item in hotTopics) { var topic = _context.Topics .Where(t => t.Id == item.TopicId) .FirstOrDefault(); var topicPreivewDTO = new TopicPreviewDTO() { TopicId = topic.Id, Header = topic.Header, Author = topic.Creator.UserName, BackgroundImagePath = "/images/topic-preview.jpg", //TODO: add logic for choosing photo AuthorImageBase64 = $"data:image/png;base64,{topic.Creator.AvatarImage.ToString()}", CreatedDate = topic.Created, NumberOfReplies = item.Count }; result.Add(topicPreivewDTO); } if (result.Count == 0) { IsHotNews = false; } else { } }
public ActionResult <List <TopicPreviewDTO> > GetTopicPreviews(int from, int to) { if (from < 0 || to < 0 || to < from) { return(BadRequest()); } List <Topic> topics = _context.Topics .Skip(from) .Take(to - from) .Include(t => t.Creator) .ToList(); var result = new List <TopicPreviewDTO>(); foreach (var topic in topics) { int replies = _context.TopicAnswers .Where(ans => ans.TopicId == topic.Id) .Count(); var topicPreivewDTO = new TopicPreviewDTO() { TopicId = topic.Id, Header = topic.Header, Author = topic.Creator.UserName, BackgroundImagePath = "/images/topic-preview.jpg", //TODO: add logic for choosing photo AuthorImageBase64 = $"data:image/png;base64,{topic.Creator.AvatarImage.ToString()}", CreatedDate = topic.Created, NumberOfReplies = replies }; result.Add(topicPreivewDTO); } return(Ok(result)); }