Example #1
0
        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());
        }