Beispiel #1
0
        public List <Message> GetRecentMessages(int maxResult)
        {
            int offset         = 0;
            var recentMessages = new List <Message>();
            var messages       = _messageDao.GetRecentMessages(offset, maxResult)
                                 .Where(CanRead)
                                 .ToList();

            recentMessages.AddRange(messages);

            if (recentMessages.Count < maxResult)
            {
                do
                {
                    offset   = offset + maxResult;
                    messages = _messageDao.GetRecentMessages(offset, maxResult);

                    if (messages.Count == 0)
                    {
                        return(recentMessages);
                    }
                    else
                    {
                        messages = messages
                                   .Where(CanRead)
                                   .ToList();
                    }

                    recentMessages.AddRange(messages);
                }while (recentMessages.Count < maxResult);
            }

            var commentsCount = _commentDao.GetCommentsCount(recentMessages.Select(r => (ProjectEntity)r).ToList());

            recentMessages = recentMessages.Select((message, index) =>
            {
                message.CommentsCount = commentsCount[index];
                return(message);
            }).ToList();

            return(recentMessages.Count == maxResult ? recentMessages : recentMessages.GetRange(0, maxResult));
        }