private VipLevelViewModel CreateAddVipLevelCommand(Core.Brand.Interface.Data.Brand brand) { BrandRepository.SaveChanges(); var suffix = TestDataGenerator.GetRandomAlphabeticString(5); var vipLevel = new VipLevelViewModel { Brand = brand.Id, Code = "code" + suffix, Name = "name" + suffix, Description = "description" + suffix, Rank = TestDataGenerator.GetRandomNumber(1000), Color = TestDataGenerator.GetRandomColor(), Limits = new[] { new VipLevelLimitViewModel { GameProviderId = _fakeGameRepository.GameProviders.First().Id, CurrencyCode = "CAD", BetLimitId = _fakeGameRepository.BetLimits.First().Id } } }; while (BrandQueries.GetAllVipLevels().Any(x => x.Brand.Id == brand.Id && x.Rank == vipLevel.Rank)) { vipLevel.Rank = TestDataGenerator.GetRandomNumber(1000); } return(vipLevel); }
private void UpdateVipLevel(Guid vipLevelId, string name) { var brandCommands = Container.Resolve <IBrandCommands>(); var brandQueries = Container.Resolve <BrandQueries>(); var vipLevel = brandQueries.GetVipLevel(vipLevelId); brandCommands.DeactivateVipLevel(vipLevel.Id, "deactivate for edit", null); var vipLevelModel = new VipLevelViewModel() { Id = vipLevel.Id, Name = name, Brand = vipLevel.BrandId, Code = vipLevel.Code, Rank = vipLevel.Rank, Description = vipLevel.Description, Color = vipLevel.ColorCode, Remark = "updated", IsDefault = false, }; brandCommands.EditVipLevel(vipLevelModel); brandCommands.ActivateVipLevel(vipLevel.Id, "activation after edit"); }
private VipLevelViewModel CreateAddVipLevelCommand(Core.Brand.Interface.Data.Brand brand) { var suffix = TestDataGenerator.GetRandomAlphabeticString(5); var vipLevel = new VipLevelViewModel { Brand = brand.Id, Code = "code" + suffix, Name = "name" + suffix, Description = "description" + suffix, Rank = TestDataGenerator.GetRandomNumber(1000), Color = TestDataGenerator.GetRandomColor(), Limits = new[] { new VipLevelLimitViewModel { GameProviderId = _fakeGsiRepository.GameProviders.First().Id, CurrencyCode = "CAD", BetLimitId = _fakeGsiRepository.BetLimits.First().Id } } }; return(vipLevel); }
private Guid CreateVipLevel(string name) { var brandTestHelper = Container.Resolve <BrandTestHelper>(); var brandRepository = Container.Resolve <IBrandRepository>(); var brandCommands = Container.Resolve <IBrandCommands>(); var brand = brandTestHelper.CreateBrand(); int rank; do { rank = TestDataGenerator.GetRandomNumber(1000); } while (brandRepository.VipLevels.Any(vl => vl.Rank == rank)); var vipLevel = new VipLevelViewModel { Name = name, Code = TestDataGenerator.GetRandomString(10), Brand = brand.Id, Rank = 1, IsDefault = false }; return(brandCommands.AddVipLevel(vipLevel)); }
public VipLevelViewModel GetVipLevelViewModel(Guid vipLevelId) { var entity = GetVipLevel(vipLevelId); if (entity == null) { return(null); } var vipLevel = new VipLevelViewModel { Id = entity.Id, Brand = entity.Brand.Id, Code = entity.Code, Name = entity.Name, Rank = entity.Rank, Description = entity.Description, Color = entity.ColorCode, Limits = entity .VipLevelGameProviderBetLimits .Select(x => new VipLevelLimitViewModel { Id = x.Id, CurrencyCode = x.Currency.Code, GameProviderId = x.GameProviderId, BetLimitId = x.BetLimitId }).ToList(), }; return(vipLevel); }
private VipLevelViewModel CreateAddVipLevelCommand(Core.Brand.Interface.Data.Brand brand, string name = "", string code = "") { var suffix = TestDataGenerator.GetRandomAlphabeticString(5); int rank; do { rank = TestDataGenerator.GetRandomNumber(1000); }while (_brandRepository.VipLevels.Any(vl => vl.Rank == rank && vl.BrandId == brand.Id)); var vipLevel = new VipLevelViewModel { Id = Guid.NewGuid(), Brand = brand.Id, Code = string.IsNullOrEmpty(code) ? "code" + suffix : code, Name = string.IsNullOrEmpty(name) ? "name" + suffix : name, Description = "description" + suffix, Rank = rank, Color = TestDataGenerator.GetRandomColor(), Limits = new[] { new VipLevelLimitViewModel { GameProviderId = _gameRepository.GameProviders.First().Id, CurrencyCode = "CAD", BetLimitId = _gameRepository.BetLimits.First().Id } } }; return(vipLevel); }
public ValidationResult ValidateThatVipLevelCanBeEdited(VipLevelViewModel model) { var validator = new EditVipLevelValidator( _repository, _gameQueries.GetGameDtos()); return(validator.Validate(model)); }
public ActionResult Edit(VipLevelViewModel model) { var validationResult = _brandCommands.ValidateThatVipLevelCanBeEdited(model); if (!validationResult.IsValid) { return(this.Failed(validationResult.Errors.First().ErrorMessage)); } _brandCommands.EditVipLevel(model); return(this.Success("app:vipLevel.edited")); }
public ActionResult Add(VipLevelViewModel model) { var validationResult = _brandCommands.ValidateThatVipLevelCanBeAdded(model); if (!validationResult.IsValid) { return(this.Failed(validationResult.Errors.First().ErrorMessage)); } var id = _brandCommands.AddVipLevel(model); return(this.Success(new { id })); }
public VipLevel CreateNotDefaultVipLevel(Guid brandId, int limitCount = 0, bool isDefault = false) { var brand = _brandRepository.Brands.Single(x => x.Id == brandId); var vipLevelName = TestDataGenerator.GetRandomString(); int rank; do { rank = TestDataGenerator.GetRandomNumber(100); } while (_brandRepository.VipLevels.Any(vl => vl.Rank == rank)); var limits = new List <VipLevelLimitViewModel>(); for (var i = 0; i < limitCount; i++) { var gameProvider = _gamesTestHelper.CreateGameProvider(); var betLimit = _gamesTestHelper.CreateBetLevel(gameProvider, brand.Id); limits.Add(new VipLevelLimitViewModel { Id = Guid.NewGuid(), CurrencyCode = brand.DefaultCurrency, GameProviderId = gameProvider.Id, BetLimitId = betLimit.Id }); } var newVipLevel = new VipLevelViewModel { Name = vipLevelName, Code = vipLevelName.Remove(3), Brand = brand.Id, Rank = rank, Limits = limits, IsDefault = isDefault }; _brandCommands.AddVipLevel(newVipLevel); var vipLevel = _brandQueries.GetVipLevels().Single(x => x.Code == newVipLevel.Code); return(vipLevel); }
public VipLevel CreateVipLevel(Brand brand, int limitCount = 0) { var vipLevelName = TestDataGenerator.GetRandomString(); int rank; do { rank = TestDataGenerator.GetRandomNumber(100); } while (_brandRepository.VipLevels.Any(vl => vl.Rank == rank)); var limits = new List <VipLevelLimitViewModel>(); for (var i = 0; i < limitCount; i++) { var gameServer = CreateGameServer(); var betLimit = CreateBetLevel(gameServer, brand); limits.Add(new VipLevelLimitViewModel { Id = Guid.NewGuid(), CurrencyCode = brand.DefaultCurrency, GameServerId = gameServer.Id, BetLimitId = betLimit.Id }); } var newVipLevel = new VipLevelViewModel { Id = Guid.NewGuid(), Name = vipLevelName, Code = vipLevelName.Remove(3), Brand = brand.Id, Rank = rank, IsDefault = _brandRepository.VipLevels.All(vl => !vl.IsDefault), Limits = limits }; _brandCommands.AddVipLevel(newVipLevel, _sharedData.User.UserName); var vipLevel = _brandQueries.GetAllVipLevels().Single(x => x.Code == newVipLevel.Code); return(vipLevel); }
public void EditVipLevel(VipLevelViewModel model) { var validationResult = ValidateThatVipLevelCanBeEdited(model); if (!validationResult.IsValid) { throw new RegoValidationException(validationResult); } using (var scope = CustomTransactionScope.GetTransactionScope()) { var existingVipLevel = _repository .VipLevels .Include(x => x.VipLevelGameProviderBetLimits) .Single(x => x.Id == model.Id); //update viplevel var brand = _repository.Brands.Single(x => x.Id == model.Brand); existingVipLevel.Brand = brand; existingVipLevel.Code = model.Code; existingVipLevel.Name = model.Name; existingVipLevel.Rank = model.Rank; existingVipLevel.Description = model.Description; existingVipLevel.ColorCode = model.Color; existingVipLevel.UpdatedBy = _actorInfoProvider.Actor.UserName; existingVipLevel.DateUpdated = DateTimeOffset.Now.ToBrandOffset(brand.TimezoneId); existingVipLevel.UpdatedRemark = model.Remark; //remove removed limits var removedLimits = existingVipLevel .VipLevelGameProviderBetLimits .Where(x => model.Limits.All(lvm => lvm.Id != x.Id)) .ToArray(); removedLimits.ForEach(x => { existingVipLevel.VipLevelGameProviderBetLimits.Remove(x); _repository.VipLevelLimits.Remove(x); }); //updating viplimits foreach (var limitViewModel in model.Limits) { var limit = existingVipLevel. VipLevelGameProviderBetLimits .SingleOrDefault(x => x.Id == limitViewModel.Id); if (limit == null) { limit = new VipLevelGameProviderBetLimit() { Id = Guid.NewGuid(), VipLevel = existingVipLevel, GameProviderId = limitViewModel.GameProviderId.Value, Currency = _repository.Currencies.Single(y => y.Code == limitViewModel.CurrencyCode), BetLimitId = limitViewModel.BetLimitId.Value }; existingVipLevel.VipLevelGameProviderBetLimits.Add(limit); } else { limit.VipLevel = existingVipLevel; limit.GameProviderId = limitViewModel.GameProviderId.Value; limit.Currency = _repository.Currencies.Single(y => y.Code == limitViewModel.CurrencyCode); limit.BetLimitId = limitViewModel.BetLimitId.Value; } } //save and publish _repository.SaveChanges(); _eventBus.Publish(new VipLevelUpdated { Id = existingVipLevel.Id, BrandId = existingVipLevel.Brand.Id, Code = existingVipLevel.Code, Name = existingVipLevel.Name, Rank = existingVipLevel.Rank, Description = existingVipLevel.Description, ColorCode = existingVipLevel.ColorCode, Remark = model.Remark, VipLevelLimits = existingVipLevel.VipLevelGameProviderBetLimits.Select(x => new VipLevelLimitData { Id = x.Id, VipLevelId = existingVipLevel.Id, CurrencyCode = x.Currency.Code, GameProviderId = x.GameProviderId, BetLimitId = x.BetLimitId }).ToArray(), EventCreated = DateTimeOffset.Now.ToBrandOffset(brand.TimezoneId), }); scope.Complete(); } }
public Guid AddVipLevel(VipLevelViewModel model) { var validationResult = ValidateThatVipLevelCanBeAdded(model); if (!validationResult.IsValid) { throw new RegoValidationException(validationResult); } using (var scope = CustomTransactionScope.GetTransactionScope()) { var brand = _repository.Brands.Include(x => x.VipLevels).Single(x => x.Id == model.Brand); var vipLevel = new VipLevel { Id = model.Id ?? Guid.NewGuid(), BrandId = brand.Id, Code = model.Code, Name = model.Name, Rank = model.Rank, Description = model.Description, ColorCode = model.Color, CreatedBy = _actorInfoProvider.Actor.UserName, DateCreated = DateTimeOffset.Now.ToBrandOffset(brand.TimezoneId) }; var vipLevelLimits = model.Limits.Select(x => new VipLevelGameProviderBetLimit { Id = Guid.NewGuid(), VipLevel = vipLevel, GameProviderId = x.GameProviderId.Value, Currency = _repository.Currencies.Single(y => y.Code == x.CurrencyCode), BetLimitId = x.BetLimitId.Value }).ToList(); vipLevel.VipLevelGameProviderBetLimits = vipLevelLimits; _repository.VipLevels.Add(vipLevel); brand.VipLevels.Add(vipLevel); _repository.SaveChanges(); _eventBus.Publish(new VipLevelRegistered { Id = vipLevel.Id, BrandId = vipLevel.BrandId, Code = vipLevel.Code, Name = vipLevel.Name, Rank = vipLevel.Rank, Description = vipLevel.Description, ColorCode = vipLevel.ColorCode, Status = vipLevel.Status, VipLevelLimits = vipLevel.VipLevelGameProviderBetLimits.Select(x => new VipLevelLimitData { Id = x.Id, VipLevelId = vipLevel.Id, CurrencyCode = x.Currency.Code, GameProviderId = x.GameProviderId, BetLimitId = x.BetLimitId }).ToArray(), EventCreated = DateTimeOffset.Now.ToBrandOffset(brand.TimezoneId), }); if (model.IsDefault) { SetDefaultVipLevel(brand, vipLevel.Id); } scope.Complete(); return(vipLevel.Id); } }
public void Can_process_VipLevel_updated() { // Arrange var oldVipLevelRecordCount = _reportRepository.VipLevelRecords.Count(); var vipLevel = BrandTestHelper.CreateVipLevel(CurrentBrand.Id, 3, false); var vipLevelLimit = vipLevel.VipLevelGameProviderBetLimits.First(); _brandCommands.DeactivateVipLevel(vipLevel.Id, "deactivated", null); var vipLevelName = TestDataGenerator.GetRandomString(); int rank; do { rank = TestDataGenerator.GetRandomNumber(100); }while (_brandRepository.VipLevels.Any(vl => vl.Rank == rank)); var gameProvider = _gamesTestHelper.CreateGameProvider(); var editVipLevel = new VipLevelViewModel { Id = vipLevel.Id, Name = vipLevelName, Code = vipLevelName.Remove(3), Brand = CurrentBrand.Id, Rank = rank, Limits = new[] { new VipLevelLimitViewModel { Id = vipLevelLimit.Id, GameProviderId = vipLevelLimit.GameProviderId, CurrencyCode = vipLevelLimit.Currency.Code, BetLimitId = vipLevelLimit.BetLimitId }, new VipLevelLimitViewModel { Id = Guid.NewGuid(), GameProviderId = gameProvider.Id, CurrencyCode = BrandTestHelper.CreateCurrency("UAH", "Hryvnia").Code, BetLimitId = _gamesTestHelper.CreateBetLevel(gameProvider, CurrentBrand.Id).Id } } }; // Act _brandCommands.EditVipLevel(editVipLevel); // Assert Assert.AreEqual(oldVipLevelRecordCount + 2, _reportRepository.VipLevelRecords.Count()); var records = _reportRepository.VipLevelRecords.Skip(oldVipLevelRecordCount); var vipLevelLimits = _brandRepository.VipLevels.Single(vl => vl.Id == editVipLevel.Id).VipLevelGameProviderBetLimits; var i = 0; var actorInfoProvider = Container.Resolve <IActorInfoProvider>(); foreach (var record in records) { Assert.AreEqual(vipLevel.Id, record.VipLevelId); Assert.AreEqual(CurrentBrand.Licensee.Name, record.Licensee); Assert.AreEqual(CurrentBrand.Name, record.Brand); Assert.AreEqual(editVipLevel.Code, record.Code); Assert.AreEqual(editVipLevel.Rank, record.Rank); Assert.AreNotEqual(editVipLevel.Id, CurrentBrand.DefaultVipLevelId); Assert.Less(DateTimeOffset.Now.AddDays(-1), record.Updated); Assert.AreEqual(actorInfoProvider.Actor.UserName, record.UpdatedBy); var limit = vipLevelLimits.ElementAt(i); Assert.AreEqual(limit.Id, record.VipLevelLimitId); Assert.AreEqual(GameProvider(limit.GameProviderId), record.GameProvider); Assert.AreEqual(limit.Currency.Code, record.Currency); Assert.AreEqual(BetLimit(limit.BetLimitId), record.BetLevel); i++; } }
public TransferSettingDTO GetTransferSetting(Guid brandId, string currencyCode, VipLevelViewModel vipLevel) { if (vipLevel == null) { return(null); } var paymentSetting = _repository .TransferSettings .FirstOrDefault(ps => ps.BrandId == brandId && ps.CurrencyCode == currencyCode && ps.VipLevelId == vipLevel.Id); if (paymentSetting == null) { return(null); } return(new TransferSettingDTO { CurrencyCode = paymentSetting.CurrencyCode, VipLevel = paymentSetting.VipLevelId.ToString(), MinAmountPerTransaction = paymentSetting.MinAmountPerTransaction, MaxAmountPerTransaction = paymentSetting.MaxAmountPerTransaction, MaxAmountPerDay = paymentSetting.MaxAmountPerDay, MaxTransactionPerDay = paymentSetting.MaxTransactionPerDay, MaxTransactionPerWeek = paymentSetting.MaxTransactionPerWeek, MaxTransactionPerMonth = paymentSetting.MaxTransactionPerMonth }); }