Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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
            });
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 7
0
 public async Task <ValidationResult> ValidateConfirmDepositRequest(OfflineDepositConfirm request)
 {
     return(await _memberApiProxy.ValidateConfirmOfflineDepositRequest(request));
 }
Exemplo n.º 8
0
        public ValidationResult ValidateOfflineDepositRequest(OfflineDepositConfirm data)
        {
            var offlineWithdrawalRequest = new OfflineDepositConfirmValidator(_repository, _playerRepository, this);

            return(offlineWithdrawalRequest.Validate(data));
        }