/// <summary> /// Creates new Tweet entity from 'replyText' and /// populates RepliesTo property with 'replyTo', /// and with its previous replies. /// </summary> /// <param name="replyText"></param> /// <param name="user"></param> /// <param name="replyTo"></param> /// <returns>Created Tweet entity (reply)</returns> public async Task <Tweet> AddReplyAsync(string replyText, TwitterCopyUser user, Tweet replyTo) { var replyFrom = new Tweet { Text = replyText, User = user, RepliesTo = new List <TweetToTweet>() }; // Add main replyTo replyFrom.RepliesTo.Add(new TweetToTweet { ReplyFrom = replyFrom, ReplyTo = replyTo }); // Add reply to the RepliesTo property of the replyTo tweet // so that you reply not to one tweet but // to the whole 'conversation' foreach (var tweet in replyTo.RepliesTo) { replyFrom.RepliesTo.Add(new TweetToTweet { ReplyFrom = replyFrom, ReplyTo = tweet.ReplyTo }); } _tweetRepository.Add(replyFrom); await _tweetRepository.SaveAsync(); return(replyFrom); }