private async Task Init(FbPagingData <FbPost> posts)
        {
            if (posts == null || !posts.data.Any())
            {
                return;
            }

            PostsToBeCreated.AddRange(posts.data);

            await AddCommentIds(posts);

            if (posts.paging != null && posts.paging.next != null)
            {
                var nextPagePosts = await _fbClient.GetPagingData <FbPost>(posts.paging.next);
                await Init(nextPagePosts);
            }
        }
        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 void Clear()
 {
     PostsToBeCreated.Clear();
     CommentsToBeCreated.Clear();
     ReplyCommentsToBeCretaed.Clear();
 }