Example #1
0
        public Guid ApplyForBonus(DepositBonusApplication model)
        {
            using (var scope = CustomTransactionScope.GetTransactionScope())
            {
                var validationResult = _bonusQueries.GetValidationResult(model);
                if (validationResult.IsValid == false)
                {
                    throw new RegoException(validationResult.Errors.First().ErrorMessage);
                }

                var player           = _repository.GetLockedPlayer(model.PlayerId);
                var redemptionParams = new RedemptionParams
                {
                    TransferAmount           = model.Amount,
                    TransferExternalId       = model.DepositId,
                    TransferWalletTemplateId = player.Data.Brand.WalletTemplates.Single(wt => wt.IsMain).Id
                };
                var bonusId    = model.BonusId ?? _repository.GetLockedBonus(model.BonusCode).Data.Id;
                var redemption = RedeemBonus(model.PlayerId, bonusId, redemptionParams);
                redemption.Events.ForEach(_eventBus.Publish);
                scope.Complete();

                return(redemption.Data.Id);
            }
        }
Example #2
0
 public Task <Guid> ApplyForBonusAsync(DepositBonusApplication model)
 {
     return(SecurePostAsJson <DepositBonusApplication, Guid>(Routes.ApplyForDepositBonus, model));
 }
 public Guid ApplyForDepositBonus(DepositBonusApplication model)
 {
     return(_bonusCommands.ApplyForBonus(model));
 }
Example #4
0
 public ValidationResult GetValidationResult(DepositBonusApplication model)
 {
     return(new DepositBonusApplicationValidator(_repository).Validate(model));
 }