in Functions/Code/Facebook/FacebookUtillity/MainETL.cs [83:178]
public static void PopulatePostCommentsAndReactions(DataTable postsDataTable, DataTable commentsDataTable,
DataTable reactionsDataTable, List<JObject> posts, string page, JObject pageObj)
{
foreach (var postPayload in posts)
{
foreach (var post in postPayload["data"])
{
DataRow postRow = postsDataTable.NewRow();
postRow["Id"] = post["id"];
postRow["Created Date"] = post["created_time"];
postRow["Message"] = post["message"];
postRow["From Id"] = post["from"]?["id"];
int maxLength = 0;
if (post["from"]?["name"] != null)
{
maxLength = Math.Min((post["from"]["name"].ToString().Length), 100);
}
postRow["From Name"] = post["from"]?["name"].ToString().Substring(0, maxLength);
postRow["Media"] = post["picture"];
postRow["Page"] = page;
postRow["PageId"] = pageObj["id"].ToString();
postRow["PageDisplayName"] = pageObj["name"];
if (post["comments"]["data"].Count() == 100)
{
postRow["Total Comments"] = Utility.ConvertToLong(post["comments"]["summary"]["total_count"]); ;
}
else
{
postRow["Total Comments"] = post["comments"]["data"].Count();
}
postsDataTable.Rows.Add(postRow);
foreach (var comment in post["comments"]["data"])
{
DataRow commentRow = commentsDataTable.NewRow();
commentRow["Id"] = comment["id"];
commentRow["Created Date"] = comment["created_time"];
commentRow["Message"] = comment["message"];
commentRow["From Id"] = comment["from"]?["id"];
if (comment["from"]?["name"] != null)
{
maxLength = Math.Min(comment["from"]["name"].ToString().Length, 100);
}
commentRow["From Name"] = comment["from"]?["name"].ToString().Substring(0, maxLength);
commentRow["Post Id"] = post["id"];
commentRow["Page"] = page;
commentRow["PageId"] = pageObj["id"].ToString();
commentRow["PageDisplayName"] = pageObj["name"];
commentsDataTable.Rows.Add(commentRow);
}
DataRow likeRow = reactionsDataTable.NewRow();
likeRow["Id"] = post["id"];
likeRow["Reaction Type"] = "Like";
likeRow["Count"] = Utility.ConvertToLong(post["reactions_like"]["summary"]["total_count"]);
DataRow hahaRow = reactionsDataTable.NewRow();
hahaRow["Id"] = post["id"];
hahaRow["Reaction Type"] = "Haha";
hahaRow["Count"] = Utility.ConvertToLong(post["reactions_haha"]["summary"]["total_count"]);
DataRow sadRow = reactionsDataTable.NewRow();
sadRow["Id"] = post["id"];
sadRow["Reaction Type"] = "Sad";
sadRow["Count"] = Utility.ConvertToLong(post["reactions_sad"]["summary"]["total_count"]);
DataRow loveRow = reactionsDataTable.NewRow();
loveRow["Id"] = post["id"];
loveRow["Reaction Type"] = "Love";
loveRow["Count"] = Utility.ConvertToLong(post["reactions_love"]["summary"]["total_count"]);
DataRow angryRow = reactionsDataTable.NewRow();
angryRow["Id"] = post["id"];
angryRow["Reaction Type"] = "Angry";
angryRow["Count"] = Utility.ConvertToLong(post["reactions_angry"]["summary"]["total_count"]);
DataRow wowRow = reactionsDataTable.NewRow();
wowRow["Id"] = post["id"];
wowRow["Reaction Type"] = "Wow";
wowRow["Count"] = Utility.ConvertToLong(post["reactions_wow"]["summary"]["total_count"]);
reactionsDataTable.Rows.Add(likeRow);
reactionsDataTable.Rows.Add(hahaRow);
reactionsDataTable.Rows.Add(sadRow);
reactionsDataTable.Rows.Add(loveRow);
reactionsDataTable.Rows.Add(angryRow);
reactionsDataTable.Rows.Add(wowRow);
}
}
}