public IList <TwitterTweetMessageDto> GetTwitterTweetMessages(int conversationId) { List <TwitterTweetMessageDto> result = new List <TwitterTweetMessageDto>(); var converation = _conversationService.Find(conversationId, ConversationSource.TwitterTweet); if (converation == null) { return(result); } result = _messageService.FindAllByConversationId(conversationId) .OrderBy(t => t.SendTime) .ProjectTo <TwitterTweetMessageDto>() .ToList(); result.ForEach(t => { t.ParentId = t.ParentId == null ? -1 : t.ParentId; }); // -1?, front-end need this value by now. foreach (var message in result) { ChangeAttachmentMimeType(message.Attachments); } var messageDtoWithQuote = result.Where(t => !string.IsNullOrWhiteSpace(t.QuoteTweetId)).FirstOrDefault(); if (messageDtoWithQuote == null) { return(result); } var messageWithQuote = _messageService.Find(messageDtoWithQuote.Id); var socialAccount = _socialAccountService.Find(messageWithQuote.IntegrationAccountId); if (socialAccount == null) { return(result); } var quoteTweetMessage = _twitterService.GetTweetMessage(socialAccount, long.Parse(messageDtoWithQuote.QuoteTweetId)); if (quoteTweetMessage != null) { result.Find(t => t.Id == messageDtoWithQuote.Id).QuoteTweet = Mapper.Map <BeQuotedTweetDto>(quoteTweetMessage); // messageDtoWithQuote.QuoteTweet = Mapper.Map<BeQuotedTweetDto>(quoteTweetMessage); } return(result); }