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("Завершено.")); }