示例#1
0
        public void RemoveFriends(AccountViewModel account)
        {
            const string functionName = "Удаление из друзей";

            if (account.GroupSettingsId == null)
            {
                return;
            }

            var settings    = _accountSettingsManager.GetSettings((long)account.GroupSettingsId);
            var removeTimer = settings.DeletionFriendTimer;
            var minFriends  = settings.CountMinFriends;

            _notice.AddNotice(functionName, account.Id, string.Format("Получаем друзей для удаления"));

            var friendsToRemove = new GetFriendsToRemoveQueryHandler(new DataBaseContext()).Handle(
                new GetFriendsToRemoveQuery
            {
                AccountId = account.Id
            });

            _notice.AddNotice(functionName, account.Id, string.Format("Получено {0} друзей", friendsToRemove.Count));

            var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery
            {
                UserAgentId = account.UserAgentId
            });

            foreach (var friendData in friendsToRemove)
            {
                var isReadyToRemove = friendData.AddedToRemoveDateTime != null && _friendManager.CheckConditionTime((DateTime)friendData.AddedToRemoveDateTime, removeTimer);

                _notice.AddNotice(functionName, account.Id, string.Format("Статус для удаления друга {0}({1}) = {2}", friendData.FriendName, friendData.FacebookId, isReadyToRemove));

                if (!isReadyToRemove)
                {
                    continue;
                }

                var currentFriendsCount = new GetFriendsCountEngine().Execute(new GetFriendsCountModel
                {
                    AccountFacebookId = account.FacebookId,
                    Cookie            = account.Cookie,
                    Proxy             = _accountManager.GetAccountProxy(account),
                    UserAgent         = userAgent.UserAgentString
                });

                if (currentFriendsCount > minFriends)
                {
                    RemoveFriend(account.Id, friendData.Id);
                }
                else
                {
                    _notice.AddNotice(functionName, account.Id, string.Format("Достигнут минимальный предел для удаления из друзей ({0})", minFriends));

                    break;
                }
            }

            _notice.AddNotice(functionName, account.Id, string.Format("Завершено."));
        }