public ValidationResult ValidatePlayerBankAccount([FromUri] PlayerBankAccountRequest request) { var data = new EditPlayerBankAccountData(); Mapper.DynamicMap(request, data); data.PlayerId = PlayerId; var result = _paymentQueries.ValidatePlayerBankAccount(data); if (result == null) { throw new RegoException(ErrorMessagesEnum.ServiceUnavailable.ToString()); } var errors = new Dictionary <string, string>(); if (result.Errors.Any()) { result.Errors.ForEach(x => { if (!errors.ContainsKey(x.PropertyName)) { errors.Add(x.PropertyName, x.ErrorMessage); } }); } return(new ValidationResult { Errors = errors }); }
public IHttpActionResult SaveBankAccount(EditPlayerBankAccountData model) { var isExistingBankAccount = model.Id.HasValue; VerifyPermission(isExistingBankAccount ? Permissions.Update : Permissions.Create, Modules.PlayerBankAccount); if (isExistingBankAccount) { var editValidationResult = _playerBankAccountCommands.ValidateThatPlayerBankAccountCanBeEdited(model); if (!editValidationResult.IsValid) { return(Ok(ValidationExceptionResponse(editValidationResult.Errors))); } _playerBankAccountCommands.Edit(model); return(Ok(new { Result = "success" })); } var validationResult = _playerBankAccountCommands.ValidateThatPlayerBankAccountCanBeAdded(model); if (!validationResult.IsValid) { return(Ok(ValidationExceptionResponse(validationResult.Errors))); } _playerBankAccountCommands.Add(model); return(Ok(new { Result = "success" })); }
public void ThenPlayerBankAccountIsSuccessfullyAdded() { ScenarioContext.Current.Should().ContainKey("playerId"); ScenarioContext.Current.Should().ContainKey("bankAccountId"); var playerId = ScenarioContext.Current.Get <Guid>("playerId"); var bankAccountId = ScenarioContext.Current.Get <Guid>("bankAccountId"); var data = new EditPlayerBankAccountData { Id = Guid.NewGuid(), PlayerId = playerId, Bank = bankAccountId, AccountName = TestDataGenerator.GetRandomString(), AccountNumber = TestDataGenerator.GetRandomString(10, "1234567890"), Province = TestDataGenerator.GetRandomString(), City = TestDataGenerator.GetRandomString(), Branch = TestDataGenerator.GetRandomString(), SwiftCode = TestDataGenerator.GetRandomString(), Address = TestDataGenerator.GetRandomString() }; var result = AdminApiProxy.SaveBankAccountInPlayerManager(data); result.Should().NotBeNull(); result.StatusCode.ShouldBeEquivalentTo(HttpStatusCode.OK); }
public void Edit(EditPlayerBankAccountData model) { using (var scope = CustomTransactionScope.GetTransactionScope(IsolationLevel.RepeatableRead)) { var validationResult = new EditPlayerBankAccountValidator(_repository, _queries).Validate(model); if (!validationResult.IsValid) { throw new RegoValidationException(validationResult); } var bank = _repository.Banks.Single(x => x.Id == model.Bank); var bankAccount = _repository.PlayerBankAccounts .Include(x => x.Player.CurrentBankAccount) .Include(x => x.Player.Brand) .Include(x => x.Bank) .Single(x => x.Id == model.Id.Value); var isModified = bankAccount.Bank.Id != bank.Id || bankAccount.Province != model.Province || bankAccount.City != model.City || bankAccount.Branch != model.Branch || bankAccount.SwiftCode != model.SwiftCode || bankAccount.Address != model.Address || bankAccount.AccountName != model.AccountName || bankAccount.AccountNumber != model.AccountNumber; if (isModified) { bankAccount.Status = BankAccountStatus.Pending; } bankAccount.Bank = bank; bankAccount.Province = model.Province; bankAccount.City = model.City; bankAccount.Branch = model.Branch; bankAccount.SwiftCode = model.SwiftCode; bankAccount.Address = model.Address; bankAccount.AccountName = model.AccountName; bankAccount.AccountNumber = model.AccountNumber; bankAccount.Updated = DateTimeOffset.Now.ToBrandOffset(bankAccount.Player.Brand.TimezoneId); bankAccount.UpdatedBy = _actorInfoProvider.Actor.UserName; _repository.SaveChanges(); _eventBus.Publish(new PlayerBankAccountEdited { Id = bankAccount.Id, Name = bankAccount.AccountName, Number = bankAccount.AccountNumber, EventCreated = bankAccount.Updated.Value, }); scope.Complete(); } }
public PlayerBankAccountResponse CreatePlayerBankAccount(PlayerBankAccountRequest request) { var data = new EditPlayerBankAccountData(); Mapper.DynamicMap(request, data); data.PlayerId = PlayerId; var result = _playerBankAccountCommands.Add(data); return(new PlayerBankAccountResponse()); }
public EditPlayerBankAccountData CreatePlayerBankAccountData() { var data = new EditPlayerBankAccountData { PlayerId = new Guid("66AF937B-63D3-4CD4-89C4-7EECAD4FBB05"), Bank = new Guid("46C5D75E-4DF4-41B0-AA71-1D5E8CDAA897"), AccountName = TestDataGenerator.GetRandomString(), AccountNumber = TestDataGenerator.GetRandomString(7, "0123456789"), Province = TestDataGenerator.GetRandomString(), City = TestDataGenerator.GetRandomString(), Branch = TestDataGenerator.GetRandomString(), SwiftCode = TestDataGenerator.GetRandomString(), Address = TestDataGenerator.GetRandomString(), }; return(data); }
public Guid Add(EditPlayerBankAccountData model) { using (var scope = CustomTransactionScope.GetTransactionScope(IsolationLevel.RepeatableRead)) { var validationResult = new AddPlayerBankAccountValidator(_repository, _queries).Validate(model); if (!validationResult.IsValid) { throw new RegoValidationException(validationResult); } var player = _repository.Players .Include(x => x.CurrentBankAccount) .Single(x => x.Id == model.PlayerId); var bank = _repository.Banks .Include(x => x.Brand) .Single(x => x.Id == model.Bank); var bankAccount = new PlayerBankAccount { Id = Guid.NewGuid(), Player = player, Status = BankAccountStatus.Pending, Bank = bank, Province = model.Province, City = model.City, Branch = model.Branch, SwiftCode = model.SwiftCode, Address = model.Address, AccountName = model.AccountName, AccountNumber = model.AccountNumber, Created = DateTimeOffset.Now.ToBrandOffset(bank.Brand.TimezoneId), CreatedBy = _actorInfoProvider.Actor.UserName }; if (player.CurrentBankAccount == null || player.CurrentBankAccount.Status != BankAccountStatus.Active) { if (player.CurrentBankAccount != null) { player.CurrentBankAccount.IsCurrent = false; } player.CurrentBankAccount = bankAccount; bankAccount.IsCurrent = true; } _repository.PlayerBankAccounts.Add(bankAccount); _repository.SaveChanges(); _eventBus.Publish(new PlayerBankAccountAdded { Id = bankAccount.Id, Name = bankAccount.AccountName, Number = bankAccount.AccountNumber, EventCreated = bankAccount.Created, }); scope.Complete(); return(bankAccount.Id); } }
public ValidationResult ValidateThatPlayerBankAccountCanBeAdded(EditPlayerBankAccountData data) { var validator = new AddPlayerBankAccountValidator(_repository, _queries); return(validator.Validate(data)); }
public HttpResponseMessage SaveBankAccountInPlayerManager(EditPlayerBankAccountData request) { return(WebClient.SecurePostAsJson <EditPlayerBankAccountData, HttpResponseMessage>(Token, _url + AdminApiRoutes.SaveBankAccountInPlayerManager, request)); }
public ValidationResult ValidatePlayerBankAccount(EditPlayerBankAccountData data) { return(new AddPlayerBankAccountValidator(_repository, this).Validate(data)); }