Esempio n. 1
0
        /// <summary>
        /// Algo wrapper for twitter accounts.
        /// </summary>
        /// <param name="acc"></param>
        /// <returns></returns>
        public async Task <bool> scheduleAlgo(SocialMediaVM acc)
        {
            try
            {
                var                    startTime  = DateTime.UtcNow;
                List <Tags>            tags       = _tagRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList();
                List <SuperTargetUser> targetUser = _superTargetUserRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList();
                if (acc.IsSubscribed == true)
                {
                    var planDetails = _userService.GetASubscriptionPlan(acc.planId);
                    if (planDetails.AllowSuperTargeting == true)
                    {
                        await SuperTargeting(targetUser, tags, acc); //if supertargetting is allowed in plan.
                    }
                    if (planDetails.AllowNegativeTags == false)
                    {
                        tags.RemoveAll(x => x.IsBlocked == true); //disabling negative keywords checking by removing blocked tags from list.
                    }
                    await SearchPostUsingTag(tags, acc);
                }
                else if (acc.IsTrail == true)
                {
                    await SearchPostUsingTag(tags, acc);
                    await SuperTargeting(targetUser, tags, acc);
                }
                UpdateProfile(acc.AccessDetails, acc.Id);
                _userService.SaveFollowersCount(acc.Id, GetUserprofile(acc.AccessDetails).FollowersCount);

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
 /// <summary>
 /// Method to get algo for tags and super target user for sandbox user
 /// </summary>
 /// <param name="acc"></param>
 public void scheduleAlgo(SocialMediaVM acc)
 {
     try
     {
         if (GetUserprofile(acc.AccessDetails).IsAccountValid == true)
         {
             List <Tags>            tags       = _tagRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList();
             List <SuperTargetUser> targetUser = _targetUserRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList();
             SearchPostUsingTag(tags, acc);
             UpdateProfile(acc.AccessDetails, acc.Id);
             _userService.SaveFollowersCount(acc.Id, GetUserprofile(acc.AccessDetails).counts.followed_by);
             CheckForConversion(acc);
         }
         else
         {
             var accountDetails = _socialMedia.Get().Where(x => x.Id == acc.Id).FirstOrDefault();
             accountDetails.IsInvalid = true;
             accountDetails.Status    = false;
             _unitOfWork.Commit();
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
Esempio n. 3
0
        public bool TracksToPlaylist(SocialMediaVM acc, string suggestedTrackIds, string playlistId)
        {
            try
            {
                var TrackIdStack = suggestedTrackIds.Split(',');
                foreach (var item in TrackIdStack)
                {
                    var trackId     = Int64.Parse(item);
                    var trackDetail = _trackSuggestionRepo.Get().Where(x => x.Id == trackId).FirstOrDefault();
                    var result      = AddToPlaylist(acc.Id, new AddToPlaylistParameter {
                        playlistId = playlistId, uri = trackDetail.uri, userId = acc.SMId
                    }, acc.AccessDetails);
                    if (result == false)
                    {
                        return(false);
                    }
                    else
                    {
                        trackDetail.IsAdded = true;
                        _unitOfWork.Commit();
                    }
                }

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Esempio n. 4
0
        /// <summary>
        /// method to check follower conversion
        /// </summary>
        /// <param name="acc"></param>
        /// <returns></returns>
        public async Task <bool> CheckForConversion(SocialMediaVM acc)
        {
            try
            {
                var accountActivity = _activityRepo.Get().Where(x => x.socialId == acc.Id).ToList();   // getting user's activity log
                var followers       = await GetFollowersList(long.Parse(acc.SMId), acc.AccessDetails); //getting user's followers list

                if (accountActivity.Count() != 0 || followers.Value.Count() != 0)
                {
                    foreach (var item in accountActivity)
                    {
                        foreach (var follower in followers.Value)
                        {
                            if (follower.ScreenName == item.Username && _userService.CheckIfUserConvert(item.SMId, item.socialId) == false)//checking if users from his activity log is in followers list
                            {
                                _userService.SaveConversion(new Conversions {
                                    SMId = acc.SMId, socialId = acc.Id, ConvertDate = DateTime.UtcNow, Username = item.Username, Tag = item.Tag
                                });
                            }
                        }
                    }
                }
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
 /// <summary>
 /// Method for search post using super target user
 /// </summary>
 /// <param name="targetUsers"></param>
 /// <param name="acc"></param>
 /// <param name="tags"></param>
 public void SuperTargeting(List <SuperTargetUser> targetUsers, SocialMediaVM acc, List <Tags> tags)
 {
     try
     {
         if (targetUsers.Count() > 0)
         {
             foreach (var item in tags)
             {
                 foreach (var user in targetUsers)
                 {
                     var followers = SearchTags(acc.AccessDetails, item.TagName);
                     var resList   = followers.Result.ToList();
                     foreach (var res in resList)
                     {
                         string id   = res.Id;
                         string name = res.user.username;
                         if (PostLike(acc.AccessDetails, id) == true)
                         {
                             _userService.SaveActivity(new Activities {
                                 Activity = Activity.Follow.ToString(), SMId = acc.SMId, socialId = acc.Id, PostId = id.ToString(), Tag = "@" + user.UserName, Username = name, ActivityDate = DateTime.UtcNow
                             });
                         }
                     }
                 }
             }
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
Esempio n. 6
0
        public async void TargetPlaylistTask(List <TargetPlaylist> playlists, SocialMediaVM acc)
        {
            try
            {
                if (playlists.Count() > 0)
                {
                    foreach (var playlist in playlists)
                    {
                        int  limit     = 0;
                        bool breakLoop = false;
                        int  count     = 0;
                        int  spotifytargetPlaylistUserArtistFollow = Int16.Parse(ConfigurationSettings.AppSettings["spotifytargetPlaylistUserArtistFollow"].ToString());
                        while (count < spotifytargetPlaylistUserArtistFollow || breakLoop == true)
                        {
                            var tracks = GetPlaylistTracks(playlist.PlaylistId, playlist.OwnerId, acc.Id, acc.AccessDetails, limit);
                            foreach (var item in tracks.items)
                            {
                                if (CheckArtistFollowedByUser(acc.Id, item.added_by.id, acc.AccessDetails, item.added_by.type) == false)
                                {
                                    if (Follow(acc.Id, item.added_by.id, acc.AccessDetails, item.added_by.type))
                                    {
                                        _userService.SaveActivity(new Activities {
                                            SMId = item.added_by.id, socialId = acc.Id, Activity = Activity.Follow.ToString(), ActivityDate = DateTime.UtcNow, Tag = '@' + playlist.Name, Username = item.added_by.display_name, UserType = item.added_by.type
                                        });
                                        count++;
                                        await Task.Delay(100000);
                                    }
                                }
                                if (CheckArtistFollowedByUser(acc.Id, item.track.artists[0].id, acc.AccessDetails, item.track.artists[0].type) == false)
                                {
                                    if (Follow(acc.Id, item.track.artists[0].id, acc.AccessDetails, item.track.artists[0].type))
                                    {
                                        _userService.SaveActivity(new Activities {
                                            SMId = item.track.artists[0].id, socialId = acc.Id, Activity = Activity.Follow.ToString(), ActivityDate = DateTime.UtcNow, Tag = '@' + playlist.Name, Username = item.added_by.display_name, UserType = item.track.artists[0].type
                                        });
                                        count++;
                                        await Task.Delay(100000);
                                    }
                                }
                            }
                            if (limit * 5 > tracks.total)
                            {
                                breakLoop = true;
                            }
                            limit++;
                        }//while end

                        var temp = _targetPlaylistRepo.Get().Where(x => x.Id == playlist.Id).FirstOrDefault();
                        temp.count = temp.count + 1;
                        _unitOfWork.Commit();
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
Esempio n. 7
0
        /// <summary>
        /// Search posts on the basis of tags & task regarding those post.
        /// </summary>
        /// <param name="tags"></param>
        /// <param name="acc"></param>
        /// <returns></returns>
        public async Task <bool> SearchPostUsingTag(List <Tags> tags, SocialMediaVM acc)
        {
            try
            {
                if (tags != null)
                {
                    foreach (var item in tags)
                    {
                        if (item.IsBlocked == false)
                        {
                            List <string> langCode = new List <string>();
                            if (acc.AccSettings.Language != null && acc.AccSettings.Language != string.Empty)
                            {
                                var languages = acc.AccSettings.Language.Split(',');
                                for (int i = 0; i < languages.Length; i++)
                                {
                                    langCode.Add(_userService.ReturnLanguageCode(languages[i])); //getting user's language preferences
                                }
                            }
                            if (langCode.Count() == 0)
                            {
                                langCode.Add("en"); //default language
                            }
                            foreach (var lang in langCode)
                            {
                                var tweets = await SearchTweet(item.TagName, lang, item.Location, acc.AccessDetails); //search posts on the basis of tags/lang preferences

                                if (tweets != null)
                                {
                                    foreach (var tweet in tweets.Value.Statuses)
                                    {
                                        var checkNegative = CheckForNegativeTag(tags, tweet); // checks whether posts contains negative tags
                                        if (tweet.IsFavorited != true && checkNegative != true)
                                        {
                                            var result = LikeTweet(tweet.Id, acc.AccessDetails); // Like tweets
                                            if (result == true)
                                            {                                                    //if like is done, activity is store.
                                                _userService.SaveActivity(new Activities {
                                                    Activity = Activity.Like.ToString(), SMId = acc.SMId, socialId = acc.Id, PostId = tweet.Id.ToString(), Tag = "#" + item.TagName, Username = tweet.User.ScreenName, ActivityDate = DateTime.UtcNow
                                                });
                                                await Task.Delay(100000);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
        public async void scheduleAlgo(SocialMediaVM acc)
        {
            List <Tags>            tags       = _tagRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList();
            List <SuperTargetUser> targetUser = _superTargetUserRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList();

            SearchPostUsingTag(tags, acc);
            SuperTargeting(targetUser, acc);
            UpdateProfile(acc.AccessDetails, acc.Id);
            SaveFollowersCount(acc.Id, GetUserprofile(acc.AccessDetails).FollowersCount);
        }
Esempio n. 9
0
        /// <summary>
        /// Get a particular account by Id
        /// </summary>
        /// <param name="socialId"></param>
        /// <returns></returns>
        public SocialMediaVM GetAccount(int socialId)
        {
            SocialMediaVM account      = new SocialMediaVM();
            var           today        = DateTime.UtcNow;
            var           acc          = _socialMediaRepo.Get().Where(x => x.Id == socialId && x.IsDeleted == false).Include(x => x.AccSettings).Include(x => x.AccessDetails).Include(x => x.AccSettings.Tags).Include(x => x.AccSettings.UserManagement).FirstOrDefault();
            var           subscription = _accountSubscriptionRepo.Get().ToList()
                                         .Join(_subscriptionPlanRepo.Get().ToList(), asr => asr.PlanId, sp => sp.Id, (asr, sp) => new { asr, sp })
                                         .Where(x => x.asr.socialIds == acc.Id.ToString() && x.asr.ExpiresOn > today)
                                         .Select(m => new
            {
                m.asr.ExpiresOn,
                m.asr.Id,
                m.asr.IsTrail,
                m.asr.PlanId,
                m.sp.Title
            }).FirstOrDefault();                             //account subscription details

            account.Id            = acc.Id;
            account.SMId          = acc.SMId;
            account.Status        = acc.Status;
            account.Followers     = acc.Followers;
            account.Provider      = acc.Provider;
            account.UserId        = acc.UserId;
            account.IsInvalid     = acc.IsInvalid;
            account.UserName      = acc.UserName;
            account.ProfilepicUrl = acc.ProfilepicUrl;
            account.AccessDetails = acc.AccessDetails;
            if (acc.AccSettings == null)
            {
                account.AccSettings = new AccSettings();
            }
            else
            {
                account.AccSettings = acc.AccSettings;
            }
            if (subscription == null) //checking is subscribed or is in trial
            {
                var CheckForTrail = _accountSubscriptionRepo.Get().Where(x => x.userId == acc.UserId && x.ExpiresOn > today && x.IsTrail == true).FirstOrDefault();
                if (CheckForTrail != null)
                {
                    account.ExpireOn     = CheckForTrail.ExpiresOn;
                    account.IsTrail      = true;
                    account.IsSubscribed = false;
                }
            }
            else
            {
                account.IsTrail      = false;
                account.IsSubscribed = true;
                account.ExpireOn     = subscription.ExpiresOn;
                account.planId       = subscription.PlanId.ToString();
                account.planName     = subscription.Title;
            }
            return(account);
        }
Esempio n. 10
0
        public void scheduleAlgo(SocialMediaVM acc)
        {
            List <Tags>            tags       = _tagRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList();
            List <SuperTargetUser> targetUser = _targetUserRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList();

            SearchPostUsingTag(tags, acc);
            SuperTargeting(targetUser, acc, tags);
            UpdateProfile(acc.AccessDetails, acc.Id);
            _userService.SaveFollowersCount(acc.Id, GetUserprofile(acc.AccessDetails).counts.followed_by);
            CheckForConversion(acc);
        }
Esempio n. 11
0
 public void SearchPostUsingTag(List <Tags> tags, SocialMediaVM acc)
 {
     try
     {
         if (tags.Count > 0)
         {
             foreach (var item in tags)
             {
                     << << << <.mine
                     if (item.IsBlocked == false)
                         {
 public void ScheduleAlgo(SocialMediaVM acc)
 {
     try
     {
         //var tasks = _scheduleTaskRepo.Get().Where(x => x.SocialId == acc.Id).ToList();
         List <Tags> tags = _tagRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList();
         FollowingBoardPinTask(acc, tags);
     }
     catch (Exception)
     {
         throw;
     }
 }
        public async void SearchPostUsingTag(List <Tags> tags, SocialMediaVM acc)
        {
            try
            {
                foreach (var item in tags)
                {
                    if (item.IsBlocked == false)
                    {
                            << << << <.mine
                            var tweets = await SearchTweet(item.TagName, "en", item.Location, acc.AccessDetails);

                        foreach (var tweet in tweets.Value.Statuses)
                        {
Esempio n. 14
0
        /// <summary>
        /// Getting all the social accounts in the application
        /// </summary>
        /// <returns></returns>
        public IEnumerable <SocialMediaVM> GetAllAccounts()
        {
            var accounts = _socialMediaRepo.Get().Include(x => x.AccSettings).Include(x => x.AccessDetails).Include(x => x.AccSettings.Tags).Include(x => x.AccSettings.SuperTargetUser).Where(x => x.IsDeleted == false).ToList();
            var today    = DateTime.UtcNow;
            List <SocialMediaVM> accountList = new List <SocialMediaVM>();

            foreach (var acc in accounts)
            {
                var subscription = _accountSubscriptionRepo.Get().Where(x => x.socialIds == acc.Id.ToString() && x.ExpiresOn > today).FirstOrDefault();

                var accountDetails = new SocialMediaVM()
                {
                    Id            = acc.Id,
                    SMId          = acc.SMId,
                    Status        = acc.Status,
                    Followers     = acc.Followers,
                    Provider      = acc.Provider,
                    UserId        = acc.UserId,
                    UserName      = acc.UserName,
                    ProfilepicUrl = acc.ProfilepicUrl,
                    AccessDetails = acc.AccessDetails,
                    IsInvalid     = acc.IsInvalid,
                    AccSettings   = acc.AccSettings
                };
                if (subscription == null) //checking if account is under subscription or in trail
                {
                    var CheckForTrail = _accountSubscriptionRepo.Get().Where(x => x.userId == acc.UserId && x.ExpiresOn > today && x.IsTrail == true).FirstOrDefault();
                    if (CheckForTrail != null)
                    {
                        accountDetails.IsTrail      = true;
                        accountDetails.IsSubscribed = false;
                    }
                }
                else
                {
                    accountDetails.IsTrail      = false;
                    accountDetails.IsSubscribed = true;
                    accountDetails.planId       = subscription.PlanId.ToString();
                }
                accountList.Add(accountDetails);
            }

            return(accountList);
        }
 /// <summary>
 /// Method for search post using tag name
 /// </summary>
 /// <param name="tags"></param>
 /// <param name="acc"></param>
 public void SearchPostUsingTag(List <Tags> tags, SocialMediaVM acc)
 {
     try
     {
         if (tags.Count() > 0)
         {
             foreach (var item in tags)
             {
                 if (item.IsBlocked == false)
                 {
                     if (item.TagName != string.Empty)
                     {
                         var checkNegative = CheckForBlockedTag(tags, item.TagName);
                         if (checkNegative != true)
                         {
                             var resList = SearchTags(acc.AccessDetails, item.TagName).Result.ToList();
                             if (resList.Count() > 0)
                             {
                                 foreach (var res in resList)
                                 {
                                     string id   = res.Id;
                                     string name = res.user.username;
                                     if (res.user_has_liked == false)
                                     {
                                         if (PostLike(acc.AccessDetails, id) == true)
                                         {
                                             _userService.SaveActivity(new Activities {
                                                 Activity = Activity.Like.ToString(), SMId = acc.SMId, socialId = acc.Id, Tag = "#" + item.TagName, PostId = id.ToString(), Username = name, ActivityDate = DateTime.UtcNow
                                             });
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
 public void SuperTargeting(List <SuperTargetUser> targetUsers, SocialMediaVM acc)
 {
     try
     {
         foreach (var user in targetUsers)
         {
             var followers = ListFollowerOfTargetUser(long.Parse(user.SMId), acc.AccessDetails);
             if (followers != null)
             {
                 foreach (var follower in followers)
                 {
                     var checkForBlockedUser = CheckForBlockedUser(targetUsers, follower);
                     if (checkForBlockedUser != true)
                     {
                         var tweets = ListPostOnUserTimeline(follower.Id, acc.AccessDetails);
                         if (tweets.Count() != 0)
                         {
                             foreach (var tweet in tweets)
                             {
                                 //var checkNegative = CheckForNegativeTag(tags, tweet);&& checkNegative != true
                                 if (tweet.IsFavorited != true)
                                 {
                                     var likeStatus = LikeTweet(tweet.Id, acc.AccessDetails);
                                     if (likeStatus == true)
                                     {
                                         _userService.SaveActivity(new Activities {
                                             Activity = Activity.Like.ToString(), SMId = acc.SMId, socialId = acc.Id, PostId = tweet.Id.ToString(), Tag = "@" + user.UserName, Username = tweet.User.ScreenName, ActivityDate = DateTime.UtcNow
                                         });
                                     }
                                 }
                             }
                         }
                     }//check for negative if end
                 }
             }
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
Esempio n. 17
0
        public async void TagRegardingTask(List <Tags> tags, SocialMediaVM acc)
        {
            try
            {
                if (tags.Count() > 0)
                {
                    foreach (var item in tags)
                    {
                        if (item.IsBlocked != true)
                        {
                            int count = 0; int limit = 0;
                            int SearchTrackByTagTask = Int16.Parse(ConfigurationSettings.AppSettings["spotifySearchTrackByTagTask"].ToString());

                            while (limit < SearchTrackByTagTask)
                            {
                                var tracksResult = SearchTrack(acc.Id, item.TagName, acc.AccessDetails, count);
                                if (tracksResult.items.Count() > 0)
                                {
                                    foreach (var track in tracksResult.items)
                                    {
                                        if (_trackSuggestionRepo.Get().Where(x => x.SocialId == acc.Id && x.TrackId == track.id).FirstOrDefault() == null)
                                        {
                                            var suggestedTrack = new SuggestedTracks {
                                                Provider = SocialMediaProviders.Spotify.ToString(), SocialId = acc.Id, TrackId = track.id, TrackName = track.name, uri = track.uri, SourceName = "#" + item.TagName, SourceType = "Tag"
                                            };
                                            _trackSuggestionRepo.Add(suggestedTrack);
                                            _unitOfWork.Commit();
                                            limit++;
                                            await Task.Delay(100000);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
 public void CheckForConversion(SocialMediaVM acc)
 {
     try
     {
         var accountActivity = _activityRepo.Get().Where(x => x.socialId == acc.Id).ToList();
         var followerList    = GetCurrentUserFollower(acc.AccessDetails);
         foreach (var activity in accountActivity)
         {
             if (followerList.data.Where(x => x.id.ToString() == activity.SMId).FirstOrDefault() != null && _userService.CheckIfUserConvert(activity.SMId, activity.socialId) == false)
             {
                 _userService.SaveConversion(new Conversions {
                     SMId = acc.SMId, socialId = acc.Id, ConvertDate = DateTime.UtcNow, Username = activity.Username, Tag = activity.Tag
                 });
             }
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
Esempio n. 19
0
 public void CheckForConversion(SocialMediaVM acc)
 {
     try
     {
         var accountActivity = _activityRepo.Get().Where(x => x.socialId == acc.Id).ToList();
         foreach (var item in accountActivity)
         {
             var Token = TokenValidate(acc.Id, acc.AccessDetails);
             if (CheckArtistFollowedByUser(acc.Id, item.SMId, Token, item.UserType) && _userService.CheckIfUserConvert(item.SMId, item.socialId) == false)
             {
                 _userService.SaveConversion(new Conversions {
                     SMId = acc.SMId, socialId = acc.Id, ConvertDate = DateTime.UtcNow, Username = item.Username, Tag = item.Tag
                 });
             }
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
Esempio n. 20
0
        public async Task <bool> SpotifyAlgoForUser(SocialMediaVM acc)
        {
            try
            {
                List <Tags>            tags     = _tagRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList();
                List <SuperTargetUser> artists  = _targetUserRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList();
                List <TargetPlaylist>  playlist = _targetPlaylistRepo.Get().Where(x => x.AccSettingId == acc.AccSettings.Id).ToList();
                if (acc.IsSubscribed == true)
                {
                    var planDetails = _userService.GetASubscriptionPlan(acc.planId);
                    if (planDetails.AllowSuperTargeting == true)
                    {
                        await TargetArtistRelatedArtistTask(artists, acc);//if supertargetting is allowed in plan.

                        TargetPlaylistTask(playlist, acc);
                    }
                    if (planDetails.AllowNegativeTags == false)
                    {
                        tags.RemoveAll(x => x.IsBlocked == true); //disabling negative keywords checking by removing blocked tags from list.
                    }
                    TagRegardingTask(tags, acc);
                }
                else if (acc.IsTrail == true)
                {
                    await TargetArtistRelatedArtistTask(artists, acc);//if supertargetting is allowed in plan.

                    TargetPlaylistTask(playlist, acc);
                    TagRegardingTask(tags, acc);
                }
                FollowingPlaylistTask(acc);
                UpdateProfile(acc.AccessDetails, acc.Id);
                _userService.SaveFollowersCount(acc.Id, GetUserprofile(acc.AccessDetails, acc.Id).followers.total);
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Esempio n. 21
0
 public void CheckForConversion(SocialMediaVM acc)
 {
     try
     {
         var accountActivity = _activityRepo.Get().Where(x => x.socialId == acc.Id).ToList();
         var followers       = GetUserFollower(long.Parse(acc.SMId), acc.AccessDetails);
         foreach (var item in accountActivity)
         {
             foreach (var follower in followers)
             {
                 if (follower.username == item.Username && _userService.CheckIfUserConvert(item.SMId, item.socialId) == false)
                 {
                     _userService.SaveConversion(new Conversions {
                         SMId = acc.SMId, socialId = acc.Id, ConvertDate = DateTime.UtcNow, Username = item.Username, Tag = item.Tag
                     });
                 }
             }
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
        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;
            }
        }
Esempio n. 23
0
        public async void FollowingPlaylistTask(SocialMediaVM acc)
        {
            try
            {
                var playlists = GetUserPlaylists(acc.Id, acc.SMId, acc.AccessDetails);
                if (playlists.items.Count() > 0)
                {
                    foreach (var playlist in playlists.items)
                    {
                        if (playlist.owner.id != acc.SMId)
                        {
                            int limit = 0;
                            int count = 0;
                            int spotifyFollowingPlaylistTask = Int16.Parse(ConfigurationSettings.AppSettings["spotifyFollowingPlaylistTask"].ToString());

                            while (count < spotifyFollowingPlaylistTask)
                            {
                                var tracks = GetPlaylistTracks(playlist.id, playlist.owner.id, acc.Id, acc.AccessDetails, limit);
                                foreach (var item in tracks.items)
                                {
                                    if (CheckArtistFollowedByUser(acc.Id, item.added_by.id, acc.AccessDetails, item.added_by.type) == false)
                                    {
                                        if (Follow(acc.Id, item.added_by.id, acc.AccessDetails, item.added_by.type))
                                        {
                                            _userService.SaveActivity(new Activities {
                                                SMId = item.added_by.id, socialId = acc.Id, Activity = Activity.Follow.ToString(), ActivityDate = DateTime.UtcNow, Tag = '@' + playlist.name, Username = item.added_by.id, UserType = item.added_by.type
                                            });
                                            count++;
                                            await Task.Delay(100000);
                                        }
                                    }
                                    if (CheckArtistFollowedByUser(acc.Id, item.added_by.id, acc.AccessDetails, item.added_by.type) == false)
                                    {
                                        if (Follow(acc.Id, item.track.artists[0].id, acc.AccessDetails, item.track.artists[0].type))
                                        {
                                            _userService.SaveActivity(new Activities {
                                                SMId = item.track.artists[0].id, socialId = acc.Id, Activity = Activity.Follow.ToString(), ActivityDate = DateTime.UtcNow, Tag = '@' + playlist.name, Username = item.added_by.id, UserType = item.track.artists[0].type
                                            });
                                            count++;
                                            await Task.Delay(100000);
                                        }
                                    }
                                    if (_trackSuggestionRepo.Get().Where(x => x.SocialId == acc.Id && x.TrackId == item.track.id).FirstOrDefault() == null)
                                    {
                                        var suggestedTrack = new SuggestedTracks {
                                            Provider = SocialMediaProviders.Spotify.ToString(), SocialId = acc.Id, TrackId = item.track.id, TrackName = item.track.name, uri = item.track.uri, SourceName = "@" + playlist.name, SourceType = "Playlist"
                                        };
                                        _trackSuggestionRepo.Add(suggestedTrack);
                                        _unitOfWork.Commit();
                                        count++;
                                    }
                                }

                                limit++;
                            }//tracks for loop
                        }
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
Esempio n. 24
0
        /// <summary>
        /// supertargeting task
        /// </summary>
        /// <param name="targetUsers"></param>
        /// <param name="tags"></param>
        /// <param name="acc"></param>
        /// <returns></returns>
        public async Task <bool> SuperTargeting(List <SuperTargetUser> targetUsers, List <Tags> tags, SocialMediaVM acc)
        {
            try
            {
                if (targetUsers != null)
                {
                    foreach (var user in targetUsers)
                    {
                        var followers = ListFollowerOfTargetUser(long.Parse(user.SMId), acc.AccessDetails); //getting the list of followers of target users
                        if (followers != null)
                        {
                            int count = 0;
                            while (count < Int16.Parse(ConfigurationSettings.AppSettings["twitterTargetUserLikeADay"].ToString()))  //limit for activity per target user starts here
                            {
                                Random r   = new Random();
                                var    key = r.Next(followers.Count()); //Randomly generating index for picking target user followers
                                var    checkForBlockedUser = CheckForBlockedUser(targetUsers, followers[key]);
                                if (checkForBlockedUser != true)
                                {
                                    var tweets = await ListPostOnUserTimeline(followers[key].Id, acc.AccessDetails); //list post from user's  timeline

                                    if (tweets.Value.Count() != 0)
                                    {
                                        foreach (var tweet in tweets.Value)
                                        {
                                            var checkNegative = CheckForNegativeTag(tags, tweet);
                                            if (tweet.IsFavorited != true && checkNegative != true)
                                            {
                                                var likeStatus = LikeTweet(tweet.Id, acc.AccessDetails); //like tweet
                                                if (likeStatus == true)
                                                {
                                                    _userService.SaveActivity(new Activities {
                                                        Activity = Activity.Like.ToString(), SMId = acc.SMId, socialId = acc.Id, PostId = tweet.Id.ToString(), Tag = "@" + user.UserName, Username = tweet.User.ScreenName, ActivityDate = DateTime.UtcNow
                                                    });
                                                    await Task.Delay(100000);

                                                    count++;
                                                }
                                            }
                                        }
                                    }
                                }//check for negative if end
                            }
                        }
                    }
                }
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Esempio n. 25
0
 public async Task <bool> TargetArtistRelatedArtistTask(List <SuperTargetUser> artists, SocialMediaVM acc)
 {
     try
     {
         if (artists.Count() > 0)
         {
             foreach (var artist in artists)
             {
                 var relatedArtists = GetArtistRelatedArtist(acc.Id, artist.SMId, acc.AccessDetails);
                 if (relatedArtists.Count() != 0)
                 {
                     //foreach (var item in relatedArtists)
                     //{
                     int count = 0;
                     while (count < Int16.Parse(ConfigurationSettings.AppSettings["spotifyRelatedArtistFollow"].ToString()))
                     {
                         Random r   = new Random();
                         var    key = r.Next(relatedArtists.Count());
                         if (CheckArtistFollowedByUser(acc.Id, relatedArtists[key].id, acc.AccessDetails, relatedArtists[key].type) == false)
                         {
                             if (Follow(acc.Id, relatedArtists[key].id, acc.AccessDetails, relatedArtists[key].type) == true)
                             {
                                 _userService.SaveActivity(new Activities
                                 {
                                     SMId = relatedArtists[key].id, socialId = acc.Id, Activity = Activity.Follow.ToString(), ActivityDate = DateTime.UtcNow, Tag = '#' + artist.UserName, Username = relatedArtists[key].name, UserType = relatedArtists[key].type
                                 });
                                 count++;
                                 await Task.Delay(100000);
                             }
                         }
                     }
                     // }
                 }
             }
         }
         return(true);
     }
     catch (Exception)
     {
         return(false);
     }
 }