示例#1
0
 public void CreatePlayerPaymentLevel(Guid playerId, PaymentLevel paymentLevel)
 {
     _paymentRepository.PlayerPaymentLevels.Add(new PlayerPaymentLevel
     {
         PlayerId     = playerId,
         PaymentLevel = paymentLevel
     });
 }
示例#2
0
        public PaymentLevel CreatePaymentLevel(Guid brandId, string currencyCode, bool isActive = true, Guid?bankAccountId = null)
        {
            var brandBankAccounts = _paymentRepository.Banks.Include(b => b.Accounts).Single(b => b.BrandId == brandId).Accounts;

            if (bankAccountId.HasValue)
            {
                brandBankAccounts = brandBankAccounts.Where(x => x.Id == bankAccountId).ToList();
            }
            var paymentGatewaySettings = _paymentRepository.PaymentGatewaySettings.Where(b => b.BrandId == brandId).ToList();

            var hasDefaultPaymentLevel = false;
            var brand = _brandRepository.Brands.Include(x => x.BrandCurrencies)
                        .SingleOrDefault(o => o.Id == brandId);

            if (brand != null)
            {
                hasDefaultPaymentLevel = brand
                                         .BrandCurrencies
                                         .Any(o => o.BrandId == brandId &&
                                              o.CurrencyCode == currencyCode &&
                                              o.DefaultPaymentLevelId.HasValue &&
                                              o.DefaultPaymentLevelId != Guid.Empty
                                              );
            }

            var paymentLevelCode = TestDataGenerator.GetRandomString(3);
            var paymentLevelId   = Guid.NewGuid();
            var paymentLevel     = new PaymentLevel
            {
                Id                     = paymentLevelId,
                BrandId                = brandId,
                CurrencyCode           = currencyCode,
                DateCreated            = DateTimeOffset.Now,
                Code                   = "PL-" + paymentLevelCode,
                Name                   = "PaymentLevel-" + paymentLevelCode,
                EnableOfflineDeposit   = true,
                EnableOnlineDeposit    = true,
                Status                 = isActive ? PaymentLevelStatus.Active : PaymentLevelStatus.Inactive,
                BankAccounts           = brandBankAccounts,
                PaymentGatewaySettings = paymentGatewaySettings
            };

            if (!hasDefaultPaymentLevel)
            {
                _brandCommands.MakePaymentLevelDefault(paymentLevelId, brandId, currencyCode);
            }

            PopulateRepositoriesWhichNeedANewlyCreatedPaymentLevel(paymentLevel, paymentLevelId, paymentLevelCode);

            return(paymentLevel);
        }
示例#3
0
        private void PopulateRepositoriesWhichNeedANewlyCreatedPaymentLevel(
            PaymentLevel paymentLevel,
            Guid paymentLevelId,
            string paymentLevelCode)
        {
            //Populate Payment repository
            _paymentRepository.PaymentLevels.Add(paymentLevel);

            _paymentRepository.SaveChanges();

            //Populate Messaging repository
            _messagingRepository.PaymentLevels.Add(new Core.Messaging.Data.PaymentLevel()
            {
                Id   = paymentLevelId,
                Name = "PaymentLevel-Messaging-" + paymentLevelCode
            });

            _messagingRepository.SaveChanges();
        }
示例#4
0
        public override void BeforeEach()
        {
            base.BeforeEach();

            FakeBrandRepository     = Container.Resolve <FakeBrandRepository>();
            FakePlayerRepository    = Container.Resolve <FakePlayerRepository>();
            FakePaymentRepository   = Container.Resolve <FakePaymentRepository>();
            FakeSecurityRepository  = Container.Resolve <FakeSecurityRepository>();
            FakeMessagingRepository = Container.Resolve <FakeMessagingRepository>();

            for (int i = 0; i < TestDataGenerator.CountryCodes.Length; i++)
            {
                FakeBrandRepository.Countries.Add(new Country {
                    Code = TestDataGenerator.CountryCodes[i]
                });
            }

            for (int i = 0; i < TestDataGenerator.CurrencyCodes.Length; i++)
            {
                FakeBrandRepository.Currencies.Add(new Currency {
                    Code = TestDataGenerator.CurrencyCodes[i]
                });
            }

            for (int i = 0; i < TestDataGenerator.CultureCodes.Length; i++)
            {
                FakeBrandRepository.Cultures.Add(new Culture {
                    Code = TestDataGenerator.CultureCodes[i]
                });
            }

            var brandId = new Guid("00000000-0000-0000-0000-000000000138");
            var brand   = new Core.Brand.Interface.Data.Brand {
                Id = brandId, Name = "138", Status = BrandStatus.Active, TimezoneId = "Pacific Standard Time"
            };

            for (int i = 0; i < TestDataGenerator.CurrencyCodes.Length; i++)
            {
                var currencyCode = TestDataGenerator.CurrencyCodes[i];

                brand.BrandCurrencies.Add(new BrandCurrency
                {
                    BrandId               = brand.Id,
                    Brand                 = brand,
                    CurrencyCode          = currencyCode,
                    Currency              = FakeBrandRepository.Currencies.Single(x => x.Code == currencyCode),
                    DefaultPaymentLevelId = currencyCode == "CAD"
                        ? new Guid("E1E600D4-0729-4D5C-B93E-085A94B55B33")
                        : new Guid("1ED97A2B-EBA2-4B68-A70C-18A7070908F9")
                });
            }
            for (int i = 0; i < TestDataGenerator.CountryCodes.Length; i++)
            {
                var countryCode = TestDataGenerator.CountryCodes[i];

                brand.BrandCountries.Add(new BrandCountry
                {
                    BrandId     = brand.Id,
                    Brand       = brand,
                    CountryCode = countryCode,
                    Country     = FakeBrandRepository.Countries.Single(x => x.Code == countryCode)
                });
            }
            for (int i = 0; i < TestDataGenerator.CultureCodes.Length; i++)
            {
                var cultureCode = TestDataGenerator.CultureCodes[i];

                brand.BrandCultures.Add(new BrandCulture
                {
                    BrandId     = brand.Id,
                    Brand       = brand,
                    CultureCode = cultureCode,
                    Culture     = FakeBrandRepository.Cultures.Single(x => x.Code == cultureCode)
                });
            }
            var walletTemplate = new WalletTemplate()
            {
                Brand       = brand,
                Id          = Guid.NewGuid(),
                IsMain      = true,
                Name        = "Main wallet",
                DateCreated = DateTimeOffset.UtcNow,
                CreatedBy   = Guid.NewGuid()
            };

            brand.WalletTemplates.Add(walletTemplate);
            brand.DefaultCulture  = brand.BrandCultures.First().Culture.Code;
            brand.DefaultCurrency = brand.BrandCurrencies.First().Currency.Code;
            var vipLevel = new Core.Brand.Interface.Data.VipLevel {
                Name = "Standard", BrandId = brandId
            };

            brand.DefaultVipLevelId = vipLevel.Id;
            brand.DefaultVipLevel   = vipLevel;

            FakeBrandRepository.WalletTemplates.Add(walletTemplate);
            var playerVipLevel = new VipLevel
            {
                Id      = Guid.NewGuid(),
                Name    = "Standard",
                BrandId = brandId
            };

            brand.DefaultVipLevelId = playerVipLevel.Id;

            FakeBrandRepository.Brands.Add(brand);
            var playerBrand = new Core.Common.Data.Player.Brand {
                Id = brand.Id, TimezoneId = brand.TimezoneId
            };

            FakePlayerRepository.Brands.Add(playerBrand);
            FakePlayerRepository.VipLevels.Add(playerVipLevel);

            FakeMessagingRepository.VipLevels.Add(new Core.Messaging.Data.VipLevel
            {
                Id   = playerVipLevel.Id,
                Name = playerVipLevel.Name
            });

            FakeMessagingRepository.SaveChanges();

            playerBrand.DefaultVipLevelId = playerVipLevel.Id;
            FakePlayerRepository.SaveChanges();

            foreach (var questionid in TestDataGenerator.SecurityQuestions)
            {
                FakePlayerRepository.SecurityQuestions.Add(new SecurityQuestion
                {
                    Id       = new Guid(questionid),
                    Question = TestDataGenerator.GetRandomString()
                });
            }

            Container.Resolve <FakeGameRepository>().Brands.Add(new Core.Game.Interface.Data.Brand
            {
                Id         = new Guid("00000000-0000-0000-0000-000000000138"),
                TimezoneId = TestDataGenerator.GetRandomTimeZone().Id
            });

            var bankAccountType = new BankAccountType
            {
                Id   = new Guid("00000000-0000-0000-0000-000000000100"),
                Name = "Main"
            };


            FakePaymentRepository.Brands.Add(new Core.Payment.Data.Brand
            {
                Id         = new Guid("00000000-0000-0000-0000-000000000138"),
                TimezoneId = "Pacific Standard Time"
            });

            FakePaymentRepository.BankAccountTypes.Add(bankAccountType);

            var bank = new Bank
            {
                Id          = Guid.NewGuid(),
                BankId      = "SE45",
                BankName    = "Bank of Canada",
                BrandId     = brandId,
                CountryCode = "Canada",
                Created     = DateTime.Now,
                CreatedBy   = "initializer"
            };

            FakePaymentRepository.Banks.Add(bank);

            var cadAccountId = new Guid("B6755CB9-8F9A-4EBA-87E0-1ED5493B7534");

            FakePaymentRepository.BankAccounts.Add(
                new BankAccount
            {
                Id            = cadAccountId,
                AccountId     = "BoC1",
                AccountName   = "John Doe",
                AccountNumber = "SE45 0583 9825 7466",
                AccountType   = bankAccountType,
                Bank          = bank,
                Branch        = "Main",
                Province      = "Vancouver",
                CurrencyCode  = "CAD",
                Created       = DateTime.Now,
                CreatedBy     = "Initializer",
                Status        = BankAccountStatus.Active,
                Updated       = DateTime.Now,
                UpdatedBy     = "Initializer"
            }
                );

            bankAccountType = new BankAccountType
            {
                Id   = new Guid("00000000-0000-0000-0000-000000000101"),
                Name = "VIP"
            };
            FakePaymentRepository.BankAccountTypes.Add(bankAccountType);

            bank = new Bank
            {
                Id          = Guid.NewGuid(),
                BankId      = "70AC",
                BankName    = "Hua Xia Bank",
                BrandId     = brandId,
                CountryCode = "China",
                Created     = DateTime.Now,
                CreatedBy   = "initializer"
            };
            FakePaymentRepository.Banks.Add(bank);

            var rmbAccountId = new Guid("13672261-70AC-46E3-9E62-9E2E3AB77663");

            FakePaymentRepository.BankAccounts.Add(
                new BankAccount
            {
                Id            = rmbAccountId,
                AccountId     = "HXB1",
                AccountName   = "Beijing",
                AccountNumber = "BA3912940494",
                //AccountType = "Main",
                AccountType  = bankAccountType,
                Bank         = bank,
                Branch       = "Main",
                Province     = "Beijing Municipality",
                CurrencyCode = "RMB",
                Created      = DateTime.Now,
                CreatedBy    = "Initializer",
                Status       = BankAccountStatus.Active,
                Updated      = DateTime.Now,
                UpdatedBy    = "Initializer"
            }
                );

            var paymentLevel = new PaymentLevel
            {
                Id                   = new Guid("E1E600D4-0729-4D5C-B93E-085A94B55B33"),
                BrandId              = brandId,
                CurrencyCode         = "CAD",
                Name                 = "CADLevel",
                Code                 = "CADLevel",
                EnableOfflineDeposit = true,
                DateCreated          = DateTimeOffset.Now,
                CreatedBy            = "Initializer"
            };

            paymentLevel.BankAccounts.Add(FakePaymentRepository.BankAccounts.Single(a => a.Id == cadAccountId));
            FakePaymentRepository.PaymentLevels.Add(paymentLevel);

            paymentLevel = new PaymentLevel
            {
                Id                   = new Guid("1ED97A2B-EBA2-4B68-A70C-18A7070908F9"),
                BrandId              = brandId,
                CurrencyCode         = "RMB",
                Name                 = "RMBLevel",
                Code                 = "RMBLevel",
                EnableOfflineDeposit = true,
                DateCreated          = DateTimeOffset.Now,
                CreatedBy            = "Initializer"
            };
            paymentLevel.BankAccounts.Add(FakePaymentRepository.BankAccounts.Single(a => a.Id == rmbAccountId));
            FakePaymentRepository.PaymentLevels.Add(paymentLevel);

            var licensee = new Licensee
            {
                Id = Guid.NewGuid(),
                AllowedBrandCount = 1,
                Status            = LicenseeStatus.Active
            };

            FakeBrandRepository.Licensees.Add(licensee);
            FakeBrandRepository.SaveChanges();

            foreach (var culture in FakeBrandRepository.Cultures)
            {
                FakeMessagingRepository.Languages.Add(new Language
                {
                    Code = culture.Code,
                    Name = culture.Name
                });
            }

            foreach (var thisBrand in FakeBrandRepository.Brands.Include(x => x.BrandCultures.Select(y => y.Culture)))
            {
                FakeMessagingRepository.Brands.Add(new Core.Messaging.Data.Brand
                {
                    Id        = thisBrand.Id,
                    Name      = thisBrand.Name,
                    SmsNumber = TestDataGenerator.GetRandomPhoneNumber(),
                    Email     = TestDataGenerator.GetRandomEmail(),
                    Languages = thisBrand.BrandCultures.Select(x => new Language
                    {
                        Code = x.Culture.Code,
                        Name = x.Culture.Name
                    }).ToList()
                });
            }

            foreach (var thisPlayer in FakePlayerRepository.Players)
            {
                FakeMessagingRepository.Players.Add(new Core.Messaging.Data.Player
                {
                    Id        = thisPlayer.Id,
                    Username  = thisPlayer.Username,
                    FirstName = thisPlayer.FirstName,
                    LastName  = thisPlayer.LastName,
                    Email     = thisPlayer.Email,
                    Language  = FakeMessagingRepository.Languages.Single(x => x.Code == thisPlayer.CultureCode),
                    Brand     = FakeMessagingRepository.Brands.Single(x => x.Id == thisPlayer.BrandId)
                });
            }

            foreach (var thisBrand in FakeMessagingRepository.Brands.Include(x => x.Languages))
            {
                foreach (var thisLanguage in thisBrand.Languages)
                {
                    foreach (var messageType in (MessageType[])Enum.GetValues(typeof(MessageType)))
                    {
                        FakeMessagingRepository.MessageTemplates.Add(new MessageTemplate
                        {
                            BrandId               = thisBrand.Id,
                            LanguageCode          = thisLanguage.Code,
                            MessageType           = messageType,
                            MessageDeliveryMethod = MessageDeliveryMethod.Email,
                            TemplateName          = TestDataGenerator.GetRandomString(),
                            MessageContent        = string.Format("Fake email message Template. {0}.",
                                                                  Enum.GetName(typeof(MessageType), messageType)),
                            Subject     = TestDataGenerator.GetRandomString(),
                            Status      = Status.Active,
                            CreatedBy   = "System",
                            Created     = DateTimeOffset.UtcNow,
                            ActivatedBy = "System",
                            Activated   = DateTimeOffset.UtcNow
                        });

                        FakeMessagingRepository.MessageTemplates.Add(new MessageTemplate
                        {
                            BrandId               = thisBrand.Id,
                            LanguageCode          = thisLanguage.Code,
                            MessageType           = messageType,
                            MessageDeliveryMethod = MessageDeliveryMethod.Sms,
                            TemplateName          = TestDataGenerator.GetRandomString(),
                            MessageContent        = string.Format("Fake SMS message Template. {0}.",
                                                                  Enum.GetName(typeof(MessageType), messageType)),
                            Status      = Status.Active,
                            CreatedBy   = "System",
                            Created     = DateTimeOffset.UtcNow,
                            ActivatedBy = "System",
                            Activated   = DateTimeOffset.UtcNow
                        });
                    }
                }
            }

            FakeMessagingRepository.SaveChanges();

            var securityHelper = Container.Resolve <SecurityTestHelper>();

            securityHelper.PopulatePermissions();

            var licenseeIds = new[] { licensee.Id };
            var brandIds    = new[] { brand.Id };

            const string superAdminUsername = "******";

            var adminId = RoleIds.SuperAdminId;
            var role    = new Role
            {
                Id          = adminId,
                Code        = "SuperAdmin",
                Name        = "SuperAdmin",
                CreatedDate = DateTime.UtcNow
            };

            role.SetLicensees(licenseeIds);

            var user = new Core.Security.Data.Users.Admin
            {
                Id          = adminId,
                Username    = superAdminUsername,
                FirstName   = superAdminUsername,
                LastName    = superAdminUsername,
                IsActive    = true,
                Description = superAdminUsername,
                Role        = role
            };

            user.SetLicensees(licenseeIds);

            foreach (var licenseeId in licenseeIds)
            {
                user.LicenseeFilterSelections.Add(new LicenseeFilterSelection
                {
                    AdminId    = user.Id,
                    LicenseeId = licenseeId,
                    Admin      = user
                });
            }

            user.SetAllowedBrands(brandIds);

            foreach (var item in brandIds)
            {
                user.BrandFilterSelections.Add(new BrandFilterSelection
                {
                    AdminId = user.Id,
                    BrandId = item,
                    Admin   = user
                });
            }

            FakeSecurityRepository.Admins.AddOrUpdate(user);
            var authCommands = Container.Resolve <IAuthCommands>();

            authCommands.CreateRole(new CreateRole
            {
                RoleId      = adminId,
                Permissions = Container.Resolve <IAuthQueries>().GetPermissions().Select(p => p.Id).ToList()
            });
            authCommands.CreateActor(new CreateActor
            {
                ActorId  = adminId,
                Username = superAdminUsername,
                Password = superAdminUsername
            });
            authCommands.AssignRoleToActor(new AssignRole
            {
                ActorId = adminId,
                RoleId  = adminId
            });

            FakeSecurityRepository.SaveChanges();

            securityHelper.SignInAdmin(user);

            PlayerCommands = Container.Resolve <PlayerCommands>();
        }