Ejemplo n.º 1
0
        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
            {
            }
        }
Ejemplo n.º 2
0
        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));
        }