Пример #1
0
        public void Submit_command_should_throw_exception_if_player_not_found()
        {
            // Act
            Func <Task> act = async() => await _commandsHandler.Submit(new OfflineDepositRequest());

            // Assert
            act.ShouldThrow <RegoException>().Where(m => m.Message.Contains("Player not found"));
        }
Пример #2
0
        public OfflineDeposit CreateOfflineDeposit(Guid playerId, decimal depositAmount, string bonusCode = null, Guid?bonusId = null)
        {
            var player = _playerRepository.Players
                         .Include(x => x.Brand)
                         .Single(p => p.Id == playerId);

            var brandBankAccount =
                _paymentRepository.BankAccounts.First(
                    ba => ba.Bank.BrandId == player.BrandId &&
                    ba.CurrencyCode == player.CurrencyCode &&
                    ba.Status == BankAccountStatus.Active);

            var offlineDeposit = Task.Run(async() => await _offlineDepositCommands.Submit(new OfflineDepositRequest
            {
                PlayerId      = playerId,
                BonusCode     = bonusCode,
                BonusId       = bonusId,
                Amount        = depositAmount,
                BankAccountId = brandBankAccount.Id
            })).Result;

            offlineDeposit.BankReferenceNumber = offlineDeposit.TransactionNumber;
            // TODO: reference number should be populated from Submit method above

            return(_paymentRepository.OfflineDeposits
                   .Include(x => x.Player)
                   .Include(x => x.Brand)
                   .Include(x => x.BankAccount.Bank)
                   .FirstOrDefault(x => x.Id == offlineDeposit.Id));
        }
Пример #3
0
        public async Task <CreatedNegotiatedContentResult <OfflineDepositResponse> > OfflineDeposit(OfflineDepositRequest request)
        {
            ValidateAccountFrozenStatus();

            var offlineDepositRequest = Mapper.DynamicMap <Core.Payment.Interface.Data.Commands.OfflineDepositRequest>(request);

            offlineDepositRequest.PlayerId = PlayerId;

            var deposit = await _offlineDepositCommands.Submit(offlineDepositRequest);

            var uri = RootToOfflineDeposit + deposit.Id;

            return(Created(uri, new OfflineDepositResponse
            {
                Id = deposit.Id,
                BonusRedemptionId = deposit.BonusRedemptionId,
                UriToSubmittedOfflineDeposit = string.Empty
            }));
        }
        public async Task <CreateOfflineDepositResponse> Create(CreateOfflineDepositRequest request)
        {
            VerifyPermission(Permissions.Create, Modules.OfflineDepositRequests);

            var player = _paymentQueries.GetPlayer(request.PlayerId);

            CheckBrand(player.BrandId);

            var command = Mapper.Map <OfflineDepositRequest>(request);

            //TODO: This is a temporary solution. We need to have unified way of returning validation errors
            //TODO: The problem specifically for 'PaymentSettingsViolatedException' is that it doesn't use FluentValidation.
            //TODO: PaymentSettingsValidator.cs has to be replaced with FluentValidation in order to fall under the common pattern that we use.
            OfflineDeposit response;

            try
            {
                response = await _offlineDepositCommands.Submit(command);
            }
            catch (PaymentSettingsViolatedException ex)
            {
                var errors = new List <ValidationError> {
                    new ValidationError
                    {
                        ErrorMessage = ex.Message
                    }
                };

                return(new CreateOfflineDepositResponse()
                {
                    Success = false,
                    Errors = errors
                });
            }

            return(new CreateOfflineDepositResponse
            {
                Success = true,
                Id = response.Id
            });
        }