public int UpdatePageFeedDetails(Facebookaccounts facebookAccount)
        {
            ApiHitsCount = 0;
            var databaseRepository = new DatabaseRepository();

            if (facebookAccount.LastUpdate.AddHours(1) <= DateTime.UtcNow)
            {
                if (!facebookAccount.IsAccessTokenActive)
                {
                    return(0);
                }

                ApiHitsCount++;

                UpdatePageDetails(facebookAccount, databaseRepository);

                UpdateFeeds(facebookAccount);

                UpdatePosts(facebookAccount);

                UpdatePageNotifications(facebookAccount);

                UpdatePageConversations(facebookAccount);

                UpdatePageTaggedDetails(facebookAccount);

                UpdatePagePromotionPostDetails(facebookAccount);
            }
            else
            {
                ApiHitsCount = 0;
            }
            return(0);
        }
        public void UpdatePageConversations(Facebookaccounts facebookAccount)
        {
            try
            {
                var conversations = FacebookApiHelper.GetConversations(facebookAccount.AccessToken);

                var conversationCollections = JObject.Parse(conversations);

                var conversationCollection = conversationCollections.SelectTokens("data").SelectMany(x => x)
                                             .Select(item =>
                                                     new MongoDirectMessages
                {
                    messageId   = item.SelectToken("id")?.ToString(),
                    createdDate = Convert.ToDateTime(item.SelectToken("updated_time")?.ToString()
                                                     ?? DateTime.Now.ToString(CultureInfo.InvariantCulture)).ToString("yyyy/MM/dd HH:mm:ss"),
                    ConversationLink = item.SelectToken("link")?.ToString(), type = MessageType.FacebookPagDirectMessageReceived
                }).ToList();

                AddConversationDetailsToDb(conversationCollection);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
 public void UpdatePagePromotionPostDetails(Facebookaccounts facebookAccount)
 {
     try
     {
         var promotablePosts         = FacebookApiHelper.GetPromotablePostsDetails(facebookAccount.AccessToken);
         var taggedDetailCollections = ParseTagAndPromoteDetails(facebookAccount, promotablePosts, FacebookPagePromotion.PromotablePosts).ToList();
         AddedPromotionDetailsToDb(taggedDetailCollections);
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
 }
        public void ParseAndUpdateAccountDetails(Facebookaccounts facebookAccount, DatabaseRepository databaseRepository)
        {
            try
            {
                var profileDetails = FacebookApiHelper.GetUserDetails(facebookAccount.AccessToken).ToString();

                var profile = JObject.Parse(profileDetails);

                if (Convert.ToString(profile) == "Invalid Access Token")
                {
                    return;
                }

                facebookAccount.Friends = FacebookApiHelper.GetFriendCounts(facebookAccount.AccessToken);

                ApiHitsCount++;

                facebookAccount.EmailId = profile.SelectToken("email")?.ToString();

                facebookAccount.ProfileUrl = profile.SelectToken("link")?.ToString();
                if (string.IsNullOrEmpty(facebookAccount.ProfileUrl))
                {
                    facebookAccount.ProfileUrl = profile.SelectToken("picture.data.url")?.ToString();
                }

                facebookAccount.Gender   = profile.SelectToken("gender")?.ToString();
                facebookAccount.Bio      = profile.SelectToken("bio")?.ToString();
                facebookAccount.About    = profile.SelectToken("about")?.ToString();
                facebookAccount.CoverPic = profile.SelectToken("cover.source")?.ToString();
                facebookAccount.Birthday = profile.SelectToken("birthday")?.ToString();

                var profileEducationDetails = JArray.Parse(profile.SelectToken("education")?.ToString() ?? "[]");
                facebookAccount.College   = profileEducationDetails?.LastOrDefault()?.SelectToken("school.name")?.ToString();
                facebookAccount.Education = profileEducationDetails?.LastOrDefault()?.SelectToken("concentration.name")?.ToString();

                var profileWorkingDetails = JArray.Parse(profile["work"]?.ToString() ?? "[]");
                facebookAccount.WorkPosition = profileWorkingDetails?.FirstOrDefault()?.SelectToken("position.name")?.ToString();
                facebookAccount.WorkCompany  = profileWorkingDetails?.FirstOrDefault()?.SelectToken("employer.name")?.ToString();

                facebookAccount.LastUpdate = DateTime.UtcNow;

                databaseRepository.Update(facebookAccount);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        public IEnumerable <MongoMessageModel> UpdatePageNotifications(Facebookaccounts facebookAccount)
        {
            var notificationDetails = new List <MongoMessageModel>();

            try
            {
                var notificationsDetails = FacebookApiHelper.GetPageNotifications(facebookAccount.AccessToken);

                var notifications = JObject.Parse(notificationsDetails);

                foreach (var item in notifications["data"])
                {
                    var inboxMessages = new MongoMessageModel
                    {
                        profileId        = facebookAccount.FbUserId,
                        type             = MessageType.FacebookPageNotification,
                        messageTimeStamp = SBHelper.ConvertToUnixTimestamp(DateTime.UtcNow)
                    };

                    try
                    {
                        inboxMessages.Message        = item.SelectToken("title")?.ToString();
                        inboxMessages.messageId      = item.SelectToken("id").ToString();
                        inboxMessages.fromId         = item.SelectToken("from.id").ToString();
                        inboxMessages.fromName       = item.SelectToken("from.name").ToString();
                        inboxMessages.fromScreenName = item.SelectToken("from.name").ToString();
                        inboxMessages.fromProfileUrl = "http://graph.facebook.com/" + inboxMessages.fromId + "/picture?type=small";
                        inboxMessages.RecipientId    = item.SelectToken("to.id").ToString();
                        inboxMessages.RecipientName  = item.SelectToken("to.name").ToString();
                        inboxMessages.messageDate    = Convert.ToDateTime(item["created_time"].ToString()).ToString(CultureInfo.InvariantCulture);

                        notificationDetails.Add(inboxMessages);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
                AddNotificationsToDb(notificationDetails);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            return(notificationDetails);
        }
Ejemplo n.º 6
0
        public IActionResult GetPrimaryFacebookAcc(long userId, long groupId)
        {
            DatabaseRepository dbr = new DatabaseRepository(_logger, _env);
            List <Domain.Socioboard.Models.Groupprofiles> lstGrpProfiles = Repositories.GroupProfilesRepository.GetAllGroupProfiles(groupId, _redisCache, dbr);

            //List<Domain.Socioboard.Models.Facebookaccounts> lstFbAcc = new List<Facebookaccounts>();
            Domain.Socioboard.Models.Facebookaccounts UserFbAccDetail = new Facebookaccounts();
            foreach (var item in lstGrpProfiles.Where(t => t.profileType == Domain.Socioboard.Enum.SocialProfileType.Facebook))
            {
                Domain.Socioboard.Models.Facebookaccounts fbAcc    = Repositories.FacebookRepository.getFacebookAccount(item.profileId, _redisCache, dbr);
                Domain.Socioboard.Models.User             userdata = dbr.Single <Domain.Socioboard.Models.User>(t => t.Id == fbAcc.UserId);
                if (fbAcc != null && userdata.EmailId == fbAcc.EmailId)
                {
                    UserFbAccDetail = fbAcc;
                }
            }
            return(Ok(UserFbAccDetail));
        }
        public IEnumerable <FacebookPagePromotionDetails> UpdatePageTaggedDetails(Facebookaccounts facebookAccount)
        {
            var taggedDetailCollections = new List <FacebookPagePromotionDetails>();

            try
            {
                var taggedDetails = FacebookApiHelper.GetPageTaggedDetails(facebookAccount.AccessToken);

                taggedDetailCollections = ParseTagAndPromoteDetails(facebookAccount, taggedDetails).ToList();
                AddedPromotionDetailsToDb(taggedDetailCollections);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            return(taggedDetailCollections);
        }
 public void UpdatePageDetails(Facebookaccounts facebookAccount, DatabaseRepository databaseRepository)
 {
     try
     {
         if (facebookAccount.FbPageSubscription == FbPageSubscription.NotSubscribed &&
             FacebookApiHelper.MakeSubscribedWithApp(facebookAccount.AccessToken))
         {
             facebookAccount.FbPageSubscription = FbPageSubscription.Subscribed;
         }
         var pageDetails = JObject.Parse(FacebookApiHelper.GetPageDetails(facebookAccount.AccessToken));
         facebookAccount.Friends = long.Parse(pageDetails.SelectToken("fan_count")?.ToString() ?? "0");
         databaseRepository.Update(facebookAccount);
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
 }
        public void UpdateFeeds(Facebookaccounts facebookAccount)
        {
            const int maximumPaginationCount = 25;
            var       currentPage            = 0;

            if (currentPage >= maximumPaginationCount)
            {
                return;
            }

            string feeds = FacebookApiHelper.GetOwnFeedDetails(facebookAccount.AccessToken).ToString();

            var feedDetails = JObject.Parse(feeds);

            string nextPaginationUrl;

            do
            {
                nextPaginationUrl = feedDetails.SelectToken("paging.next")?.ToString();

                var postDetails = FetchAccountsFeedDetails(facebookAccount, feedDetails).ToList();

                if (postDetails.Count > 0)
                {
                    UpdatePostsToDb(postDetails);

                    if (!string.IsNullOrEmpty(nextPaginationUrl))
                    {
                        feedDetails = JObject.Parse(FacebookApiHelper
                                                    .GetResponse(nextPaginationUrl, facebookAccount.AccessToken).ToString());
                    }
                }
                else
                {
                    nextPaginationUrl = string.Empty;
                }

                currentPage++;
                if (currentPage > maximumPaginationCount)
                {
                    nextPaginationUrl = string.Empty;
                }
            } while (!string.IsNullOrEmpty(nextPaginationUrl));
        }
 public IEnumerable <MongoFacebookFeed> FetchAccountsFeedDetails(Facebookaccounts facebookAccount,
                                                                 JObject feedDetails)
 {
     return((from feed in feedDetails.SelectTokens("data")?.SelectMany(feed => feed)
             select JObject.Parse(feed.ToString())
             into feedDetail
             let fromName = feedDetail.SelectToken("from.name")?.ToString()
                            let fromId = feedDetail.SelectToken("from.id")?.ToString()
                                         let feedId = feedDetail.SelectToken("id")?.ToString()
                                                      let createdDateTime = DateTime.Parse(feedDetail.SelectToken("created_time")?.ToString() ?? DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"))
                                                                            .ToString("yyyy/MM/dd HH:mm:ss")
                                                                            let likeCount = feedDetail.SelectToken("likes.summary.total_count")?.ToString()
                                                                                            let commentCount = feedDetail.SelectToken("comments.summary.total_count")?.ToString()
                                                                                                               let postType = feedDetail.SelectToken("type")?.ToString() ?? "status"
                                                                                                                              let postingFrom = feedDetail.SelectToken("application.name")?.ToString() ?? "Facebook"
                                                                                                                                                let picture = feedDetail.SelectToken("picture")?.ToString()
                                                                                                                                                              let message = feedDetail.SelectToken("message")?.ToString() ?? feedDetail.SelectToken("description")?.ToString() ?? feedDetail.SelectToken("story")?.ToString() ?? string.Empty
                                                                                                                                                                            let postDate = SBHelper.ConvertToUnixTimestamp(Convert.ToDateTime(createdDateTime))
                                                                                                                                                                                           select new MongoFacebookFeed
     {
         Type = "fb_feed",
         ProfileId = facebookAccount.FbUserId,
         Id = ObjectId.GenerateNewId(),
         FromProfileUrl = $"http://graph.facebook.com/{facebookAccount.FbUserId}/picture?type=small",
         FromName = fromName,
         FromId = fromId,
         FeedId = feedId,
         FeedDate = postDate.ToString(CultureInfo.InvariantCulture),
         FeedDateToshow = SBHelper.ConvertFromUnixTimestamp(Convert.ToDouble(postDate)).ToString("yyyy/MM/dd HH:mm:ss"),
         FbComment = $"http://graph.facebook.com/{feedId}/comments",
         FbLike = $"http://graph.facebook.com/{feedId}/likes",
         Likecount = likeCount,
         Commentcount = commentCount,
         postType = postType,
         postingFrom = postingFrom,
         Picture = picture,
         FeedDescription = message,
         EntryDate = DateTime.UtcNow.ToString("yyyy/MM/dd HH:mm:ss")
     }).ToList());
 }
        public int UpdateFbFeedDetails(Facebookaccounts facebookAccount)
        {
            ApiHitsCount = 0;
            var databaseRepository = new DatabaseRepository();

            if (facebookAccount.LastUpdate.AddHours(1) <= DateTime.UtcNow)
            {
                if (!facebookAccount.IsAccessTokenActive)
                {
                    return(0);
                }

                ApiHitsCount++;
                ParseAndUpdateAccountDetails(facebookAccount, databaseRepository);
                UpdateFeeds(facebookAccount);
            }
            else
            {
                ApiHitsCount = 0;
            }
            return(0);
        }
Ejemplo n.º 12
0
        public IActionResult AddFacebookPages(long userId, long groupId)
        {
            try
            {
                string data = Request.Form["profileaccesstoken"];

                var pages = JArray.Parse($"[{data}]");

                var pageDetails = new List <Facebookaccounts>();

                foreach (var page in pages)
                {
                    try
                    {
                        var facebookAccount = new Facebookaccounts
                        {
                            AccessToken = page.SelectToken("AccessToken").ToString(),
                            FbUserId    = page.SelectToken("ProfilePageId").ToString(),
                            Friends     = long.Parse(page.SelectToken("LikeCount").ToString()),
                            FbUserName  = page.SelectToken("Name").ToString(),
                            EmailId     = page.SelectToken("Email").ToString(),
                        };
                        facebookAccount.CoverPic   = $"https://graph.facebook.com/{facebookAccount.FbUserId}/picture?type=small";
                        facebookAccount.ProfileUrl = $"https://graph.facebook.com/{facebookAccount.FbUserId}/picture?type=small";
                        pageDetails.Add(facebookAccount);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                    }
                }

                var pageIds = pageDetails.Select(x => x.FbUserId).ToList();

                var dbr = new DatabaseRepository(_logger, _env);

                var availableAccounts = Repositories.FacebookRepository.GetFacebookAccounts(pageIds, _redisCache, dbr).Select(x => x.FbUserId).ToList();

                pageDetails.RemoveAll(x => availableAccounts.Contains(x.FbUserId));

                CustomTaskFactory.Instance.Start(() =>
                {
                    var groupDetails = dbr.FindFirstMatch <Groups>(t => t.adminId == userId && t.id == groupId);

                    if (groupDetails == null)
                    {
                        return;
                    }

                    foreach (var page in pageDetails)
                    {
                        Repositories.FacebookRepository.AddFacebookPage(page, dbr, userId, groupDetails.id, Domain.Socioboard.Enum.FbProfileType.FacebookPage, page.AccessToken, _redisCache, _appSettings, _logger);
                    }
                });

                if (availableAccounts.Count == 0)
                {
                    return(Ok("All Pages added successfully!"));
                }

                if (availableAccounts.Count == pageDetails.Count)
                {
                    return(Ok("All Pages already added!"));
                }


                if (availableAccounts.Count < pageDetails.Count)
                {
                    var remainding = pageDetails.Count - availableAccounts.Count;
                    return(Ok($"Totally {remainding} Pages added, Rest already added either by you or others!"));
                }
                return(Ok("Pages added!"));
            }
            catch (Exception)
            {
                return(Ok("Error while adding pages"));
            }
        }
Ejemplo n.º 13
0
        public IActionResult SchedulePagePost(string profileId, int TimeInterVal, long UserId)
        {
            int addedPageCount     = 0;
            int invalidaccessToken = 0;

            profileId = profileId.TrimEnd(',');
            try
            {
                try
                {
                    foreach (var items in profileId.Split(','))
                    {
                        string pageUrls = Request.Form["pageUrls"];
                        Domain.Socioboard.Models.Facebookaccounts _Facebookaccounts = new Facebookaccounts();
                        DatabaseRepository dbr = new DatabaseRepository(_logger, _appEnv);
                        _Facebookaccounts = FacebookRepository.getFacebookAccount(items, _redisCache, dbr);
                        List <Domain.Socioboard.Models.Mongo.PageDetails> pageid = Helper.FacebookHelper.GetFbPagePostDetails(pageUrls, _Facebookaccounts.AccessToken);
                        if (pageid.Count == 0)
                        {
                            invalidaccessToken++;
                        }
                        foreach (Domain.Socioboard.Models.Mongo.PageDetails item in pageid)
                        {
                            addedPageCount++;
                            if (_Facebookaccounts != null)
                            {
                                LinkShareathon _LinkShareathon = new LinkShareathon();
                                _LinkShareathon.Id               = ObjectId.GenerateNewId();
                                _LinkShareathon.strId            = ObjectId.GenerateNewId().ToString();
                                _LinkShareathon.Userid           = UserId;
                                _LinkShareathon.Facebookusername = _Facebookaccounts.FbUserName;
                                _LinkShareathon.FacebookPageUrl  = item.PageUrl;
                                _LinkShareathon.TimeInterVal     = TimeInterVal;
                                _LinkShareathon.Facebookpageid   = item.PageId;
                                _LinkShareathon.IsActive         = true;
                                MongoRepository _ShareathonRepository = new MongoRepository("LinkShareathon", _appSettings);
                                _ShareathonRepository.Add(_LinkShareathon);
                                new Thread(delegate()
                                {
                                    Helper.FacebookHelper.schedulePage_Post(_Facebookaccounts.AccessToken, item.PageId, TimeInterVal);
                                }).Start();
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                }
            }
            catch (System.Exception ex)
            {
            }
            if (addedPageCount == profileId.Length)
            {
                return(Ok("successfully added"));
            }
            else if (invalidaccessToken > 0)
            {
                return(Ok(invalidaccessToken + "pages access token expired"));
            }

            return(Ok("successfully added"));
        }
Ejemplo n.º 14
0
        public void PageShreathon(object o)
        {
            try
            {
                var arr        = o as object[];
                var shareathon = (PageShareathon)arr[0];
                var dbr        = (DatabaseRepository)arr[1];

                var shareathonRepository = (MongoRepository)arr[2];

                var ids = shareathon.Facebookpageid.Split(',');
                GlobalVariable.pageShareathonIdsRunning.Add(shareathon.strId);

                foreach (var id in ids)
                {
                    try
                    {
                        PageapiHitsCount = 0;
                        var fbAcc = dbr.Single <Facebookaccounts>(t => t.FbUserId == shareathon.Facebookaccountid);
                        Facebookaccounts facebookPage = null;

                        var lstFbAcc = dbr.Single <Facebookaccounts>(t => t.FbUserId == id);

                        if (lstFbAcc != null)
                        {
                            facebookPage = lstFbAcc;
                        }
                        if (facebookPage != null)
                        {
                            if (PageapiHitsCount < PageMaxapiHitsCount)
                            {
                                var feeds = string.Empty;

                                if (facebookPage.PageShareathonUpdate.AddHours(1) <= DateTime.UtcNow)
                                {
                                    feeds = Fbpages.getFacebookRecentPost(fbAcc.AccessToken, facebookPage.FbUserId);
                                    var feedId = string.Empty;

                                    if (!string.IsNullOrEmpty(feeds) && !feeds.Equals("[]"))
                                    {
                                        PageapiHitsCount++;
                                        var fbpageNotes = JObject.Parse(feeds);

                                        foreach (var obj in JArray.Parse(fbpageNotes["data"].ToString()))
                                        {
                                            try
                                            {
                                                feedId = obj["id"].ToString();
                                                feedId = feedId.Split('_')[1];
                                                var dt = SBHelper.ConvertFromUnixTimestamp(
                                                    shareathon.Lastsharetimestamp);
                                                dt = dt.AddMinutes(shareathon.Timeintervalminutes);

                                                if (!shareathon.Lastpostid.Equals(feedId) &&
                                                    SBHelper.ConvertToUnixTimestamp(dt) <=
                                                    SBHelper.ConvertToUnixTimestamp(DateTime.UtcNow))
                                                {
                                                    var ret = ShareFeed(fbAcc.AccessToken, feedId,
                                                                        facebookPage.FbUserId, "", fbAcc.FbUserId,
                                                                        facebookPage.FbUserName);
                                                    if (!string.IsNullOrEmpty(ret))
                                                    {
                                                        Thread.Sleep(1000 * 60 * shareathon.Timeintervalminutes);
                                                    }
                                                }
                                            }
                                            catch
                                            {
                                                PageapiHitsCount = PageMaxapiHitsCount;
                                            }
                                        }

                                        fbAcc.PageShareathonUpdate        = DateTime.UtcNow;
                                        facebookPage.PageShareathonUpdate = DateTime.UtcNow;
                                        dbr.Update(fbAcc);
                                        dbr.Update(facebookPage);
                                    }
                                    else
                                    {
                                        FilterDefinition <BsonDocument> filter =
                                            new BsonDocument("strId", shareathon.strId);
                                        var update = Builders <BsonDocument> .Update.Set("FacebookStatus", 0);

                                        shareathonRepository.Update <PageShareathon>(update, filter);
                                    }
                                }
                                else
                                {
                                    PageapiHitsCount = 0;
                                }
                            }
                        }
                    }
                    catch
                    {
                        PageapiHitsCount = PageMaxapiHitsCount;
                    }
                }

                try
                {
                    if (!string.IsNullOrEmpty(shareathon.FacebookPageUrlId))
                    {
                        var urlsIds = shareathon.FacebookPageUrlId.Split(',');
                        foreach (var idUrl in urlsIds)
                        {
                            try
                            {
                                PageapiHitsCount = 0;
                                var fbAcc = dbr.Single <Facebookaccounts>(
                                    t => t.FbUserId == shareathon.Facebookaccountid);
                                var pagename = Fbpages.GetFbPageName(fbAcc.AccessToken, idUrl);
                                if (PageapiHitsCount < PageMaxapiHitsCount)
                                {
                                    var feeds = string.Empty;
                                    feeds = Fbpages.getFacebookRecentPost(fbAcc.AccessToken, idUrl);
                                    var feedId = string.Empty;
                                    if (!string.IsNullOrEmpty(feeds) && !feeds.Equals("[]"))
                                    {
                                        PageapiHitsCount++;
                                        var fbpageNotes = JObject.Parse(feeds);
                                        foreach (var obj in JArray.Parse(fbpageNotes["data"].ToString()))
                                        {
                                            try
                                            {
                                                feedId = obj["id"].ToString();
                                                feedId = feedId.Split('_')[1];
                                                var dt = SBHelper.ConvertFromUnixTimestamp(
                                                    shareathon.Lastsharetimestamp);
                                                dt = dt.AddMinutes(shareathon.Timeintervalminutes);
                                                if (!shareathon.Lastpostid.Equals(feedId) &&
                                                    SBHelper.ConvertToUnixTimestamp(dt) <=
                                                    SBHelper.ConvertToUnixTimestamp(DateTime.UtcNow))
                                                {
                                                    var ret = ShareFeed(fbAcc.AccessToken, feedId, idUrl, "",
                                                                        fbAcc.FbUserId, pagename);
                                                    if (!string.IsNullOrEmpty(ret))
                                                    {
                                                        Thread.Sleep(1000 * 60 * shareathon.Timeintervalminutes);
                                                    }
                                                }
                                            }
                                            catch
                                            {
                                                PageapiHitsCount = PageMaxapiHitsCount;
                                            }
                                        }

                                        fbAcc.PageShareathonUpdate = DateTime.UtcNow;
                                        dbr.Update(fbAcc);
                                    }
                                    else
                                    {
                                        FilterDefinition <BsonDocument> filter =
                                            new BsonDocument("strId", shareathon.strId);
                                        var update = Builders <BsonDocument> .Update.Set("FacebookStatus", 1);

                                        shareathonRepository.Update <PageShareathon>(update, filter);
                                    }
                                }
                            }
                            catch
                            {
                                PageapiHitsCount = PageMaxapiHitsCount;
                            }
                        }
                    }
                }
                catch (Exception)
                {
                }

                GlobalVariable.pageShareathonIdsRunning.Remove(shareathon.strId);
            }
            catch (Exception e)
            {
                PageapiHitsCount = PageMaxapiHitsCount;
                Console.WriteLine(e.Message);
            }
            finally
            {
                NoOfthreadPageshreathonRunning--;
            }
        }
        private static IEnumerable <FacebookPagePromotionDetails> ParseTagAndPromoteDetails(Facebookaccounts facebookAccount, string taggedDetails, FacebookPagePromotion facebookPagePromotion = FacebookPagePromotion.Tagged)
        {
            var data = JObject.Parse(taggedDetails);

            var taggedDetailCollections = new List <FacebookPagePromotionDetails>();

            foreach (var item in data["data"])
            {
                var inboxMessages = new FacebookPagePromotionDetails
                {
                    ProfileId = facebookAccount.FbUserId,
                    type      = facebookPagePromotion,
                    EntryDate = SBHelper.ConvertToUnixTimestamp(DateTime.UtcNow)
                };
                try
                {
                    inboxMessages.message         = item.SelectToken("message")?.ToString();
                    inboxMessages.FeedId          = item.SelectToken("id")?.ToString();
                    inboxMessages.FromId          = item.SelectToken("from.id")?.ToString();
                    inboxMessages.FromName        = item.SelectToken("from.name")?.ToString();
                    inboxMessages.FromProfileUrl  = "http://graph.facebook.com/" + inboxMessages.FromId + "/picture?type=small";
                    inboxMessages.FeedDate        = SBHelper.ConvertToUnixTimestamp(Convert.ToDateTime(item.SelectToken("created_time")?.ToString()));
                    inboxMessages.Picture         = item.SelectToken("picture")?.ToString();
                    inboxMessages.FeedDescription = item.SelectToken("description")?.ToString();
                    taggedDetailCollections.Add(inboxMessages);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
            return(taggedDetailCollections);
        }