public bool SaveSchedulePin(PinterestScheduledPin PinInfo)
        {
            try
            {
                if (PinInfo.Id == 0)
                {
                    var task = _scheduleTaskRepo.AddAndReturn(PinInfo);
                    _unitOfWork.Commit();
                    double secondsToAdd = (PinInfo.ScheduleDate - DateTime.UtcNow).TotalSeconds;
                    task.jobId = BackgroundJob.Schedule <IPinterestServices>(
                        x => x.PostSchedulePin(task.Id, PinInfo.SocialId),
                        TimeSpan.FromSeconds(secondsToAdd));
                }
                else
                {
                    //PinInfo.image_url = GetASchedulePin(PinInfo.Id).image_url;
                    var temp = _scheduleTaskRepo.Get().Where(x => x.Id == PinInfo.Id).FirstOrDefault();
                    BackgroundJob.Delete(temp.jobId);
                    temp.image_url    = PinInfo.image_url;
                    temp.note         = PinInfo.note;
                    temp.jobId        = PinInfo.jobId;
                    temp.ScheduleDate = PinInfo.ScheduleDate;
                    temp.link         = PinInfo.link;
                    temp.board        = PinInfo.board;
                }
                _unitOfWork.Commit();

                return(true);
            }
            catch (Exception)
            {
                BackgroundJob.Delete(PinInfo.jobId);
                return(false);
            }
        }
 public void PostSchedulePin(int schedulePinId, int socialId)
 {
     try
     {
         var accessDetials = _socialMedia.Get().Include(x => x.AccessDetails).Where(x => x.Id == socialId).FirstOrDefault().AccessDetails;
         var task          = _scheduleTaskRepo.Get().Where(x => x.Id == schedulePinId).FirstOrDefault();
         task.image_url = ConfigurationSettings.AppSettings["ImageBaseURL"] + "/Images/SchedulePins/" + task.image_url;
         PinterestScheduledPin pinInfo = new PinterestScheduledPin()
         {
             board = task.board, note = task.note, image_url = task.image_url
         };
         if (CreatePin(pinInfo, accessDetials))
         {
             var usersBoard = GetAllBoard(accessDetials);
             var userName   = GetUserprofile(accessDetials).data.username;
             var boardName  = string.Empty;
             foreach (var item in usersBoard)
             {
                 if (pinInfo.board == item.id)
                 {
                     boardName = item.name;
                 }
             }
             _userService.SaveActivity(new Activities {
                 socialId = socialId, Activity = Activity.PinIt.ToString(), ActivityDate = DateTime.UtcNow, Tag = '@' + boardName, Username = userName
             });
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
 public bool CreatePin(PinterestScheduledPin pinInfo, AccessDetails Token)
 {
     try
     {
         var request = new RestRequest("v1/pins/", Method.POST);
         //request.AddHeader("Content-Type", "application/json");
         //request.AddHeader("Authorization", "OAuth " + token);
         request.AddParameter("access_token", Token.AccessToken);
         request.AddParameter("board", pinInfo.board);
         request.AddParameter("note", pinInfo.note);
         request.AddParameter("image_url", pinInfo.image_url);
         //request.AddBody("link", Token.AccessToken);
         var response = WebServiceHelper.WebRequest(request, ApiURL);
         if (response.StatusCode.ToString() == "Created")
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
     catch (Exception)
     {
         return(false);
     }
 }
예제 #4
0
 public ActionResult SaveSchedulePin(PinterestScheduledPin PinInfo)
 {
     try
     {
         PinInfo.ScheduleDate = PinInfo.ScheduleDate.ToUniversalTime();
         var result = _pinterestService.SaveSchedulePin(PinInfo);
         return(Json(result, JsonRequestBehavior.AllowGet));
     }
     catch (Exception)
     {
         return(Json(false, JsonRequestBehavior.AllowGet));
     }
 }
        public async void FollowingBoardPinTask(SocialMediaVM acc, List <Tags> tags)
        {
            try
            {
                var followingBoards = GetUsersFollowingBoard(acc.AccessDetails);
                var boardMapping    = _boardMapRepo.Get().Where(x => x.SocialId == acc.Id).ToList();
                var usersFollowers  = GetUserFollowers(acc.AccessDetails);
                var myBoards        = GetAllBoard(acc.AccessDetails);
                if (followingBoards.Count() > 0)
                {
                    int  count = 0;
                    int  pinterestPinPerFollowingBoard   = Int16.Parse(ConfigurationSettings.AppSettings["pinterestPinPerFollowingBoard"].ToString());
                    int  limitForPinningFollowPerAccount = Int16.Parse(ConfigurationSettings.AppSettings["pinterestPinPerFollowingBoard"].ToString());
                    bool BreakLoop = false;
                    foreach (var board in followingBoards)
                    {
                        if (BreakLoop)
                        {
                            break;
                        }
                        var allPins     = GetBoardsPin(board.id, acc.AccessDetails);                                                                //API
                        var pinsCreated = _activityRepo.Get().Where(x => x.socialId == acc.Id && x.Activity == Activity.PinIt.ToString()).ToList(); //Table
                        //Get Missing Pins
                        var pins = allPins.Where(p => !pinsCreated.Any(f => f.OriginalPostId == p.id))
                                   .Select(m => new { m.id, m.image, m.creator, m.link, m.note }).ToList();
                        if (pins.Count() > 0)
                        {
                            foreach (var pin in pins.Take(pinterestPinPerFollowingBoard))
                            {       //Follow creator user of a pin in following board
                                bool allow = true;
                                foreach (var item in tags.ToList().Where(x => x.IsBlocked == true).ToList())
                                {
                                    if (pin.note.Contains(item.TagName) == true)
                                    {
                                        allow = false;
                                    }
                                }
                                if (allow == true)
                                {
                                    var creatorUserName = GetUserInfo(pin.creator.id, acc.AccessDetails).data.username;

                                    if (usersFollowers.Where(x => x.id == pin.creator.id).FirstOrDefault() == null)
                                    {
                                        var result = FollowUser(pin.creator.id, acc.AccessDetails);
                                        if (result == true)
                                        {
                                            _userService.SaveActivity(new Activities {
                                                SMId = pin.creator.id, socialId = acc.Id, Activity = Activity.Follow.ToString(), ActivityDate = DateTime.UtcNow, Tag = '@' + board.name, Username = creatorUserName
                                            });
                                            count++;
                                            await Task.Delay(100000);
                                        }
                                    }

                                    //creating pin from following boards
                                    if (_activityRepo.Get().Where(x => x.socialId == acc.Id && x.OriginalPostId == pin.id).FirstOrDefault() == null)
                                    {
                                        string boardIdToPin = string.Empty;
                                        var    check        = boardMapping.Where(x => x.FollowingBoardId == board.id).FirstOrDefault();
                                        if (check == null)
                                        {
                                            Random r = new Random();
                                            boardIdToPin = myBoards[r.Next(myBoards.Count())].id;
                                        }
                                        else
                                        {
                                            boardIdToPin = check.MyBoardId;
                                        }
                                        PinterestScheduledPin pinInfo = new PinterestScheduledPin()
                                        {
                                            board = boardIdToPin, note = pin.note, image_url = pin.image.original.url
                                        };
                                        if (CreatePin(pinInfo, acc.AccessDetails))
                                        {
                                            var newPinDetail = GetUserRecentPin(acc.AccessDetails);
                                            _userService.SaveActivity(new Activities {
                                                SMId = pin.creator.id, socialId = acc.Id, Activity = Activity.PinIt.ToString(), ActivityDate = DateTime.UtcNow, Tag = '@' + board.name, OriginalPostId = pin.id, PostId = newPinDetail.id, Username = creatorUserName
                                            });
                                            count++;
                                            await Task.Delay(100000);
                                        }
                                    }
                                }

                                if (count > limitForPinningFollowPerAccount)
                                {
                                    BreakLoop = true;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }