public async void Confirm_offline_deposit_with_copies_of_player_ids() { // Arrange var offlineDeposit = await GetNewOfflineDeposit("OD12345678"); var depositConfirm = new OfflineDepositConfirm { Id = offlineDeposit.Id, PlayerAccountName = "Test PlayerAccountName", PlayerAccountNumber = "Test PlayerAccountName", ReferenceNumber = "Test PlayerAccountName", Amount = 2345.56M, TransferType = Core.Payment.Interface.Data.TransferType.DifferentBank, OfflineDepositType = Core.Payment.Interface.Data.DepositMethod.ATM, IdFrontImage = "Test IdFrontImage.png", IdBackImage = "Test IdBackImage.jpg" }; // Act _commandsHandler.Confirm(depositConfirm, "", new byte[] { 1, 2, 3 }, new byte[] { 4, 5, 6 }, null); // Assert offlineDeposit.PlayerAccountName.ShouldBeEquivalentTo(depositConfirm.PlayerAccountName); offlineDeposit.PlayerAccountNumber.ShouldBeEquivalentTo(depositConfirm.PlayerAccountNumber); offlineDeposit.BankReferenceNumber.ShouldBeEquivalentTo(depositConfirm.ReferenceNumber); offlineDeposit.Amount.ShouldBeEquivalentTo(depositConfirm.Amount); offlineDeposit.TransferType.ShouldBeEquivalentTo(depositConfirm.TransferType); offlineDeposit.DepositMethod.ShouldBeEquivalentTo(depositConfirm.OfflineDepositType); offlineDeposit.Status.ShouldBeEquivalentTo(OfflineDepositStatus.Processing); }
public ValidationResult ValidateConfirmDeposit(OfflineDepositConfirm request) { var depositConfirm = Mapper.Map <OfflineDepositConfirm, Core.Payment.Interface.Data.Commands.OfflineDepositConfirm>(request); var errors = new Dictionary <string, string>(); var result = _paymentQueries.ValidateOfflineDepositRequest(depositConfirm); 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 async void Confirm_offline_deposit() { // Arrange var offlineDeposit = await GetNewOfflineDeposit("OD12345678"); var depositConfirm = new OfflineDepositConfirm { Id = offlineDeposit.Id, PlayerAccountName = "Fry Philip", PlayerAccountNumber = "Test PlayerAccountName", ReferenceNumber = "Test PlayerAccountName", Amount = 2345.56M, TransferType = Core.Payment.Interface.Data.TransferType.DifferentBank, OfflineDepositType = Core.Payment.Interface.Data.DepositMethod.ATM }; // Act _commandsHandler.Confirm(depositConfirm, "", null, null, null); // Assert offlineDeposit.PlayerAccountName.ShouldBeEquivalentTo(depositConfirm.PlayerAccountName); offlineDeposit.PlayerAccountNumber.ShouldBeEquivalentTo(depositConfirm.PlayerAccountNumber); offlineDeposit.BankReferenceNumber.ShouldBeEquivalentTo(depositConfirm.ReferenceNumber); offlineDeposit.Amount.ShouldBeEquivalentTo(depositConfirm.Amount); offlineDeposit.TransferType.ShouldBeEquivalentTo(depositConfirm.TransferType); offlineDeposit.DepositMethod.ShouldBeEquivalentTo(depositConfirm.OfflineDepositType); offlineDeposit.Status.ShouldBeEquivalentTo(OfflineDepositStatus.Processing); }
private void ValidateLimits(OfflineDepositConfirm depositConfirm) { var deposit = _paymentQueries.GetDepositById(depositConfirm.Id); var playerId = deposit.PlayerId; var amount = depositConfirm.Amount; var currencyCode = deposit.CurrencyCode; _validator.Validate(playerId, currencyCode, amount); }
public async void Confirm_command_requires_copies_of_player_ids_if_player_and_account_holder_names_are_different() { // Arrange var offlineDeposit = await GetNewOfflineDeposit("OD999888777"); var offlineDepositConfirm = new OfflineDepositConfirm { Id = offlineDeposit.Id, PlayerAccountName = "Test" }; // Act Action act0 = () => _commandsHandler.Confirm(offlineDepositConfirm, "", null, null, null); Action act1 = () => _commandsHandler.Confirm(offlineDepositConfirm, "", new byte[1], null, null); Action act2 = () => _commandsHandler.Confirm(offlineDepositConfirm, "", null, new byte[1], null); // Assert act0.ShouldThrow <ArgumentException>().WithMessage("Front and back copy of ID or receipt should be uploaded."); act1.ShouldThrow <ArgumentException>().WithMessage("Front and back copy of ID or receipt should be uploaded."); act2.ShouldThrow <ArgumentException>().WithMessage("Front and back copy of ID or receipt should be uploaded."); }
public OfflineDeposit Confirm( OfflineDepositConfirm depositConfirm, string confirmedBy, byte[] idFrontImage, byte[] idBackImage, byte[] receiptImage) { var offlineDeposit = _repository.GetDepositById(depositConfirm.Id); var frontImageId = SaveFile(depositConfirm.IdFrontImage, idFrontImage, offlineDeposit.Data.PlayerId); var backImageId = SaveFile(depositConfirm.IdBackImage, idBackImage, offlineDeposit.Data.PlayerId); var receiptImageId = SaveFile(depositConfirm.ReceiptImage, receiptImage, offlineDeposit.Data.PlayerId); using (var scope = CustomTransactionScope.GetTransactionScope()) { ValidateLimits(depositConfirm); var confirmEvent = offlineDeposit.Confirm( depositConfirm.PlayerAccountName, depositConfirm.PlayerAccountNumber, depositConfirm.ReferenceNumber, depositConfirm.Amount, depositConfirm.TransferType, depositConfirm.OfflineDepositType, depositConfirm.Remark, confirmedBy, frontImageId, backImageId, receiptImageId); _repository.SaveChanges(); confirmEvent.EventCreated = DateTimeOffset.Now.ToBrandOffset(offlineDeposit.Data.Player.Brand.TimezoneId); _eventBus.Publish(confirmEvent); scope.Complete(); } return(_paymentQueries.GetDepositById(depositConfirm.Id)); }
public async Task <ValidationResult> ValidateConfirmDepositRequest(OfflineDepositConfirm request) { return(await _memberApiProxy.ValidateConfirmOfflineDepositRequest(request)); }
public ValidationResult ValidateOfflineDepositRequest(OfflineDepositConfirm data) { var offlineWithdrawalRequest = new OfflineDepositConfirmValidator(_repository, _playerRepository, this); return(offlineWithdrawalRequest.Validate(data)); }