コード例 #1
0
 public void InsertDayFeed(FbWkPostIdData model)
 {
     DataProvider.ExecuteNonQuery(storedProc : "dbo.Fb_Data_Insert", inputParamMapper : delegate(SqlParameterCollection paramCollection)
     {
         paramCollection.AddWithValue("@Id", model.Id);
         paramCollection.AddWithValue("@Date", model.Date);
         paramCollection.AddWithValue("@DateString", model.DateString);
         paramCollection.AddWithValue("@Posts", model.Posts);
         paramCollection.AddWithValue("@Reactions", model.Reactions);
         paramCollection.AddWithValue("@Likes", model.Likes);
         paramCollection.AddWithValue("@Shares", model.Shares);
         paramCollection.AddWithValue("@Comments", model.Comments);
     });
 }
コード例 #2
0
        public HttpResponseMessage Posts(string name)
        {
            //Facebook App Auth Token below
            string token           = _configService.getConfigValusAsString("FbAppAuthToken"); //"340834969679482 |VZHv9QJUimMQxf0Z3GDYN6EGFX4";
            string site            = name;
            int    feedPerCall     = 100;
            int    daysInTimeFrame = 30;
            string userId          = "";

            try
            {
                string   item   = _facebookService.GetFbFeed(token, site, feedPerCall);
                FeedData fbFeed = new JavaScriptSerializer().Deserialize <FeedData>(item);

                userId = fbFeed.Id.ToString();
                List <FeedItem> al = new List <FeedItem>();

                //Time frame for Feed to get set to One week
                var timeFrame = DateTime.Today.Date.AddDays(-daysInTimeFrame);

                bool   moreFeed = false;
                string next;
                //Gets First batch of feed and adds to array all that is within timeframe
                if (fbFeed.Feed.Data[feedPerCall - 1].Created_Time > timeFrame)
                {
                    for (var i = 0; i < feedPerCall; i++)
                    {
                        al.Add(fbFeed.Feed.Data[i]);
                    }
                    moreFeed = true;
                }
                else
                {
                    bool continueLoop = true;
                    var  i            = 0;
                    while (continueLoop)
                    {
                        if (fbFeed.Feed.Data[i].Created_Time < timeFrame)
                        {
                            continueLoop = false;
                            continue;
                        }
                        al.Add(fbFeed.Feed.Data[i]);
                        i++;
                    }
                }
                //Loops and adds more Feed until time frame is past
                if (moreFeed)
                {
                    next = fbFeed.Feed.Paging.Next;
                    bool stopper = true;

                    while (stopper)
                    {
                        string nextItem   = _facebookService.GetFbFeedNext(next);
                        Feed   fbFeedNext = new JavaScriptSerializer().Deserialize <Feed>(nextItem);

                        if (fbFeedNext.Data[feedPerCall - 1].Created_Time > timeFrame)
                        {
                            for (var i = 0; i < feedPerCall; i++)
                            {
                                al.Add(fbFeedNext.Data[i]);
                            }
                            next = fbFeedNext.Paging.Next;
                        }
                        else
                        {
                            bool continueLoop = true;
                            var  i            = 0;
                            while (continueLoop)
                            {
                                if (fbFeedNext.Data[i].Created_Time < timeFrame)
                                {
                                    continueLoop = false;
                                }
                                al.Add(fbFeedNext.Data[i]);
                                i++;
                            }
                            stopper = false;
                        }
                    }
                }

                List <FbPostData> stats = new List <FbPostData>();
                //Loops thru all of the feed and gets likes, comments, shares, and reactions for each
                for (var i = 0; i < al.Count; i++)
                {
                    string     iPost    = al[i].Id;
                    string     postData = _facebookService.GetPostData(token, iPost);
                    FbPostData post     = new JavaScriptSerializer().Deserialize <FbPostData>(postData);
                    post.Date = al[i].Created_Time;
                    stats.Add(post);
                }

                List <FbWkPostIdData> lpd = new List <FbWkPostIdData>();
                FbWkPostIdData        pd  = new FbWkPostIdData();
                pd.Shares     = 0;
                pd.Likes      = 0;
                pd.Reactions  = 0;
                pd.Comments   = 0;
                pd.Date       = stats[0].Date.Date;
                pd.DateString = stats[0].Date.ToString(@"MM/dd/yy");
                pd.Posts      = 0;
                pd.Id         = userId;

                for (var i = 0; i < al.Count; i++)
                {
                    if (stats[i].Date.Date == pd.Date.Date)
                    {
                        pd.Posts++;
                        pd.Likes     += stats[i].Likes.Summary.Total_Count;
                        pd.Reactions += stats[i].Reactions.Summary.Total_Count;
                        pd.Comments  += stats[i].Comments.Summary.Total_Count;

                        if (stats[i].Shares == null)
                        {
                            if (i == al.Count - 1)
                            {
                                lpd.Add(pd);
                            }
                            continue;
                        }
                        pd.Shares += stats[i].Shares.Count;
                        if (i == al.Count - 1)
                        {
                            lpd.Add(pd);
                        }
                    }
                    else
                    {
                        while (stats[i].Date.Date != pd.Date.Date.AddDays(-1))
                        {
                            lpd.Add(pd);
                            DateTime prev = pd.Date.Date.AddDays(-1);
                            pd            = new FbWkPostIdData();
                            pd.Id         = userId;
                            pd.Posts      = 0;
                            pd.Date       = prev;
                            pd.DateString = pd.Date.ToString(@"MM/dd/yy");
                            pd.Likes      = 0;
                            pd.Reactions  = 0;
                            pd.Comments   = 0;
                            pd.Shares     = 0;
                        }
                        lpd.Add(pd);
                        pd            = new FbWkPostIdData();
                        pd.Id         = userId;
                        pd.Posts      = 1;
                        pd.Date       = stats[i].Date.Date;
                        pd.DateString = stats[i].Date.ToString(@"MM/dd/yy");
                        pd.Likes      = stats[i].Likes.Summary.Total_Count;
                        pd.Reactions  = stats[i].Reactions.Summary.Total_Count;
                        pd.Comments   = stats[i].Comments.Summary.Total_Count;

                        if (stats[i].Shares == null)
                        {
                            pd.Shares = 0;
                            continue;
                        }

                        pd.Shares = stats[i].Shares.Count;
                    }

                    if (stats[i].Shares == null)
                    {
                        continue;
                    }
                }

                foreach (FbWkPostIdData dbPost in lpd)
                {
                    _facebookDbService.InsertDayFeed(dbPost);
                }

                return(Request.CreateResponse(HttpStatusCode.OK, lpd));
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }