public void OpenResponsibleGamblingSectionInPlayerInfoPage(ResponsibleGamblingSection responsibleGamblingSection, PlayerInfoPage playerInfoPage, string playerUsername)
 {
     _playerManagerPage = _dashboardPage.Menu.ClickPlayerManagerMenuItem();
     _playerManagerPage.SelectPlayer(playerUsername);
     playerInfoPage             = _playerManagerPage.OpenPlayerInfoPage();
     responsibleGamblingSection = playerInfoPage.OpenResponsibleGamblingSection();
 }
        public void Can_Time_Out_account_and_cancel()
        {
            var      brandTestHelper   = _container.Resolve <BrandTestHelper>();
            var      paymentTestHelper = _container.Resolve <PaymentTestHelper>();
            var      playerTestHelper  = _container.Resolve <PlayerTestHelper>();
            var      defaultLicenseeId = brandTestHelper.GetDefaultLicensee();
            DateTime localDate         = DateTime.Now;

            //create a brand for a default licensee
            var brand = brandTestHelper.CreateBrand(defaultLicenseeId, isActive: true);

            paymentTestHelper.CreatePaymentSettings(brand, PaymentType.Deposit);

            // create a player with a bound bank account for a brand
            var player         = playerTestHelper.CreatePlayer(true, brand.Id);
            var playerUsername = player.Username;

            //login to admin website, select to display the custom brand
            _driver.Navigate().Refresh();
            _dashboardPage.BrandFilter.SelectAll();

            //self exclude account and cancel (duration 24 hours)
            _playerManagerPage = _dashboardPage.Menu.ClickPlayerManagerMenuItem();
            _playerManagerPage.SelectPlayer(playerUsername);
            var playerInfoPage             = _playerManagerPage.OpenPlayerInfoPage();
            var responsibleGamblingSection = playerInfoPage.OpenResponsibleGamblingSection();

            var durationEndData24Hrs = responsibleGamblingSection.SetTimeOutData("24 hrs");
            var data24Hrs            = localDate.AddDays(1);

            Assert.IsTrue(durationEndData24Hrs.Contains(data24Hrs.ToString("d", CultureInfo.CreateSpecificCulture("ja-JP"))));
            responsibleGamblingSection.CloseTab("Player Info");

            VerifyIsCheckBoxTimeOutSelected(responsibleGamblingSection, playerInfoPage, playerUsername);

            UnselectedCheckBoxTimeOutAndVerify(responsibleGamblingSection, playerInfoPage);

            //self exclude account and cancel (duration 1 week)
            OpenResponsibleGamblingSectionInPlayerInfoPage(responsibleGamblingSection, playerInfoPage, playerUsername);

            var durationEndData1Week = responsibleGamblingSection.SetTimeOutData("1 week");
            var data1Week            = localDate.AddDays(7);

            Assert.IsTrue(durationEndData1Week.Contains(data1Week.ToString("d", CultureInfo.CreateSpecificCulture("ja-JP"))));
            responsibleGamblingSection.CloseTab("Player Info");

            VerifyIsCheckBoxTimeOutSelected(responsibleGamblingSection, playerInfoPage, playerUsername);

            UnselectedCheckBoxTimeOutAndVerify(responsibleGamblingSection, playerInfoPage);

            //self exclude account and cancel (duration 1 month)
            OpenResponsibleGamblingSectionInPlayerInfoPage(responsibleGamblingSection, playerInfoPage, playerUsername);

            var durationEndData1Month = responsibleGamblingSection.SetTimeOutData("1 month");
            var data1Month            = localDate.AddMonths(1);

            Assert.IsTrue(durationEndData1Month.Contains(data1Month.ToString("d", CultureInfo.CreateSpecificCulture("ja-JP"))));
            responsibleGamblingSection.CloseTab("Player Info");

            VerifyIsCheckBoxTimeOutSelected(responsibleGamblingSection, playerInfoPage, playerUsername);

            UnselectedCheckBoxTimeOutAndVerify(responsibleGamblingSection, playerInfoPage);

            //self exclude account and cancel (duration 1 month)
            OpenResponsibleGamblingSectionInPlayerInfoPage(responsibleGamblingSection, playerInfoPage, playerUsername);

            var durationEndData6Weeks = responsibleGamblingSection.SetTimeOutData("6 weeks");
            var data6Weeks            = localDate.AddDays(42);

            Assert.IsTrue(durationEndData6Weeks.Contains(data6Weeks.ToString("d", CultureInfo.CreateSpecificCulture("ja-JP"))));
            responsibleGamblingSection.CloseTab("Player Info");

            VerifyIsCheckBoxTimeOutSelected(responsibleGamblingSection, playerInfoPage, playerUsername);

            UnselectedCheckBoxTimeOutAndVerify(responsibleGamblingSection, playerInfoPage);
        }
        public void Can_Self_Exclude_account_and_cancel()
        {
            var      brandTestHelper   = _container.Resolve <BrandTestHelper>();
            var      paymentTestHelper = _container.Resolve <PaymentTestHelper>();
            var      playerTestHelper  = _container.Resolve <PlayerTestHelper>();
            var      defaultLicenseeId = brandTestHelper.GetDefaultLicensee();
            DateTime localDate         = DateTime.Now;

            //create a brand for a default licensee
            var brand = brandTestHelper.CreateBrand(defaultLicenseeId, isActive: true);

            paymentTestHelper.CreatePaymentSettings(brand, PaymentType.Deposit);

            // create a player with a bound bank account for a brand
            var player         = playerTestHelper.CreatePlayer(true, brand.Id);
            var playerUsername = player.Username;

            //login to admin website, select to display the custom brand
            _driver.Navigate().Refresh();
            _dashboardPage.BrandFilter.SelectAll();

            //self exclude account and cancel (duration 6 months)
            _playerManagerPage = _dashboardPage.Menu.ClickPlayerManagerMenuItem();
            _playerManagerPage.SelectPlayer(playerUsername);
            var playerInfoPage             = _playerManagerPage.OpenPlayerInfoPage();
            var responsibleGamblingSection = playerInfoPage.OpenResponsibleGamblingSection();

            var durationEndData6Months = responsibleGamblingSection.SetSelfExcludeData("6 months");
            var data6Months            = localDate.AddMonths(6);

            Assert.IsTrue(durationEndData6Months.Contains(data6Months.ToString("d", CultureInfo.CreateSpecificCulture("ja-JP"))));
            responsibleGamblingSection.CloseTab("Player Info");

            VerifyIsCheckBoxSelfExcludeSelected(responsibleGamblingSection, playerInfoPage, playerUsername);

            UnselectedCheckBoxSelfExcludeAndVerify(responsibleGamblingSection, playerInfoPage);

            //self exclude account and cancel (duration 1 year)
            OpenResponsibleGamblingSectionInPlayerInfoPage(responsibleGamblingSection, playerInfoPage, playerUsername);

            var durationEndData1Year = responsibleGamblingSection.SetSelfExcludeData("1 year");
            var data1Year            = localDate.AddYears(1);

            Assert.IsTrue(durationEndData1Year.Contains(data1Year.ToString("d", CultureInfo.CreateSpecificCulture("ja-JP"))));
            responsibleGamblingSection.CloseTab("Player Info");

            VerifyIsCheckBoxSelfExcludeSelected(responsibleGamblingSection, playerInfoPage, playerUsername);

            UnselectedCheckBoxSelfExcludeAndVerify(responsibleGamblingSection, playerInfoPage);

            //self exclude account and cancel (duration 5 years)
            OpenResponsibleGamblingSectionInPlayerInfoPage(responsibleGamblingSection, playerInfoPage, playerUsername);

            var durationEndData5Years = responsibleGamblingSection.SetSelfExcludeData("5 years");
            var data5Years            = localDate.AddYears(5);

            Assert.IsTrue(durationEndData5Years.Contains(data5Years.ToString("d", CultureInfo.CreateSpecificCulture("ja-JP"))));
            responsibleGamblingSection.CloseTab("Player Info");

            VerifyIsCheckBoxSelfExcludeSelected(responsibleGamblingSection, playerInfoPage, playerUsername);

            UnselectedCheckBoxSelfExcludeAndVerify(responsibleGamblingSection, playerInfoPage);

            //self exclude account and cancel (duration permanent)
            OpenResponsibleGamblingSectionInPlayerInfoPage(responsibleGamblingSection, playerInfoPage, playerUsername);

            var durationEndDataPermanent = responsibleGamblingSection.SetSelfExcludeData("permanent");

            Assert.IsTrue(durationEndDataPermanent.Contains("10000/01/01"));
            responsibleGamblingSection.CloseTab("Player Info");

            VerifyIsCheckBoxSelfExcludeSelected(responsibleGamblingSection, playerInfoPage, playerUsername);

            UnselectedCheckBoxSelfExcludeAndVerify(responsibleGamblingSection, playerInfoPage);
        }
        public void Can_create_and_view_player()
        {
            // create a player
            var playerData = TestDataGenerator.CreateValidPlayerDataForAdminWebsite(DefaultLicensee, DefaultBrand, currency: "RMB", country: "US");

            var newPlayerForm = _playerManagerPage.OpenNewPlayerForm();
            var submittedForm = newPlayerForm.Register(playerData);

            Assert.AreEqual("The player has been successfully created", submittedForm.ConfirmationMessage);
            submittedForm.CloseTab("View Player");
            //check a player
            var playerInfoPage = _playerManagerPage.OpenPlayerInfoPage(playerData.LoginName);

            playerInfoPage.OpenAccountInformationSection();
            var playerAccountInfo = playerInfoPage.GetAccountDetails();


            Assert.AreEqual(playerData.LoginName, playerAccountInfo.Username);
            Assert.AreEqual(playerData.FirstName, playerAccountInfo.FirstName);
            Assert.AreEqual(playerData.LastName, playerAccountInfo.LastName);
            Assert.AreEqual(playerData.Title, playerAccountInfo.Title);
            Assert.AreEqual(playerData.Gender, playerAccountInfo.Gender);
            Assert.AreEqual(playerData.Email, playerAccountInfo.EmailAddress);
            Assert.AreEqual(playerData.MobileNumber, playerAccountInfo.MobileNumber);
            Assert.AreEqual(playerData.Address, playerAccountInfo.AddressLine1);
            Assert.AreEqual(playerData.City, playerAccountInfo.City);
            Assert.AreEqual(playerData.ZipCode, playerAccountInfo.PostalCode);
            Assert.AreEqual("United States", playerAccountInfo.Country);
            Assert.AreEqual("RMBLevel", playerAccountInfo.PaymentLevel);
            Assert.AreEqual(playerData.ContactPreference, playerAccountInfo.PrimaryContact);
            Assert.AreEqual("Email, Sms", playerAccountInfo.AccountAlerts);
            Assert.AreEqual("Email, Sms, Phone", playerAccountInfo.MarketingAlerts);
        }
        public void Can_change_payment_level_of_player_and_view_new_payment_level_applied()
        {
            var brandTestHelper   = _container.Resolve <BrandTestHelper>();
            var paymentTestHelper = _container.Resolve <PaymentTestHelper>();
            var playerTestHelper  = _container.Resolve <PlayerTestHelper>();
            var playerQueries     = _container.Resolve <PlayerQueries>();
            var defaultLicenseeId = brandTestHelper.GetDefaultLicensee();

            //create a brand for a default licensee
            var brand = brandTestHelper.CreateBrand(defaultLicenseeId, null, null, null, true);

            paymentTestHelper.CreatePaymentSettings(brand, PaymentType.Deposit);

            // create a player with a bound bank account for a brand
            var player = playerTestHelper.CreatePlayer(true, brand.Id);

            Thread.Sleep(5000);
            var playerUsername = player.Username;

            //login to admin website, select to display the custom brand
            _driver.Logout();
            _dashboardPage = _driver.LoginToAdminWebsiteAsSuperAdmin();
            _dashboardPage.BrandFilter.SelectAll();

            //make offline deposit and check the relevant payment settings are applied for player
            _playerManagerPage = _dashboardPage.Menu.ClickPlayerManagerMenuItem();
            _playerManagerPage.SelectPlayer(playerUsername);
            var offlineDepositRequestForm = _playerManagerPage.OpenOfflineDepositRequestForm();

            Thread.Sleep(1000);
            var defaultBankName = offlineDepositRequestForm.Bank.Text;

            Assert.AreNotEqual(defaultBankName, string.Empty);

            offlineDepositRequestForm.CloseTab("Offline Deposit Request");

            //create new payment level with new bankAccount
            var bankAccount  = paymentTestHelper.CreateBankAccount(brand.Id, player.CurrencyCode);
            var paymentLevel = paymentTestHelper.CreatePaymentLevel(brand.Id, player.CurrencyCode, bankAccountId: bankAccount.Id);

            //change the payment level of the player
            _playerManagerPage = _playerManagerPage.Menu.ClickPlayerManagerMenuItem();
            var playerInfoPage = _playerManagerPage.OpenPlayerInfoPage(playerUsername);

            playerInfoPage.OpenAccountInformationSection();
            var changePaymentLevelDialog = playerInfoPage.OpenChangePaymentLevelDialog();

            changePaymentLevelDialog.Submit(paymentLevel.Name, "change payment level");
            Thread.Sleep(1000);

            //assert account details
            var playerAccountInfo = playerInfoPage.GetAccountDetails();

            Assert.AreEqual(paymentLevel.Name, playerAccountInfo.PaymentLevel);
            playerInfoPage.CloseTab("Player Info");

            //open offline deposit form again to confirm the bankaccount is changed
            _playerManagerPage.SelectPlayer(playerUsername);
            offlineDepositRequestForm = _playerManagerPage.OpenOfflineDepositRequestForm();
            Thread.Sleep(1000);
            var newBankName = offlineDepositRequestForm.Bank.Text;

            Assert.AreEqual(newBankName, bankAccount.Bank.BankName + " / " + bankAccount.AccountName);
            Assert.AreNotEqual(defaultBankName, newBankName);

            var submittedOfflineDepositRequest = offlineDepositRequestForm.Submit(10);

            Assert.AreEqual("Offline deposit request has been created successfully", submittedOfflineDepositRequest.Confirmation);
        }
        //TODO: VladS  AFTREGO-4540, Igor, 08-April-2016
        public void Can_change_vip_level_of_player_and_view_new_payment_settings_are_applied()
        {
            var brandTestHelper   = _container.Resolve <BrandTestHelper>();
            var paymentTestHelper = _container.Resolve <PaymentTestHelper>();
            var playerTestHelper  = _container.Resolve <PlayerTestHelper>();
            var defaultLicenseeId = brandTestHelper.GetDefaultLicensee();

            //create a brand for a default licensee
            var brand = brandTestHelper.CreateBrand(defaultLicenseeId, null, null, null, true);

            paymentTestHelper.CreatePaymentSettings(brand, PaymentType.Deposit);

            // create a player with a bound bank account for a brand
            var player = playerTestHelper.CreatePlayer(true, brand.Id);

            Thread.Sleep(5000);
            var playerUsername = player.Username;

            paymentTestHelper.CreatePlayerBankAccount(player.Id, DefaultBrandId, true);
            var defaultVipLevel = player.VipLevel;

            // create second brand's vip level and payment settings based on it
            var secondVipLevel = brandTestHelper.CreateVipLevel(brand.Id, isDefault: false);
            var settings       = new PaymentSettingsValues
            {
                MinAmountPerTransaction = 5,
                MaxAmountPerTransaction = 9
            };
            var paymentSettingsForSecondVipLevel = paymentTestHelper.CreatePaymentSettings(brand, PaymentType.Deposit, secondVipLevel.Id.ToString(), settings);

            _paymentSettingsCommands.Disable(paymentSettingsForSecondVipLevel.Id, "remark");

            //login to admin website, select to display the custom brand
            _driver.Logout();
            _dashboardPage = _driver.LoginToAdminWebsiteAsSuperAdmin();
            _dashboardPage.BrandFilter.SelectAll();

            //make offline deposit and check the relevant payment settings are applied for player
            _playerManagerPage = _dashboardPage.Menu.ClickPlayerManagerMenuItem();
            _playerManagerPage.SelectPlayer(playerUsername);
            var offlineDepositRequestForm = _playerManagerPage.OpenOfflineDepositRequestForm();

            const decimal depositAmount = 10;
            var           submittedOfflineDepositRequest = offlineDepositRequestForm.Submit(depositAmount);

            Assert.AreEqual("Offline deposit request has been created successfully", submittedOfflineDepositRequest.Confirmation);
            submittedOfflineDepositRequest.CloseTab("View Offline Deposit Request");

            //deactivate the default vip level and make the second vip level default
            var vipLevelManagerPage      = _playerManagerPage.Menu.ClickVipLevelManagerMenuItem();
            var deactivateVipLevelDialog = vipLevelManagerPage.OpenDeactivateDialog(defaultVipLevel.Name, true);

            vipLevelManagerPage = deactivateVipLevelDialog.Deactivate();

            //change the vip level of the player
            _playerManagerPage = vipLevelManagerPage.Menu.ClickPlayerManagerMenuItem();
            var playerInfoPage = _playerManagerPage.OpenPlayerInfoPage(playerUsername);

            playerInfoPage.OpenAccountInformationSection();
            //_driver.Manage().Window.Maximize();
            var changeVipLevelDialog = playerInfoPage.OpenChangeVipLevelDialog();

            changeVipLevelDialog.Submit(secondVipLevel.Name);
            playerInfoPage.CloseTab("Player Info");

            //enable payment settings for second vip level
            _paymentSettingsCommands.Enable(paymentSettingsForSecondVipLevel.Id, "remark");

            //try to make deposit again
            _playerManagerPage.SelectPlayer(playerUsername);
            var secondOfflineDepositRequestForm = _playerManagerPage.OpenOfflineDepositRequestForm();

            secondOfflineDepositRequestForm.TryToSubmit(depositAmount);

            //TODO: VladS Payment settings applied but message doesn't show up.
            //Assert.That(offlineDepositRequestForm.ErrorMessage, Is.StringContaining("Deposit failed. The entered amount exceeds the allowed value. Maximum value is 9.00."));
        }