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); }); }
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)); } }