private void RemoveDuplicated() { if (PostsToBeCreated.Any()) { var postIds = PostsToBeCreated.Select(t => t.id).ToList(); var existingPostIds = _conversationService.FindAll() .Where(t => (t.Source == ConversationSource.FacebookVisitorPost || t.Source == ConversationSource.FacebookWallPost) && postIds.Contains(t.OriginalId)).Select(t => t.OriginalId).ToList(); PostsToBeCreated.RemoveAll(t => existingPostIds.Contains(t.id)); } if (CommentsToBeCreated.Any()) { var commentIds = CommentsToBeCreated.Select(t => t.id).ToList(); var existingCommentIds = _messageService.FindAll().Where(t => t.Source == MessageSource.FacebookPostComment && commentIds.Contains(t.OriginalId)).Select(t => t.OriginalId).ToList(); CommentsToBeCreated.RemoveAll(t => existingCommentIds.Contains(t.id)); } if (ReplyCommentsToBeCretaed.Any()) { var replyCommentIds = ReplyCommentsToBeCretaed.Select(t => t.id).ToList(); var existingReplyCommentIds = _messageService.FindAll().Where(t => t.Source == MessageSource.FacebookPostReplyComment && replyCommentIds.Contains(t.OriginalId)).Select(t => t.OriginalId).ToList(); ReplyCommentsToBeCretaed.RemoveAll(t => existingReplyCommentIds.Contains(t.id)); } if (ConversationsToBeCreated.Any()) { var ConversationIds = ConversationsToBeCreated.Select(t => t.Id).ToList(); List <string> MessageIds = new List <string>(); foreach (var conversation in ConversationsToBeCreated) { MessageIds.AddRange(conversation.Messages.data.Select(m => m.Id).ToList()); } var existingMessageIds = _messageService.FindAll().Where(t => t.Source == MessageSource.FacebookMessage && MessageIds.Contains(t.OriginalId)).Select(t => t.OriginalId).ToList(); foreach (var conversation in ConversationsToBeCreated) { conversation.Messages.data.RemoveAll(t => existingMessageIds.Contains(t.Id)); } } }
private async Task AddCommentIds(FbPagingData <FbPost> posts) { foreach (var post in posts.data) { var comments = post.comments; while (comments != null && comments.data.Any()) { FillPostIdForComments(comments, post.id); CommentsToBeCreated.AddRange(comments.data); await AddReplyCommentIds(comments); if (comments.paging?.next != null) { comments = await _fbClient.GetPagingData <FbComment>(comments.paging.next); } else { break; } } } }
private void Clear() { PostsToBeCreated.Clear(); CommentsToBeCreated.Clear(); ReplyCommentsToBeCretaed.Clear(); }