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); } }
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; } }