コード例 #1
0
ファイル: CommentsController.cs プロジェクト: msanj1/BOTF
        public HttpResponseMessage Delete(Viewdelete delete)
        {
            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK);

                if (delete.isFacebook)
                  {
                      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);
                          int status = facebook.deleteComment(delete.Id.ToString(),delete.PostId); //delete comment from a post on facebook
                          if (status == 1)
                          {
                              return Request.CreateResponse(HttpStatusCode.NotFound);
                          }
                          else if (status == 2)
                          {
                              return Request.CreateResponse(HttpStatusCode.BadGateway);
                          }
                          else if (status == 3)
                          {
                              return Request.CreateResponse(HttpStatusCode.BadRequest);
                          }
                      }
                  }
                  else
                  {
                      int id = Convert.ToInt32(delete.Id);
                      Comment comment = _db.Comment.FirstOrDefault(c => c.Id == id);
                      _db.Comment.Remove(comment);
                      _db.SaveChanges();
                  }
                  return response;
        }
コード例 #2
0
        public IEnumerable<Models.User> Get()
        {
            List<Models.User> friends = new List<Models.User>();

                var token = _db.User.FirstOrDefault(c => c.UserId == WebSecurity.CurrentUserId).Services.FirstOrDefault(c => c.Provider == "facebook").Token;
                if (token != null)
                {
                    FacebookAPI facebook = new FacebookAPI(token);
                    dynamic status = facebook.GetFacebookUsersFriends();
                    if (!(status is int) && status.ContainsKey("data"))
                    {
                        foreach (var friend in status.data)
                        {
                            //do something here
                            string id = friend.uid2;
                            var username = OAuthWebSecurity.GetUserName("facebook", id);
                            if (username != null)
                            {
                                var local_id = WebSecurity.GetUserId(username);
                                Models.User user = _db.User.FirstOrDefault(c => c.UserId == local_id);
                                if (user != null)
                                {
                                    friends.Add(user);

                                }
                            }
                        }
                    }
                }

               return friends;
        }
コード例 #3
0
ファイル: FacebookScheduler.cs プロジェクト: msanj1/BOTFv2
        public void RunScheduler(string NewToken, int CurrentLoggedInUser)
        {
            ContextDb        _db      = new ContextDb();
            DatabaseCallsApi _api     = new DatabaseCallsApi();
            FacebookAPI      facebook = new FacebookAPI(NewToken);

            _api.AddOrUpdateService(CurrentLoggedInUser, "facebook", NewToken); //update user's token

            var Proposals_lists = _db.FacebookPostSchedule.Where(c => c.UserId == CurrentLoggedInUser && c.ErrorCode != 900).ToList();


            var Comments_lists = _db.FacebookCommentSchedule.Where(c => c.UserId == CurrentLoggedInUser && c.ErrorCode != 900).ToList();

            if (Proposals_lists.Count > 0)
            {
                //


                foreach (var post in Proposals_lists)
                {
                    Proposal proposal = _db.Proposal.FirstOrDefault(c => c.Id == post.ProposalID);
                    if (proposal != null)
                    {
                        dynamic status;
                        if (post.ArtistPost)
                        {
                            status = facebook.InsertToArtistFeed(proposal, CurrentLoggedInUser, System.Web.HttpContext.Current.Request.UrlReferrer.ToString());
                            if (!(status is int))
                            {
                                proposal.FacebookPostIdArtist = status.id;
                                _db.FacebookPostSchedule.Remove(post);
                                _db.SaveChanges();
                            }
                        }
                        else
                        {
                            status = facebook.InsertToFeed(proposal, CurrentLoggedInUser, System.Web.HttpContext.Current.Request.UrlReferrer.ToString());
                            if (!(status is int))
                            {
                                proposal.FacebookPostId = status.id;
                                _db.FacebookPostSchedule.Remove(post);
                                _db.SaveChanges();
                            }
                        }
                        //do something
                    }
                    else
                    {
                        _db.FacebookPostSchedule.Remove(post);
                        _db.SaveChanges();
                    }
                }
                //
            }
            if (Comments_lists.Count > 0)
            {
                foreach (var comment in Comments_lists)
                {
                    int status = facebook.postCommentToPost(comment.FacebookPostId, comment.Body, comment.UserId);
                    if (status == 0)
                    {
                        _db.FacebookCommentSchedule.Remove(comment);
                        _db.SaveChanges();
                    }
                }
            }
        }
コード例 #4
0
ファイル: CommentsController.cs プロジェクト: msanj1/BOTF
        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();
        }
コード例 #5
0
ファイル: CommentsController.cs プロジェクト: msanj1/BOTF
        public HttpResponseMessage PostComment(ViewComment comment)
        {
            if (ModelState.IsValid)
            {

                    HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created);
                    _db.Comment.Add(new Comment { ProposalId = comment.Id, Body = comment.Body, CreatedBy = WebSecurity.CurrentUserId, CreatedDate = DateTime.UtcNow });
                    _db.SaveChanges();

                        Service service = _db.User.FirstOrDefault(c => c.UserId == WebSecurity.CurrentUserId).Services.FirstOrDefault(c => c.Provider == "facebook"); //get service for posting to feed
                        Proposal proposal = _db.Proposal.FirstOrDefault(c=>c.Id == comment.Id && c.FacebookPostId != null && c.FacebookPostId != "");
                        if (service != null && proposal != null)
                        {
                            FacebookAPI facebook = new FacebookAPI(service.Token);
                            int status =  facebook.postCommentToPost(proposal.FacebookPostId, comment.Body,WebSecurity.CurrentUserId);

                            if (status == 1)
                            {
                                 return Request.CreateResponse(HttpStatusCode.NotFound);
                            }
                            else if(status == 2)
                            {
                                return Request.CreateResponse(HttpStatusCode.BadGateway);
                            }
                            else if (status == 3)
                            {
                                return Request.CreateResponse(HttpStatusCode.BadRequest);
                            }
                            //facebook.postCommentToPost();
                        }

                    return response;

            }
            else
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }
        }
コード例 #6
0
ファイル: FacebookScheduler.cs プロジェクト: msanj1/BOTF
        public void RunScheduler(string NewToken, int CurrentLoggedInUser)
        {
            ContextDb _db = new ContextDb();
            DatabaseCallsApi _api = new DatabaseCallsApi();
            FacebookAPI facebook = new FacebookAPI(NewToken);
            _api.AddOrUpdateService(CurrentLoggedInUser, "facebook", NewToken); //update user's token

            var Proposals_lists = _db.FacebookPostSchedule.Where(c => c.UserId == CurrentLoggedInUser && c.ErrorCode != 900).ToList() ;

            var Comments_lists = _db.FacebookCommentSchedule.Where(c => c.UserId == CurrentLoggedInUser && c.ErrorCode != 900).ToList() ;
            if (Proposals_lists.Count >0)
            {

               //

                foreach (var post in Proposals_lists)
                {

                    Proposal proposal = _db.Proposal.FirstOrDefault(c => c.Id == post.ProposalID);
                    if (proposal != null)
                    {
                        dynamic status;
                        if (post.ArtistPost)
                        {
                            status = facebook.InsertToArtistFeed(proposal, CurrentLoggedInUser, System.Web.HttpContext.Current.Request.UrlReferrer.ToString());
                            if (!(status is int))
                            {
                                proposal.FacebookPostIdArtist = status.id;
                                _db.FacebookPostSchedule.Remove(post);
                                _db.SaveChanges();
                            }
                        }
                        else
                        {
                            status = facebook.InsertToFeed(proposal, CurrentLoggedInUser, System.Web.HttpContext.Current.Request.UrlReferrer.ToString());
                            if (!(status is int))
                            {
                                proposal.FacebookPostId = status.id;
                                _db.FacebookPostSchedule.Remove(post);
                                _db.SaveChanges();
                            }
                        }
                        //do something
                    }
                    else
                    {
                        _db.FacebookPostSchedule.Remove(post);
                        _db.SaveChanges();
                    }
                }
              //
            }
            if (Comments_lists.Count > 0)
            {

                foreach (var comment in Comments_lists)
                {
                    int status = facebook.postCommentToPost(comment.FacebookPostId, comment.Body, comment.UserId);
                    if (status == 0)
                    {
                        _db.FacebookCommentSchedule.Remove(comment);
                        _db.SaveChanges();
                    }

                }
            }
        }
コード例 #7
0
        public HttpResponseMessage Post(int Id, bool ArtistPost)
        {
            Proposal currProposal =  _db.Proposal.FirstOrDefault(c=>c.Id == Id);
               Models.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);

                   if (service != null && currProposal != null)
                   {
                       dynamic status;
                       if (ArtistPost)
                       {
                           status = facebook.InsertToArtistFeed(currProposal, WebSecurity.CurrentUserId, System.Web.HttpContext.Current.Request.UrlReferrer.ToString());
                       }
                       else
                       {
                           status = facebook.InsertToFeed(currProposal, WebSecurity.CurrentUserId,System.Web.HttpContext.Current.Request.UrlReferrer.ToString());
                       }

                       if (status is int && status == 1)
                       {
                           return Request.CreateResponse(HttpStatusCode.NotFound);
                       }
                       else if (status is int && status == 2)
                       {
                           return Request.CreateResponse(HttpStatusCode.BadGateway);
                       }
                       else if (status is int && status == 3)
                       {
                           return Request.CreateResponse(HttpStatusCode.BadRequest);
                       }
                       else if (status is int && status == 4)
                       {
                           return Request.CreateResponse(HttpStatusCode.Created);
                       }
                       else
                       {
                           if (ArtistPost)
                           {
                               _api.AddOrUpdateFacebookArtistPost(currProposal.Id, WebSecurity.CurrentUserId, status["id"].ToString()); //saving post id from facebook
                           }
                           else
                           {
                               _api.AddOrUpdateFacebookPost(currProposal.Id, WebSecurity.CurrentUserId, status["id"].ToString());
                           }

                           return Request.CreateResponse(HttpStatusCode.Created);
                       }
                   }

               }

               return Request.CreateResponse(HttpStatusCode.BadRequest);
        }