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); } }
public Task <Guid> ApplyForBonusAsync(DepositBonusApplication model) { return(SecurePostAsJson <DepositBonusApplication, Guid>(Routes.ApplyForDepositBonus, model)); }
public Guid ApplyForDepositBonus(DepositBonusApplication model) { return(_bonusCommands.ApplyForBonus(model)); }
public ValidationResult GetValidationResult(DepositBonusApplication model) { return(new DepositBonusApplicationValidator(_repository).Validate(model)); }