public IEnumerable <ViewCommentHistory> Get([FromUri] int Id) { List <Comment> list = _db.Comment.Select(c => c).Where(c => c.ProposalId == Id).ToList(); List <ViewCommentHistory> output = new List <ViewCommentHistory>(); foreach (var item in list) { Models.User user = _db.User.FirstOrDefault(c => c.UserId == item.CreatedBy); if (item.CreatedBy == WebSecurity.CurrentUserId)//check if owner of the comment { output.Add(new ViewCommentHistory { Id = item.Id.ToString(), Body = item.Body, CreatedBy = user.Name, DateCreated = item.CreatedDate.ToString(@"yyyy-MM-ddTHH\:mm\:ss.fffffffzzz"), UserId = user.Id.ToString(), isFacebook = false }); } else { output.Add(new ViewCommentHistory { Body = item.Body, CreatedBy = user.Name, DateCreated = item.CreatedDate.ToString(@"yyyy-MM-ddTHH\:mm\:ss.fffffffzzz"), UserId = user.UserId.ToString(), isFacebook = false }); } } //get a service facebook or twitter Service service = _db.User.FirstOrDefault(c => c.UserId == WebSecurity.CurrentUserId).Services.FirstOrDefault(c => c.Provider == "facebook"); if (service != null) { FacebookAPI facebook = new FacebookAPI(service.Token); Proposal proposal = _db.Proposal.FirstOrDefault(c => c.Id == Id && c.FacebookPostId != null && c.FacebookPostId != ""); if (proposal != null) { dynamic comments = facebook.getComments(proposal.FacebookPostId); //get facebook post comments if ((comments is int) == false && comments != null && comments.ContainsKey("data")) { foreach (dynamic item in comments.data) { string id = item.id; string body = item.message; string created_date = item.created_time; string created_by = item.from.name; string created_by_facebookID = item.from.id; string userID = OAuthWebSecurity.GetUserName("facebook", created_by_facebookID); var LoggedInUserID = OAuthWebSecurity.GetAccountsFromUserName(userID).FirstOrDefault(c => c.Provider == "facebook").ProviderUserId; if (LoggedInUserID != null && LoggedInUserID == created_by_facebookID) { output.Add(new ViewCommentHistory { Id = id, Body = body, DateCreated = created_date, CreatedBy = created_by, UserId = created_by_facebookID, isFacebook = true, Artist = false }); } else { output.Add(new ViewCommentHistory { Body = body, DateCreated = created_date, CreatedBy = created_by, UserId = created_by_facebookID, isFacebook = true, Artist = false }); } } } output = output.OrderByDescending(c => DateTime.Parse(c.DateCreated)).ToList(); //reorder the comments if (proposal.FacebookPostIdArtist != "" && proposal.FacebookPostIdArtist != null) //used to identify if an artist post has been made if yes then grab the latest comment from Artist { comments = facebook.getComments(proposal.FacebookPostIdArtist); if ((comments is int) == false && comments != null && comments.ContainsKey("data")) { foreach (dynamic item in comments.data) { string id = item.id; string body = item.message; string created_date = item.created_time; string created_by = item.from.name; string created_by_facebookID = item.from.id; output.Insert(0, new ViewCommentHistory { Body = body, DateCreated = created_date, CreatedBy = created_by, UserId = created_by_facebookID, isFacebook = true, Artist = true }); break; } } } } proposal = _db.Proposal.FirstOrDefault(c => c.Id == Id && c.FacebookPostId != null && c.FacebookPostId != ""); } output = output.OrderByDescending(c => DateTime.Parse(c.DateCreated)).ToList(); return(output.ToList()); }