public CookiesViewModel GetAccountCookies(long accountId) { var account = new GetAccountByIdQueryHandler(new DataBaseContext()).Handle(new GetAccountByIdQuery { UserId = accountId }); var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery { UserAgentId = account.UserAgentId }); if (account.Cookie == null) { return(new CookiesViewModel { AccountId = accountId, Value = "Cookie is not created", UserAgent = userAgent.UserAgentString }); } return(new CookiesViewModel { AccountId = accountId, Value = account.Cookie.CookieString, CreateDateTime = account.Cookie.CreateDateTime, UserAgent = userAgent.UserAgentString }); }
public void ChangeMessageStatus(UnreadFriendMessageList unreadMessages, AccountViewModel account) { foreach (var unreadMessage in unreadMessages.UnreadMessages) { var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery { UserAgentId = account.UserAgentId }); new ChangeMessageStatusEngine().Execute(new ChangeMessageStatusModel { AccountId = account.FacebookId, FriendFacebookId = unreadMessage.FriendFacebookId, Cookie = account.Cookie, Proxy = _accountManager.GetAccountProxy(account), UrlParameters = new GetUrlParametersQueryHandler(new DataBaseContext()).Handle(new GetUrlParametersQuery { NameUrlParameter = NamesUrlParameter.ChangeMessageStatus }), UserAgent = userAgent.UserAgentString }); Thread.Sleep(2000); } }
public RemoteWebDriver RegisterNewDriver(AccountViewModel account) { var options = new PhantomJSOptions(); var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery { UserAgentId = account.UserAgentId }); if (string.IsNullOrWhiteSpace(account.Proxy)) { options.AddAdditionalCapability("phantomjs.page.settings.userAgent", userAgent); return(new PhantomJSDriver(options)); } var service = PhantomJSDriverService.CreateDefaultService(); service.AddArgument(string.Format("--proxy-auth={0}:{1}", account.ProxyLogin, account.ProxyPassword)); service.AddArgument(string.Format("--proxy={0}", account.Proxy)); options.AddAdditionalCapability("phantomjs.page.settings.userAgent", userAgent); var driver = new PhantomJSDriver(service, options); return(driver); }
public void CancelFriendshipRequest(long accountId, long friendFacebookId) { const string functionName = "Отклонить дружбу"; var account = _accountManager.GetAccountById(accountId); _notice.AddNotice(functionName, account.Id, string.Format("Отменяем входящую заявку друга {0}", friendFacebookId)); var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery { UserAgentId = account.UserAgentId }); new CancelFriendshipRequestEngine().Execute(new CancelFriendshipRequestModel { Cookie = account.Cookie, Proxy = _accountManager.GetAccountProxy(account), AccountFacebookId = account.FacebookId, FriendFacebookId = friendFacebookId, UrlParameters = new GetUrlParametersQueryHandler(new DataBaseContext()).Handle(new GetUrlParametersQuery { NameUrlParameter = NamesUrlParameter.CancelRequestFriendship }), UserAgent = userAgent.UserAgentString }); _notice.AddNotice(functionName, account.Id, string.Format("Заявка дружбы друга {0} отменена", friendFacebookId)); new ChangeAnalysisFriendStatusCommandHandler(new DataBaseContext()).Handle(new ChangeAnalysisFriendStatusCommand { AccountId = accountId, FriendFacebookId = friendFacebookId, NewStatus = StatusesFriend.ToDelete }); }
public void RemoveFriend(long accountId, long friendId) { const string functionName = "Удалить друга"; var account = _accountManager.GetAccountById(accountId); _notice.AddNotice(functionName, account.Id, string.Format("Получаем друга для удаления по id - {0}", friendId)); var friend = new GetFriendByIdQueryHandler(new DataBaseContext()).Handle(new GetFriendByIdQuery { FriendId = friendId }); _notice.AddNotice(functionName, account.Id, string.Format("удаляем друга {0}({1})", friend.FriendName, friend.FacebookId)); var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery { UserAgentId = account.UserAgentId }); new RemoveFriendEngine().Execute(new RemoveFriendModel { AccountFacebookId = account.FacebookId, Cookie = account.Cookie, Proxy = _accountManager.GetAccountProxy(account), FriendFacebookId = friend.FacebookId, UrlParameters = new GetUrlParametersQueryHandler(new DataBaseContext()).Handle(new GetUrlParametersQuery { NameUrlParameter = NamesUrlParameter.RemoveFriend }), UserAgent = userAgent.UserAgentString }); _notice.AddNotice(functionName, account.Id, string.Format("{0}({1}) успешно удалён из друзей", friend.FriendName, friend.FacebookId)); if (true) { new MarkRemovedFriendCommandHandler(new DataBaseContext()).Handle(new MarkRemovedFriendCommand { AccountId = account.Id, FriendId = friend.Id }); } }
public void WinkToBack(AccountViewModel account) { const string functionName = "Подмигнуть в ответ"; try { _notice.AddNotice(functionName, account.Id, string.Format("Начинаем подмигивать в ответ")); var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery { UserAgentId = account.UserAgentId }); var countPokes = new GetNewWinksEngine().Execute(new GetNewWinksModel { Proxy = _accountManager.GetAccountProxy(account), Cookie = account.Cookie, UserAgent = userAgent.UserAgentString }); if (countPokes != 0) { _notice.AddNotice(functionName, account.Id, string.Format("Подмигнули {0} пользователям в ответ", countPokes)); new AddOrUpdateAccountStatisticsCommandHandler(new DataBaseContext()).Handle( new AddOrUpdateAccountStatisticsCommand { AccountId = account.Id, CountOfWinksBack = countPokes }); return; } _notice.AddNotice(functionName, account.Id, string.Format("Нет подмигиваний.")); } catch (Exception ex) { _notice.AddNotice(functionName, account.Id, string.Format("Произошла ошибка - {0}", ex.Message)); } }
public UnreadMessagesListViewModel GetUnreadMessagesFromAccountPage(long accountId) { var account = _accountManager.GetAccountById(accountId); var getUnreadMessagesUrlParameters = new GetUrlParametersQueryHandler(new DataBaseContext()).Handle(new GetUrlParametersQuery { NameUrlParameter = NamesUrlParameter.GetUnreadMessages }); var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery { UserAgentId = account.UserAgentId }); var unreadMessagesList = new GetUnreadMessagesEngine().Execute(new GetUnreadMessagesModel { AccountId = account.FacebookId, Cookie = account.Cookie, UrlParameters = getUnreadMessagesUrlParameters, Proxy = _accountManager.GetAccountProxy(account), UserAgent = userAgent.UserAgentString }); return(new UnreadMessagesListViewModel { UnreadMessages = unreadMessagesList.Select(model => new UnreadMessageModel { LastMessage = model.LastMessage, UnreadMessage = model.UnreadMessage, CountAllMessages = model.CountAllMessages, CountUnreadMessages = model.CountUnreadMessages, FacebookFriendId = model.FriendFacebookId }).ToList() }); }
public void GetСorrespondenceByFriendId(long accountFacebookId, long friendId) { var account = _accountManager.GetAccountByFacebookId(accountFacebookId); var urlParameters = new GetUrlParametersQueryHandler(new DataBaseContext()).Handle(new GetUrlParametersQuery { NameUrlParameter = NamesUrlParameter.GetCorrespondence }); var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery { UserAgentId = account.UserAgentId }); var correspondence = new GetСorrespondenceByFriendIdEngine().Execute(new GetСorrespondenceByFriendIdModel() { Cookie = account.Cookie, AccountFacebookId = accountFacebookId, FriendId = friendId, UrlParameters = urlParameters, Proxy = _accountManager.GetAccountProxy(account), UserAgent = userAgent.UserAgentString }); }
public UnreadFriendMessageList GetUnreadMessages(AccountViewModel account) { var unreadMessages = new List <FacebookMessageModel>(); var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery { UserAgentId = account.UserAgentId }); var newCorrespondenceRequests = new GetCorrespondenceRequestsEndine().Execute(new GetCorrespondenceRequestsModel { AccountFacebookId = account.FacebookId, Cookie = account.Cookie, Proxy = _accountManager.GetAccountProxy(account), Driver = _seleniumManager.RegisterNewDriver(new AccountViewModel { ProxyLogin = account.ProxyLogin, ProxyPassword = account.ProxyPassword, Proxy = account.Proxy, UserAgentId = account.UserAgentId }) }); unreadMessages.AddRange(newCorrespondenceRequests); var newUnreadMessages = new GetUnreadMessagesEngine().Execute(new GetUnreadMessagesModel { AccountId = account.FacebookId, Cookie = account.Cookie, Proxy = _accountManager.GetAccountProxy(account), UrlParameters = new GetUrlParametersQueryHandler(new DataBaseContext()).Handle(new GetUrlParametersQuery { NameUrlParameter = NamesUrlParameter.GetUnreadMessages }), UserAgent = userAgent.UserAgentString }); foreach (var facebookMessageModel in newUnreadMessages) { if ( newCorrespondenceRequests.Any( model => model.FriendFacebookId == facebookMessageModel.FriendFacebookId)) { continue; } unreadMessages.Add(facebookMessageModel); } if (unreadMessages.Count == 0) { return(new UnreadFriendMessageList { UnreadMessages = unreadMessages.Select(model => new UnreadFriendMessageModel { FriendFacebookId = model.FriendFacebookId, UnreadMessage = model.UnreadMessage, LastMessage = model.LastMessage, CountAllMessages = model.CountAllMessages, CountUnreadMessages = model.CountUnreadMessages, LastReadMessageDateTime = model.LastReadMessageDateTime, LastUnreadMessageDateTime = model.LastUnreadMessageDateTime, FriendGender = model.Gender, FriendName = model.Name, FriendHref = model.Href, FriendType = model.FriendType }).ToList() }); } new SaveUnreadMessagesCommandHandler(new DataBaseContext()).Handle(new SaveUnreadMessagesCommand() { AccountId = account.Id, UnreadMessages = unreadMessages.Select(model => new FacebookMessageDbModel { AccountId = model.AccountId, FriendFacebookId = model.FriendFacebookId, Gender = model.Gender, CountAllMessages = model.CountAllMessages, CountUnreadMessages = model.CountUnreadMessages, Href = model.Href, LastMessage = model.LastMessage, LastReadMessageDateTime = model.LastReadMessageDateTime, LastUnreadMessageDateTime = model.LastUnreadMessageDateTime, Name = model.Name, UnreadMessage = model.UnreadMessage, FriendType = model.FriendType }).ToList() }); var ureadMessages = unreadMessages.Select(model => new UnreadFriendMessageModel { FriendFacebookId = model.FriendFacebookId, UnreadMessage = model.UnreadMessage, LastMessage = model.LastMessage, CountAllMessages = model.CountAllMessages, CountUnreadMessages = model.CountUnreadMessages, LastReadMessageDateTime = model.LastReadMessageDateTime, LastUnreadMessageDateTime = model.LastUnreadMessageDateTime, FriendGender = model.Gender, FriendName = model.Name, FriendHref = model.Href }).ToList(); return(new UnreadFriendMessageList { UnreadMessages = ureadMessages }); }
public void SendMessageToNewFriend(AccountViewModel account, FriendData friend) { const string functionName = "Отправка сообщений новым друзьям"; if (friend.DialogIsCompleted || friend.Deleted) { _notice.AddNotice(functionName, account.Id, string.Format("Ошибка! Друг {0}({1}) удален, либо переписка с ним закончилась.", friend.FriendName, friend.FacebookId)); return; } if (account.GroupSettingsId == null) { _notice.AddNotice(functionName, account.Id, string.Format("Ошибка! Не указана группа настроек.")); return; } var friendIsBlocked = _friendsBlackListManager.CheckForFriendBlacklist(friend.FacebookId, (long)account.GroupSettingsId); if (friendIsBlocked) { _notice.AddNotice(functionName, account.Id, string.Format("Ошибка! Друг {0}({1}) находится в черном списке.", friend.FriendName, friend.FacebookId)); return; } var message = String.Empty; var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery { UserAgentId = account.UserAgentId }); _notice.AddNotice(functionName, account.Id, string.Format("Отправляем сообщения новым друзьям")); var messageModel = _messageManager.GetRandomMessage(account.Id, 1, false, MessageRegime.BotFirstMessage); if (messageModel == null) { _notice.AddNotice(functionName, account.Id, string.Format("Ошибка. Нет сообщений для отправки.")); return; } message = messageModel.Message; if (!message.Equals(String.Empty)) { _notice.AddNotice(functionName, account.Id, string.Format("Отправляем сообщение {0}({1})", friend.FriendName, friend.FacebookId)); new SendMessageEngine().Execute(new SendMessageModel { AccountId = account.FacebookId, Cookie = account.Cookie, FriendId = friend.FacebookId, Message = message, Proxy = _accountManager.GetAccountProxy(account), UrlParameters = new GetUrlParametersQueryHandler(new DataBaseContext()).Handle(new GetUrlParametersQuery { NameUrlParameter = NamesUrlParameter.SendMessage }), UserAgent = userAgent.UserAgentString }); if (friend.MessageRegime == null) { new ChangeMessageRegimeCommandHandler(new DataBaseContext()).Handle(new ChangeMessageRegimeCommand() { AccountId = account.Id, FriendId = friend.Id, MessageRegime = MessageRegime.BotFirstMessage }); } new SaveSentMessageCommandHandler(new DataBaseContext()).Handle(new SaveSentMessageCommand() { AccountId = account.Id, FriendId = friend.FacebookId, OrderNumber = 1, Message = message, MessageDateTime = DateTime.Now }); _notice.AddNotice(functionName, account.Id, string.Format("Сообщение отправлено")); } }
public void SendRequestFriendship(AccountViewModel account) { const string functionName = "Отправить заявку в друзья"; _notice.AddNotice(functionName, account.Id, "Получаем подходящих друзей для отправки заявки"); var friends = new GetFriendsToRequestQueryHandler(new DataBaseContext()).Handle(new GetFriendsToRequestQuery { AccountId = account.Id }); if (friends.Count == 0) { return; } var analysisFriendsData = friends.FirstOrDefault(); try { if (analysisFriendsData != null) { _notice.AddNotice(functionName, account.Id, string.Format("Отправляем заявку {0}({1})", analysisFriendsData.FriendName, analysisFriendsData.FacebookId)); var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery { UserAgentId = account.UserAgentId }); new SendRequestFriendshipEngine().Execute(new SendRequestFriendshipModel { AccountFacebookId = account.FacebookId, FriendFacebookId = analysisFriendsData.FacebookId, Proxy = _accountManager.GetAccountProxy(account), Cookie = account.Cookie, AddFriendUrlParameters = new GetUrlParametersQueryHandler(new DataBaseContext()).Handle(new GetUrlParametersQuery { NameUrlParameter = NamesUrlParameter.AddFriend }), AddFriendExtraUrlParameters = new GetUrlParametersQueryHandler(new DataBaseContext()).Handle(new GetUrlParametersQuery { NameUrlParameter = NamesUrlParameter.AddFriendExtra }), UserAgent = userAgent.UserAgentString }); if (true) { _notice.AddNotice(functionName, account.Id, "Обновляем статистику"); _accountStatisticsManager.UpdateAccountStatistics(new AccountStatisticsModel { AccountId = account.Id, CountRequestsSentToFriends = 1 }); } new ChangeAnalysisFriendTypeCommandHandler(new DataBaseContext()).Handle(new ChangeAnalysisFriendTypeCommand { AccountId = account.Id, NewType = FriendTypes.Outgoig, FriendFacebookId = analysisFriendsData.FacebookId }); _notice.AddNotice(functionName, account.Id, "Отправка заявки в друзья успешно завершена."); } } catch (Exception ex) { } }
public void ConfirmFriendship(AccountViewModel account) { const string functionName = "Подтверждение дружбы"; try { _notice.AddNotice(functionName, account.Id, "Получаем подходящих друзей для подтверждения дружбы"); var friends = new GetFriendsToConfirmQueryHandler(new DataBaseContext()).Handle(new GetFriendsToConfirmQuery { AccountId = account.Id }); if (friends.Count == 0) { _notice.AddNotice(functionName, account.Id, "Нет подходящих друзей для подтверждения дружбы"); return; } _notice.AddNotice(functionName, account.Id, "Выбираем случайного друга"); var analysisFriendsData = friends.OrderBy(data => new Guid()).FirstOrDefault(); if (analysisFriendsData != null) { var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery { UserAgentId = account.UserAgentId }); _notice.AddNotice(functionName, account.Id, string.Format("Подтверждаем дружбу с {0}({1})", analysisFriendsData.FriendName, analysisFriendsData.FacebookId)); new ConfirmFriendshipEngine().Execute(new ConfirmFriendshipModel { AccountFacebookId = account.FacebookId, FriendFacebookId = analysisFriendsData.FacebookId, Proxy = _accountManager.GetAccountProxy(account), Cookie = account.Cookie, UrlParameters = new GetUrlParametersQueryHandler(new DataBaseContext()).Handle(new GetUrlParametersQuery { NameUrlParameter = NamesUrlParameter.ConfirmFriendship }), UserAgent = userAgent.UserAgentString }); if (true) { _accountStatisticsManager.UpdateAccountStatistics(new AccountStatisticsModel { AccountId = account.Id, CountReceivedFriends = 1 }); } new RemoveAnalyzedFriendCommandHandler(new DataBaseContext()).Handle(new RemoveAnalyzedFriendCommand { AccountId = account.Id, FriendId = analysisFriendsData.Id }); _notice.AddNotice(functionName, account.Id, "Обновляем статистику"); } _notice.AddNotice(functionName, account.Id, "Успешно завершено"); } catch (Exception ex) { _notice.AddNotice(functionName, account.Id, string.Format("Завершено с ошибкой {0}", ex.Message)); } }
public NewFriendListViewModel GetNewFriendsAndRecommended(AccountViewModel account, IBackgroundJobService backgroundJobService) { const string functionName = "Получение реком. друзей"; if (account.GroupSettingsId == null) { _notice.AddNotice(functionName, account.Id, "Ошибка! Не выбрана группа настрект."); return(null); } var accountModel = _accountManager.GetAccountById(account.Id); _notice.AddNotice(functionName, account.Id, "Получаем рекомендованных друзей"); var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery { UserAgentId = account.UserAgentId }); var friendListResponseModels = new GetRecommendedFriendsEngine().Execute(new GetRecommendedFriendsModel { Cookie = accountModel.Cookie, Proxy = _accountManager.GetAccountProxy(accountModel), UserAgent = userAgent.UserAgentString }); _notice.AddNotice(functionName, account.Id, string.Format("Список рекомендованных друзей получен - {0}. Входящих заявок - {1}", friendListResponseModels.Friends.Count(model => model.Type == FriendTypes.Recommended), friendListResponseModels.Friends.Count(model => model.Type == FriendTypes.Incoming))); var friendList = friendListResponseModels.Friends.Select(model => new AnalysisFriendData { AccountId = accountModel.Id, FacebookId = model.FacebookId, Type = model.Type, Status = StatusesFriend.ToAnalys, FriendName = model.FriendName }).ToList(); //Check _notice.AddNotice(functionName, account.Id, "Проверяем не общались ли мы с этими друзьями"); var certifiedListFriends = _analysisFriendsManager.CheckForAnyInDataBase(accountModel, friendList, _notice, functionName); _notice.AddNotice(functionName, account.Id, "Сохраняем рекомендованных друзей"); new SaveFriendsForAnalysisCommandHandler(new DataBaseContext()).Handle(new SaveFriendsForAnalysisCommand { AccountId = accountModel.Id, Friends = certifiedListFriends }); var countIncomming = certifiedListFriends.Count(data => data.Type == FriendTypes.Incoming) != 0 ? friendListResponseModels.CountIncommingFriends : certifiedListFriends.Count(data => data.Type == FriendTypes.Incoming); //если есть вообще рекомендуемые друзья, иначе надпись лейба будет браться с рекомендация для добавления new AddAccountInformationCommandHandler(new DataBaseContext()).Handle(new AddAccountInformationCommand { AccountId = account.Id, AccountInformationData = new AccountInformationDataDbModel { CountIncommingFriendsRequest = countIncomming } }); _notice.AddNotice(functionName, account.Id, "Получение рекомендованных друзей завершено."); return(new NewFriendListViewModel { AccountId = accountModel.Id, NewFriends = friendList.Select(model => new NewFriendViewModel { FacebookId = model.FacebookId, FriendName = model.FriendName, Gender = model.Gender, Type = model.Type, Uri = model.Uri }).ToList() }); }
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("Завершено.")); }
public bool GetCurrentFriends(AccountViewModel accountViewModel) { const string functionName = "Обновление текущего списка друзей"; var account = _accountManager.GetAccountById(accountViewModel.Id); try { _notice.AddNotice(functionName, account.Id, "Начинаем обновлять список друзей"); var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery { UserAgentId = account.UserAgentId }); var groupId = account.GroupSettingsId; if (groupId == null) { _notice.AddNotice(functionName, account.Id, "Ошибка! Группа не выбрана."); return(false); } var settings = _accountSettingsManager.GetSettings((long)groupId); var accountInformation = _accountManager.GetAccountInformation((long)groupId); var friends = new GetCurrentFriendsBySeleniumEngine().Execute(new GetCurrentFriendsBySeleniumModel { Cookie = account.Cookie, AccountFacebookId = account.FacebookId, Driver = _seleniumManager.RegisterNewDriver(new AccountViewModel { Proxy = account.Proxy, ProxyLogin = account.ProxyLogin, ProxyPassword = account.ProxyPassword, UserAgentId = userAgent.Id }), Proxy = _accountManager.GetAccountProxy(account), UserAgent = userAgent.UserAgentString }); _notice.AddNotice(functionName, account.Id, "Список текущих друзей получен, количество - " + friends.Count); _notice.AddNotice(functionName, account.Id, string.Format("Учитываем погрешность {0}%", settings.AllowedRemovalPercentage)); var notError = _friendManager.RecountError(accountInformation.CountCurrentFriends, friends.Count, settings.AllowedRemovalPercentage); if (!notError) { _notice.AddNotice(functionName, account.Id, string.Format("Ошибка получения друзей. Получено - {0}, текущее колиство в базе - {1}, погрешность - {2}%", friends.Count, accountInformation.CountCurrentFriends, settings.AllowedRemovalPercentage)); return(false); } var outgoingFriendships = new GetFriendsByAccountIdQueryHandler(new DataBaseContext()).Handle(new GetFriendsByAccountIdQuery { AccountId = account.Id, FriendsType = FriendTypes.Outgoig }); if (friends.Count == 0) { _notice.AddNotice(functionName, account.Id, "Нет друзей. Обновление друзей завершено."); return(true); } _notice.AddNotice(functionName, account.Id, "Сверяем друзей с исходящими заявками"); foreach (var newFriend in friends) { if (outgoingFriendships.All(data => data.FacebookId != newFriend.FacebookId)) { continue; } _notice.AddNotice(functionName, account.Id, newFriend.FriendName + "добавился в друзья "); new DeleteAnalysisFriendByIdHandler(new DataBaseContext()).Handle(new DeleteAnalysisFriendById { AnalysisFriendFacebookId = newFriend.FacebookId }); new AddOrUpdateAccountStatisticsCommandHandler(new DataBaseContext()).Handle( new AddOrUpdateAccountStatisticsCommand { AccountId = account.Id, CountOrdersConfirmedFriends = 1 }); _notice.AddNotice(functionName, account.Id, "Сверяем друзей с исходящими заявками"); } // drop blocked users _notice.AddNotice(functionName, account.Id, "Сверяем друзей с черным списком"); var newFriendList = (from friend in friends let isBlocked = new CheckForFriendBlacklistedQueryHandler().Handle(new CheckForFriendBlacklistedQuery { FriendFacebookId = friend.FacebookId, GroupSettingsId = (long)groupId }) where !isBlocked select new FriendData { FacebookId = friend.FacebookId, FriendName = friend.FriendName, Href = friend.Uri, Gender = friend.Gender }).ToList(); _notice.AddNotice(functionName, account.Id, "Совпадений с черным списком - " + (friends.Count - newFriendList.Count)); _notice.AddNotice(functionName, account.Id, "Сохраняем друзей"); new SaveUserFriendsCommandHandler(new DataBaseContext()).Handle(new SaveUserFriendsCommand { AccountId = account.Id, Friends = newFriendList }); new AddAccountInformationCommandHandler(new DataBaseContext()).Handle(new AddAccountInformationCommand { AccountId = account.Id, AccountInformationData = new AccountInformationDataDbModel { CountCurrentFriends = friends.Count } }); _notice.AddNotice(functionName, account.Id, "Обновление друзей завершено."); } catch (Exception ex) { _notice.AddNotice(functionName, account.Id, string.Format("Ошибка - {0}", ex.Message)); } return(true); }
public void SendMessageToUnanswered(AccountViewModel account, FriendData friend) { const string functionName = "Ответ на неотвеченные сообщения"; if (friend.DialogIsCompleted || friend.Deleted) { _notice.AddNotice(functionName, account.Id, string.Format("Ошибка! Друг {0}({1}) удален, либо переписка с ним закончилась.", friend.FriendName, friend.FacebookId)); return; } if (account.GroupSettingsId == null) { _notice.AddNotice(functionName, account.Id, string.Format("Ошибка! Не указана группа настроек.")); return; } var friendIsBlocked = _friendsBlackListManager.CheckForFriendBlacklist(friend.FacebookId, (long)account.GroupSettingsId); if (friendIsBlocked) { _notice.AddNotice(functionName, account.Id, string.Format("Ошибка! Друг {0}({1}) находится в черном списке.", friend.FriendName, friend.FacebookId)); return; } var allMessages = new GetFriendMessagesQueryHandler(new DataBaseContext()).Handle(new GetFriendMessagesQuery() { AccountId = account.Id, FriendId = friend.Id }); var lastBotMessages = allMessages.Where(data => data.MessageDirection == MessageDirection.ToFriend) .OrderByDescending(data => data.OrderNumber) .FirstOrDefault(); if (lastBotMessages == null) { return; } _notice.AddNotice(functionName, account.Id, string.Format("Получаем экстра-сообщение")); var messageModel = _messageManager.GetRandomExtraMessage(); if (messageModel == null) { return; } var message = new CalculateMessageTextQueryHandler(new DataBaseContext()).Handle(new CalculateMessageTextQuery { TextPattern = messageModel.Message, AccountId = account.Id, FriendId = friend.FacebookId }); _notice.AddNotice(functionName, account.Id, string.Format("Отправляем экстра сообщение - '{0}'", message)); var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery { UserAgentId = account.UserAgentId }); new SendMessageEngine().Execute(new SendMessageModel { AccountId = account.FacebookId, Cookie = account.Cookie, FriendId = friend.FacebookId, Message = message, Proxy = _accountManager.GetAccountProxy(account), UrlParameters = new GetUrlParametersQueryHandler(new DataBaseContext()).Handle(new GetUrlParametersQuery { NameUrlParameter = NamesUrlParameter.SendMessage }), UserAgent = userAgent.UserAgentString }); new SaveSentMessageCommandHandler(new DataBaseContext()).Handle(new SaveSentMessageCommand() { AccountId = account.Id, FriendId = friend.FacebookId, OrderNumber = lastBotMessages.OrderNumber, Message = message, MessageDateTime = DateTime.Now, }); _notice.AddNotice(functionName, account.Id, string.Format("Отправка экстра сообщения завершена")); }
public void SendMessageToUnread(AccountViewModel account, FriendData friend) { const string functionName = "Ответ на непрочитанные сообщения"; if (friend.Deleted || friend.DialogIsCompleted) { _notice.AddNotice(functionName, account.Id, string.Format("Ошибка! Друг {0}({1}) удален, либо переписка с ним закончилась.", friend.FriendName, friend.FacebookId)); return; } if (account.GroupSettingsId == null) { _notice.AddNotice(functionName, account.Id, string.Format("Ошибка! Не указана группа настроек.")); return; } var friendIsBlocked = _friendsBlackListManager.CheckForFriendBlacklist(friend.FacebookId, (long)account.GroupSettingsId); if (friendIsBlocked) { _notice.AddNotice(functionName, account.Id, string.Format("Ошибка! Друг {0}({1}) находится в черном списке.", friend.FriendName, friend.FacebookId)); return; } var message = String.Empty; var messageData = friend.MessageRegime == MessageRegime.BotFirstMessage ? _messageManager.GetAllMessagesWhereBotWritesFirst(account.Id) : _messageManager.GetAllMessagesWhereUserWritesFirst(account.Id); _notice.AddNotice(functionName, account.Id, string.Format("Загружаем сообщения для ответа")); if (messageData.Count == 0) { _notice.AddNotice(functionName, account.Id, string.Format("У данного пользователя нет сообщений для ответа")); return; } var numberLastBotMessage = _messageManager.GetLasBotMessageOrderNumber(messageData, account.Id); // var lastFriendMessages = _facebookMessageManager.GetLastFriendMessageModel(account.Id, friend.Id); if (lastFriendMessages == null) { _notice.AddNotice(functionName, account.Id, string.Format("Возникла ошибка при ответе. Сообщение друга не найдено в базе.")); return; } var lastBotMessage = _facebookMessageManager.GetLastBotMessageModel(account.Id, friend.Id); int orderNumber; if (lastBotMessage != null && lastFriendMessages.OrderNumber == lastBotMessage.OrderNumber && lastFriendMessages.MessageDateTime > lastBotMessage.MessageDateTime) { orderNumber = lastFriendMessages.OrderNumber + 1; } else { orderNumber = lastFriendMessages.OrderNumber; } if (orderNumber == 1 && friend.MessageRegime == null) { new ChangeMessageRegimeCommandHandler(new DataBaseContext()).Handle(new ChangeMessageRegimeCommand { AccountId = account.Id, FriendId = friend.Id, MessageRegime = MessageRegime.UserFirstMessage }); friend.MessageRegime = MessageRegime.UserFirstMessage; } _notice.AddNotice(functionName, account.Id, string.Format("Сверяем сообщение друга со стоп-словами")); var emergencyFactor = _stopWordsManager.CheckMessageOnEmergencyFaktor(lastFriendMessages); _notice.AddNotice(functionName, account.Id, string.Format("Получаем сообщение для ответа с порядковым номером - {0}. (Стоп-фактор - {1})", orderNumber, emergencyFactor)); var messageModel = _messageManager.GetRandomMessage(account.Id, orderNumber, emergencyFactor, friend.MessageRegime); if (messageModel != null) { _notice.AddNotice(functionName, account.Id, string.Format("Подставляем значения в сообщение бота")); message = new CalculateMessageTextQueryHandler(new DataBaseContext()).Handle(new CalculateMessageTextQuery { TextPattern = messageModel.Message, AccountId = account.Id, FriendId = lastFriendMessages.FriendId, }); } var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery { UserAgentId = account.UserAgentId }); if (message != String.Empty) { _notice.AddNotice(functionName, account.Id, string.Format("Отправляем сообщение")); new SendMessageEngine().Execute(new SendMessageModel { AccountId = account.FacebookId, Cookie = account.Cookie, FriendId = friend.FacebookId, Message = message, Proxy = _accountManager.GetAccountProxy(account), UrlParameters = new GetUrlParametersQueryHandler(new DataBaseContext()).Handle(new GetUrlParametersQuery { NameUrlParameter = NamesUrlParameter.SendMessage }), UserAgent = userAgent.UserAgentString }); new SaveSentMessageCommandHandler(new DataBaseContext()).Handle(new SaveSentMessageCommand() { AccountId = account.Id, FriendId = friend.FacebookId, OrderNumber = orderNumber, Message = message, MessageDateTime = DateTime.Now, }); _notice.AddNotice(functionName, account.Id, string.Format("Сообщение пользователю {0}({1}) отправлено", friend.FriendName, friend.FacebookId)); } if (messageData == null || orderNumber < numberLastBotMessage) { return; } if (account.GroupSettingsId == null) { return; } _notice.AddNotice(functionName, account.Id, string.Format("Переписка завершена. Блокируем пользователя {0}({1})", friend.FriendName, friend.FacebookId)); new MarkAddToEndDialogCommandHandler(new DataBaseContext()).Handle(new MarkAddToEndDialogCommand { AccountId = account.Id, FriendId = friend.FacebookId }); _friendManager.AddFriendToBlackList((long)account.GroupSettingsId, friend.FacebookId); }
private static void Main(string[] args) { var homeService = new HomeService(new JobService(), new BackgroundJobService()); var accounts = homeService.GetAccounts(); _accountSettingsManager = new AccountSettingsManager(); _accountManager = new AccountManager(); /*new AddToFriendsBlackListCommandHandler(new DataBaseContext()).Handle(new AddToFriendsBlackListCommand * { * GroupSettingsId = 3, * FriendName = "tesd", * FriendFacebookId = 23232323 * }); * */ foreach (var accountViewModel in accounts) { if (!accountViewModel.IsDeleted) { if (accountViewModel.Id == 24)//31 { var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery { UserAgentId = accountViewModel.UserAgentId }); new BotPageIsWorkEngine().Execute(new BotPageIsWorkModel { Cookie = accountViewModel.Cookie, FriendFacebookId = 100014710451371, Proxy = _accountManager.GetAccountProxy(accountViewModel), UserAgent = userAgent.UserAgentString }); //new FacebookMessagesService(new NoticeService()).SendMessageToUnread(accountViewModel); //new FriendsService(new NoticeService()).GetCurrentFriends(accountViewModel); break; } /*new FacebookMessagesService(new NoticeService()).GetUnreadMessages(new AccountModel() * { * Proxy = accountViewModel.Proxy, * ProxyLogin = accountViewModel.ProxyLogin, * ProxyPassword = accountViewModel.ProxyPassword, * Cookie = new CookieModel * { * CookieString = accountViewModel.Cookie * }, * FacebookId = accountViewModel.FacebookId, * Id = accountViewModel.Id, * * }); * * /*new JoinThePagesBySeleniumEngine().Execute(new JoinThePagesBySeleniumModel * { * Driver = seleniumManager.RegisterNewDriver(accountViewModel), * Cookie = accountViewModel.Cookie, * Pages = new List<string> * { * "https://www.facebook.com/belbeercom/", * "https://www.facebook.com/etradeconf/" * } * }); * * /* * new AddToPageEngine().Execute(new AddToPageModel * { * Cookie = accountViewModel.Cookie, * Proxy = _accountManager.GetAccountProxy(new AccountModel() * { * Proxy = accountViewModel.Proxy, * ProxyLogin = accountViewModel.ProxyLogin, * ProxyPassword = accountViewModel.ProxyPassword * }), * FacebookId = accountViewModel.FacebookId, * FacebookPageUrl = "https://www.facebook.com/hc.neman/", * Friend = * new FriendModel * { * FacebookId = 100015663996105, * FriendName = "Loly" * }, * UrlParameters = * new GetUrlParametersQueryHandler(new DataBaseContext()).Handle(new GetUrlParametersQuery * { * NameUrlParameter = NamesUrlParameter.AddFriendsToPage * }), * }); * * * /* var account = * new GetAccountByFacebookIdQueryHandler(new DataBaseContext()).Handle(new GetAccountByFacebookIdQuery * { * FacebookUserId = accountViewModel.FacebookId * }); * * var driver = new ChromeDriver(); * * driver.Navigate().GoToUrl("https://www.facebook.com/"); * var currCookies = driver.Manage().Cookies.AllCookies; * var path = "/"; * var domain = ".facebook.com"; * * var cookies = ParseCookieString(account.Cookie.CookieString); * * foreach (var keyValuePair in cookies) * { * driver.Manage() * .Cookies.AddCookie(new Cookie(keyValuePair.Key, keyValuePair.Value, domain, path, null)); * } * * driver.Navigate() * .GoToUrl( * string.Format( * "https://www.facebook.com/profile.php?id=100008195580815&lst={0}%3A100008195580815%3A1485883089&sk=about", * account.FacebookId)); * * Thread.Sleep(500); * * var divs = driver.FindElements(By.CssSelector(".uiList._1pi3._4kg._6-h._703._4ks>li")); * var links = driver.FindElements(By.CssSelector("._c24._50f4>.profileLink")); * * var action = new Actions(driver); * * _userInfo = new UserInfo(); * int i = 0; * foreach (var webElement in divs) * { * switch (i) * { * case 0: * { * if (webElement.GetCssValue("Class") != null && webElement.GetCssValue("Id") == null) * { * _userInfo.Work = null; * } * else * { * action.MoveToElement(links[0]); * Thread.Sleep(3000); * * action.Perform(); * Thread.Sleep(2000); * * var t1 = new Task(() => GetCity(driver, i)); * * t1.Start(); * } * break; * } * case 1: * { * if (webElement.GetCssValue("Class") != null && webElement.GetCssValue("Id") == null) * { * _userInfo.Study = null; * } * else * { * action.MoveToElement(links[1]); * Thread.Sleep(3000); * * action.Perform(); * Thread.Sleep(2000); * * var t1 = new Task(() => GetCity(driver, i)); * * t1.Start(); * } * break; * } * case 3: * { * if (webElement.GetCssValue("Class") != null && webElement.GetCssValue("Id") == null) * { * _userInfo.Live = null; * } * else * { * action.MoveToElement(links[1]); * Thread.Sleep(3000); * * action.Perform(); * Thread.Sleep(2000); * * var t1 = new Task(() => GetCity(driver, i)); * * t1.Start(); * } * break; * } * } * i++; * } * * * foreach (var webElement in links) * { * action.MoveToElement(webElement); * Thread.Sleep(3000); * * action.Perform(); * Thread.Sleep(2000); * * * var city = ""; * //var t1 = new Task(() => GetCity(driver)); * * //t1.Start(); * * //Thread.Sleep(3000); * } * * /* * var friends = GetFriendLinks(driver); * var currentCount = friends.Count; * * while (true) * { * ScrollPage(driver); * friends = GetFriendLinks(driver); * if (friends.Count > currentCount) * { * currentCount = friends.Count; * } * else * { * break; * } * } * * friends = GetFriendLinks(driver); * * foreach (var webElement in friends) * { * var name = webElement.Text; * var id = ParseFacebookId(webElement.GetAttribute("data-gt")); * } */ //homeService.RefreshCookies(accountViewModel); // spyService.AnalyzeFriends(accountViewModel); // var friendList = new GetRecommendedFriendsEngine().Execute(new GetRecommendedFriendsModel() // { // Cookie = account.Cookie.CookieString, // Proxy = _accountManager.GetAccountProxy(account) // }); // new SaveFriendsForAnalysisCommandHandler(new DataBaseContext()).Handle(new SaveFriendsForAnalysisCommand // { // AccountId = account.Id, // Friends = friendList.Select(model => new AnalysisFriendData // { // AccountId = account.Id, // FacebookId = model.FacebookId, // Type = model.Type, // Status = StatusesFriend.ToAnalys, // FriendName = model.FriendName // }).ToList() // }); // var proxy = new WebProxy(accountViewModel.Proxy) // { // Credentials = // new NetworkCredential(accountViewModel.ProxyLogin, accountViewModel.ProxyPassword) // }; //RequestsHelper.Get("https://www.facebook.com/friends/requests/?fcref=jwl", account.Cookie.CookieString, proxy); //new HomeService(null, null).RefreshCookies(accountViewModel); //homeService.RefreshCookies(accountViewModel); // // new ConfirmFriendshipEngine().Execute(new ConfirmFriendshipModel() // { // AccountFacebookId = account.FacebookId, // FriendFacebookId = 100014431878138, // Proxy = _accountManager.GetAccountProxy(account), // Cookie = account.Cookie.CookieString, // UrlParameters = new GetUrlParametersQueryHandler(new DataBaseContext()).Handle(new GetUrlParametersQuery // { // NameUrlParameter = NamesUrlParameter.ConfirmFriendship // }), // }); // new WinkEngine().Execute(new WinkModel // { // AccountFacebookId = account.FacebookId, // FriendFacebookId = 100005708075966, // Proxy = _accountManager.GetAccountProxy(account), // Cookie = account.Cookie.CookieString, // UrlParameters = new GetUrlParametersQueryHandler(new DataBaseContext()).Handle(new GetUrlParametersQuery // { // NameUrlParameter = NamesUrlParameter.Wink // }), // }); // new AddFriendEngine().Execute(new AddFriendModel() // { // AccountFacebookId = account.FacebookId, // FriendFacebookId = 100011608590882, // Proxy = _accountManager.GetAccountProxy(account), // Cookie = account.Cookie.CookieString, // AddFriendExtraUrlParameters = new GetUrlParametersQueryHandler(new DataBaseContext()).Handle(new GetUrlParametersQuery // { // NameUrlParameter = NamesUrlParameter.AddFriendExtra // }), // AddFriendUrlParameters = new GetUrlParametersQueryHandler(new DataBaseContext()).Handle(new GetUrlParametersQuery // { // NameUrlParameter = NamesUrlParameter.AddFriend // }) // }); //// new GetFriendsByCriteriesEngine().Execute(new GetFriendsByCriteriesModel // { // AccountId = account.FacebookId, // Proxy = _accountManager.GetAccountProxy(account), // Cookie = account.Cookie.CookieString, // UrlParameters = new GetUrlParametersQueryHandler(new DataBaseContext()).Handle(new GetUrlParametersQuery // { // NameUrlParameter = NamesUrlParameter.GetFriendsByCriteries // }) // }); //RequestsHelper.Get("https://www.2ip.ru", "", proxy); /*var driver = homeService.RegisterNewDriver(accountViewModel); * driver.Navigate().GoToUrl("https://2ip.ru/"); * * * } * } * }*/ } } }
private UnreadFriendMessageList GetMessangerMessages(AccountViewModel account) { const string noticeName = "Теперь вы общаетесь и в Messenger"; var functionName = $"Получение сообщений '{noticeName}'"; try { var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery { UserAgentId = account.UserAgentId }); var messages = new GetMessangerMessagesEngine().Execute(new GetMessangerMessagesModel { AccountId = account.FacebookId, Cookie = account.Cookie, Proxy = _accountManager.GetAccountProxy(account), UrlParameters = new GetUrlParametersQueryHandler(new DataBaseContext()).Handle( new GetUrlParametersQuery { NameUrlParameter = NamesUrlParameter.GetMessangerMessages }), UserAgent = userAgent.UserAgentString, NumbersOfDialogues = 10 }); var result = new UnreadFriendMessageList { UnreadMessages = messages.Select(model => new UnreadFriendMessageModel { FriendFacebookId = model.FriendFacebookId, UnreadMessage = model.UnreadMessage, LastMessage = noticeName, CountAllMessages = model.CountAllMessages, CountUnreadMessages = model.CountUnreadMessages, LastReadMessageDateTime = model.LastReadMessageDateTime, LastUnreadMessageDateTime = model.LastUnreadMessageDateTime, FriendGender = model.Gender, FriendName = model.Name, FriendHref = model.Href, FriendType = model.FriendType }).ToList() }; new SaveUnreadMessagesCommandHandler(new DataBaseContext()).Handle(new SaveUnreadMessagesCommand { AccountId = account.Id, UnreadMessages = messages.Select(model => new FacebookMessageDbModel { AccountId = model.AccountId, FriendFacebookId = model.FriendFacebookId, Gender = model.Gender, CountAllMessages = model.CountAllMessages, CountUnreadMessages = model.CountUnreadMessages, Href = model.Href, LastMessage = noticeName, LastReadMessageDateTime = model.LastReadMessageDateTime, LastUnreadMessageDateTime = model.LastUnreadMessageDateTime, Name = model.Name, UnreadMessage = model.UnreadMessage, FriendType = model.FriendType }).ToList() }); return(result); } catch (Exception ex) { _notice.AddNotice(functionName, account.Id, string.Format("Возникла ошибка {0}", ex.Message)); } return(null); }
public UnreadFriendMessageList GetUnreadMessages(AccountViewModel account) { const string functionName = "Получение непрочитанных сообщений"; var unreadMessages = new List <FacebookMessageModel>(); List <UnreadFriendMessageModel> ureadMessages = null; try { var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery { UserAgentId = account.UserAgentId }); var newCorrespondenceRequests = new GetCorrespondenceRequestsEndine().Execute( new GetCorrespondenceRequestsModel { AccountFacebookId = account.FacebookId, Cookie = account.Cookie, Proxy = _accountManager.GetAccountProxy(account), Driver = _seleniumManager.RegisterNewDriver(new AccountViewModel { ProxyLogin = account.ProxyLogin, ProxyPassword = account.ProxyPassword, Proxy = account.Proxy, UserAgentId = account.UserAgentId }) }); unreadMessages.AddRange(newCorrespondenceRequests); var newUnreadMessages = new GetUnreadMessagesEngine().Execute(new GetUnreadMessagesModel { AccountId = account.FacebookId, Cookie = account.Cookie, Proxy = _accountManager.GetAccountProxy(account), UrlParameters = new GetUrlParametersQueryHandler(new DataBaseContext()).Handle( new GetUrlParametersQuery { NameUrlParameter = NamesUrlParameter.GetUnreadMessages }), UserAgent = userAgent.UserAgentString, NumbersOfDialogues = 10 }); foreach (var facebookMessageModel in newUnreadMessages) { if (newCorrespondenceRequests.Any(model => model.FriendFacebookId == facebookMessageModel.FriendFacebookId)) { continue; } if (facebookMessageModel.LastMessage.Equals(string.Empty)) { //todo: MARK UNREAD } unreadMessages.Add(facebookMessageModel); } if (unreadMessages.Count == 0) { return(new UnreadFriendMessageList { UnreadMessages = unreadMessages.Select(model => new UnreadFriendMessageModel { FriendFacebookId = model.FriendFacebookId, UnreadMessage = model.UnreadMessage, LastMessage = model.LastMessage, CountAllMessages = model.CountAllMessages, CountUnreadMessages = model.CountUnreadMessages, LastReadMessageDateTime = model.LastReadMessageDateTime, LastUnreadMessageDateTime = model.LastUnreadMessageDateTime, FriendGender = model.Gender, FriendName = model.Name, FriendHref = model.Href, FriendType = model.FriendType }).ToList() }); } new SaveUnreadMessagesCommandHandler(new DataBaseContext()).Handle(new SaveUnreadMessagesCommand() { AccountId = account.Id, UnreadMessages = unreadMessages.Select(model => new FacebookMessageDbModel { AccountId = model.AccountId, FriendFacebookId = model.FriendFacebookId, Gender = model.Gender, CountAllMessages = model.CountAllMessages, CountUnreadMessages = model.CountUnreadMessages, Href = model.Href, LastMessage = model.LastMessage, LastReadMessageDateTime = model.LastReadMessageDateTime, LastUnreadMessageDateTime = model.LastUnreadMessageDateTime, Name = model.Name, UnreadMessage = model.UnreadMessage, FriendType = model.FriendType }).ToList() }); ureadMessages = unreadMessages.Select(model => new UnreadFriendMessageModel { FriendFacebookId = model.FriendFacebookId, UnreadMessage = model.UnreadMessage, LastMessage = model.LastMessage, CountAllMessages = model.CountAllMessages, CountUnreadMessages = model.CountUnreadMessages, LastReadMessageDateTime = model.LastReadMessageDateTime, LastUnreadMessageDateTime = model.LastUnreadMessageDateTime, FriendGender = model.Gender, FriendName = model.Name, FriendHref = model.Href }).ToList(); } catch (Exception ex) { _notice.AddNotice(functionName, account.Id, string.Format("Возникла ошибка {0}", ex.Message)); } return(new UnreadFriendMessageList { UnreadMessages = ureadMessages }); }
public void InviteToGroup(AccountViewModel account) { const string functionName = "Пригласить в группу"; _notice.AddNotice(functionName, account.Id, "Отправляем приглашения в группы..."); if (account.GroupSettingsId == null) { return; } var settings = _accountSettingsManager.GetSettings((long)account.GroupSettingsId); var statistics = new GetCommunityStatisticsQueryHandler(new DataBaseContext()).Handle(new GetCommunityStatisticsQuery { GroupId = (long)account.GroupSettingsId }); var limitMinJoinGroupLastDay = settings.MinFriendsJoinGroupInDay; var limitMaxJoinGroupLastDay = settings.MaxFriendsJoinGroupInDay; var limitMinJoinGroupLastHour = settings.MinFriendsJoinGroupInHour; var limitMaxJoinGroupLastHour = settings.MaxFriendsJoinGroupInHour; var countJoinGroupLastDay = statistics.Sum(data => data.CountOfGroupInvitations); var countJoinGroupLastHour = statistics.Where( model => (DateTime.Now - model.UpdateDateTime).Hours * 60 + (DateTime.Now - model.UpdateDateTime).Minutes < 60).Sum(data => data.CountOfGroupInvitations); if (countJoinGroupLastDay >= limitMaxJoinGroupLastDay) { _notice.AddNotice(functionName, account.Id, "Достигнут лимит максимального количества добавлений в группу в день!"); return; } if (countJoinGroupLastHour >= limitMaxJoinGroupLastHour) { _notice.AddNotice(functionName, account.Id, "Достигнут лимит максимального количества добавлений в группу в час!"); return; } var allowedToInviteHour = limitMaxJoinGroupLastHour - countJoinGroupLastHour; var allowedToInviteDay = limitMaxJoinGroupLastDay - countJoinGroupLastDay; var friends = new GetFriendsForAddedToGroupQueryHandler(new DataBaseContext()).Handle(new GetFriendsForAddedToGroupQuery { AccountId = account.Id, Count = (int) (allowedToInviteDay < allowedToInviteHour ? allowedToInviteDay : limitMaxJoinGroupLastHour) }); if (friends.Count < limitMinJoinGroupLastHour) { _notice.AddNotice(functionName, account.Id, string.Format("Недостаточно людей для добавления! Получено {0} людей для добавления! Мин. кол-во - {1}", friends.Count, limitMinJoinGroupLastHour)); return; } var groups = ConvertStringToList(settings.FacebookGroups); _notice.AddNotice(functionName, account.Id, string.Format("Начинаем добавлять {0} друзей в группы", friends.Count)); if (friends.Count > 50) { _notice.AddNotice(functionName, account.Id, string.Format("Друзей оказалось больше, берем 50 из них.")); friends = new List <FriendData>(friends.Take(50)); } var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery { UserAgentId = account.UserAgentId }); foreach (var @group in groups) { _notice.AddNotice(functionName, account.Id, string.Format("Добавляем {0} друзей в группу - {1}", friends.Count, @group)); new AddToGroupEngine().Execute(new AddToGroupModel { Cookie = account.Cookie, FacebookId = account.FacebookId, Proxy = _accountManager.GetAccountProxy(account), FacebookGroupUrl = @group, FriendsList = friends.Select(data => new FriendModel { FacebookId = data.FacebookId, FriendName = data.FriendName }).ToList(), UrlParameters = new GetUrlParametersQueryHandler(new DataBaseContext()).Handle(new GetUrlParametersQuery { NameUrlParameter = NamesUrlParameter.AddFriendsToGroup }), UserAgent = userAgent.UserAgentString }); } foreach (var friend in friends) { _notice.AddNotice(functionName, account.Id, string.Format("Отмечаем друзей как добавленные в группы")); new MarkAddToGroupFriendCommandHandler(new DataBaseContext()).Handle(new MarkAddToGroupFriendCommand { AccountId = account.Id, FriendId = friend.Id }); } _notice.AddNotice(functionName, account.Id, string.Format("Добавлено {0} друзей в группы", friends.Count)); new AddCommunityStatisticsCommandHandler(new DataBaseContext()).Handle(new AddCommunityStatisticsCommand { AccountId = account.Id, GroupId = (long)account.GroupSettingsId, CountOfGroupInvitations = friends.Count }); }
public void InviteToPage(AccountViewModel account) { const string functionName = "Пригласить в сообщество"; _notice.AddNotice(functionName, account.Id, "Отправляем приглашения в сообщества..."); if (account.GroupSettingsId == null) { return; } var settings = _accountSettingsManager.GetSettings((long)account.GroupSettingsId); var statistics = new GetCommunityStatisticsQueryHandler(new DataBaseContext()).Handle(new GetCommunityStatisticsQuery { GroupId = (long)account.GroupSettingsId }); var limitMinJoinPageLastDay = settings.MinFriendsJoinPageInDay; var limitMaxJoinPageLastDay = settings.MaxFriendsJoinPageInDay; var limitMinJoinPageLastHour = settings.MinFriendsJoinPageInHour; var limitMaxJoinPageLastHour = settings.MaxFriendsJoinPageInHour; var countJoinPageLastDay = statistics.Sum(data => data.CountOfPageInvitations); var countJoinPageLastHour = statistics.Where( model => (DateTime.Now - model.UpdateDateTime).Hours * 60 + (DateTime.Now - model.UpdateDateTime).Minutes < 60).Sum(data => data.CountOfPageInvitations); if (countJoinPageLastDay >= limitMaxJoinPageLastDay) { _notice.AddNotice(functionName, account.Id, "Превышен лимит максимального количества добавлений в сообщества в день!"); return; } if (countJoinPageLastHour >= limitMaxJoinPageLastHour) { _notice.AddNotice(functionName, account.Id, "Превышен лимит максимального количества добавлений в сообщества в час!"); return; } var allowedToInviteHour = limitMaxJoinPageLastHour - countJoinPageLastHour; var allowedToInviteDay = limitMaxJoinPageLastDay - countJoinPageLastDay; var friends = new GetFriendsForAddedToGroupQueryHandler(new DataBaseContext()).Handle(new GetFriendsForAddedToGroupQuery { AccountId = account.Id, Count = (int)(allowedToInviteDay < allowedToInviteHour ? allowedToInviteDay : limitMaxJoinPageLastHour) }); if (friends.Count < limitMinJoinPageLastHour) { _notice.AddNotice(functionName, account.Id, string.Format("Недостаточно людей для добавления в сообщество! Получено {0} людей для добавления! Мин. кол-во - {1}", friends.Count, limitMinJoinPageLastHour)); return; } var pages = ConvertStringToList(settings.FacebookPages); var userAgent = new GetUserAgentQueryHandler(new DataBaseContext()).Handle(new GetUserAgentQuery { UserAgentId = account.UserAgentId }); _notice.AddNotice(functionName, account.Id, string.Format("Начинаем добавлять {0} друзей в сообщества", friends.Count)); foreach (var friendData in friends) { foreach (var page in pages) { _notice.AddNotice(functionName, account.Id, string.Format("Добавляем {0} в в сообщество {1}", friendData.FriendName, page)); new AddToPageEngine().Execute(new AddToPageModel { Cookie = account.Cookie, FacebookId = account.FacebookId, Proxy = _accountManager.GetAccountProxy(account), FacebookPageUrl = page, Friend = new FriendModel { FacebookId = friendData.FacebookId, FriendName = friendData.FriendName }, UrlParameters = new GetUrlParametersQueryHandler(new DataBaseContext()).Handle(new GetUrlParametersQuery { NameUrlParameter = NamesUrlParameter.AddFriendsToPage }), UserAgent = userAgent.UserAgentString }); } _notice.AddNotice(functionName, account.Id, string.Format("Отмечаем друга {0} как добавленого в сообщества", friendData.FriendName)); new MarkAddToGroupFriendCommandHandler(new DataBaseContext()).Handle(new MarkAddToGroupFriendCommand { AccountId = account.Id, FriendId = friendData.Id }); } _notice.AddNotice(functionName, account.Id, string.Format("Добавлено {0} друзей в сообщеста", friends.Count)); new AddCommunityStatisticsCommandHandler(new DataBaseContext()).Handle(new AddCommunityStatisticsCommand { AccountId = account.Id, GroupId = (long)account.GroupSettingsId, CountOfPageInvitations = friends.Count }); }