Exemple #1
0
        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);
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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
            });
        }
Exemple #5
0
        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
                });
            }
        }
Exemple #6
0
        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
            });
        }
Exemple #10
0
        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("Сообщение отправлено"));
            }
        }
Exemple #11
0
        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)
            {
            }
        }
Exemple #12
0
        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));
            }
        }
Exemple #13
0
        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()
            });
        }
Exemple #14
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("Завершено."));
        }
Exemple #15
0
        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);
        }
Exemple #16
0
        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("Отправка экстра сообщения завершена"));
        }
Exemple #17
0
        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);
        }
Exemple #18
0
        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
            });
        }
Exemple #21
0
        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
            });
        }
Exemple #22
0
        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
            });
        }