public async Task ExecuteAsync(string followerUsername, string followerDomain, string twitterUsername) { // Get Follower and Twitter Users var follower = await _followerDal.GetFollowerAsync(followerUsername, followerDomain); if (follower == null) { return; } var twitterUser = await _twitterUserDal.GetTwitterUserAsync(twitterUsername); if (twitterUser == null) { return; } // Update Follower var twitterUserId = twitterUser.Id; if (follower.Followings.Contains(twitterUserId)) { follower.Followings.Remove(twitterUserId); } if (follower.FollowingsSyncStatus.ContainsKey(twitterUserId)) { follower.FollowingsSyncStatus.Remove(twitterUserId); } // Save or delete Follower if (follower.Followings.Any()) { await _followerDal.UpdateFollowerAsync(follower); } else { await _followerDal.DeleteFollowerAsync(followerUsername, followerDomain); } // Check if TwitterUser has still followers var followers = await _followerDal.GetFollowersAsync(twitterUser.Id); if (!followers.Any()) { await _twitterUserDal.DeleteTwitterUserAsync(twitterUsername); } }
public async Task ProcessAsync(Follower follower) { // Perform undo following to user instance await _rejectAllFollowingsAction.ProcessAsync(follower); // Remove twitter users if no more followers var followings = follower.Followings; foreach (var following in followings) { var followers = await _followersDal.GetFollowersAsync(following); if (followers.Length == 1 && followers.First().Id == follower.Id) { await _twitterUserDal.DeleteTwitterUserAsync(following); } } // Remove follower from DB await _followersDal.DeleteFollowerAsync(follower.Id); }
public async Task ProcessAsync(SyncTwitterUser twitterUser) { // Check Followers var twitterUserId = twitterUser.Id; var followers = await _followersDal.GetFollowersAsync(twitterUserId); // Remove all Followers foreach (var follower in followers) { // Perform undo following to user instance await _rejectFollowingAction.ProcessAsync(follower, twitterUser); // Remove following from DB if (follower.Followings.Contains(twitterUserId)) { follower.Followings.Remove(twitterUserId); } if (follower.FollowingsSyncStatus.ContainsKey(twitterUserId)) { follower.FollowingsSyncStatus.Remove(twitterUserId); } if (follower.Followings.Any()) { await _followersDal.UpdateFollowerAsync(follower); } else { await _followersDal.DeleteFollowerAsync(follower.Id); } } // Remove twitter user await _twitterUserDal.DeleteTwitterUserAsync(twitterUserId); }