public void MakeFundIn(Guid playerId, Guid destinationWalletStructureId, decimal amount, string bonusCode = null, Guid?bonusId = null) { if (bonusId.HasValue || string.IsNullOrWhiteSpace(bonusCode) == false) { BonusCommands.ApplyForBonus(new FundInBonusApplication { PlayerId = playerId, BonusId = bonusId, BonusCode = bonusCode, Amount = amount, DestinationWalletTemplateId = destinationWalletStructureId }); } ServiceBus.PublishMessage(new TransferFundCreated { PlayerId = playerId, DestinationWalletStructureId = destinationWalletStructureId, Amount = amount, BonusCode = bonusCode, Type = TransferFundType.FundIn, Status = TransferFundStatus.Approved }); // Here we need somehow create an event to mimic a wallet fund-in }
public Guid SubmitDeposit(Guid playerId, decimal depositAmount = 200, string bonusCode = null, Guid?bonusId = null) { var depositId = Guid.NewGuid(); ServiceBus.PublishMessage(new DepositSubmitted { DepositId = depositId, PlayerId = playerId, Amount = depositAmount }); if (bonusId.HasValue || string.IsNullOrWhiteSpace(bonusCode) == false) { BonusCommands.ApplyForBonus(new DepositBonusApplication { PlayerId = playerId, BonusId = bonusId, BonusCode = bonusCode, Amount = depositAmount, DepositId = depositId }); } return(depositId); }
public void Qualification_runs_before_rollover_is_issued_for_AfterWager_bonus() { MakeDeposit(PlayerId); var excludedReloadedDeposit = CreateFirstDepositBonus(mode: IssuanceMode.AutomaticWithCode); excludedReloadedDeposit.Template.Info.TemplateType = BonusType.ReloadDeposit; var reloadDepositWithExclude = CreateFirstDepositBonus(mode: IssuanceMode.AutomaticWithCode); reloadDepositWithExclude.Template.Info.TemplateType = BonusType.ReloadDeposit; reloadDepositWithExclude.Template.Wagering.HasWagering = true; reloadDepositWithExclude.Template.Wagering.IsAfterWager = true; reloadDepositWithExclude.Template.Wagering.Multiplier = 1; reloadDepositWithExclude.Template.Availability.ExcludeBonuses.Add(new BonusExclude { ExcludedBonusId = excludedReloadedDeposit.Id }); reloadDepositWithExclude.Template.Availability.ExcludeOperation = Operation.Any; var depositId = Guid.NewGuid(); BonusCommands.ApplyForBonus(new DepositBonusApplication { PlayerId = PlayerId, Amount = 200, DepositId = depositId, BonusCode = reloadDepositWithExclude.Code }); MakeDeposit(PlayerId, 200, excludedReloadedDeposit.Code); ApproveDeposit(depositId, PlayerId, 200); BonusRedemptions.First().ActivationState.Should().Be(ActivationStatus.Negated); }
public void Disqualification_is_processed_during_activation() { var depositId = Guid.NewGuid(); BonusCommands.ApplyForBonus(new DepositBonusApplication { PlayerId = PlayerId, Amount = 200, BonusCode = _bonus.Code, DepositId = depositId }); var bonusRedemption = BonusRedemptions.First(); MakeDeposit(PlayerId, bonusCode: _excludedBonus1.Code); ApproveDeposit(depositId, PlayerId, 100); bonusRedemption.ActivationState.Should().Be(ActivationStatus.Negated); }
public void ApplyForFundInBonus(FundInBonusApplication model) { _bonusCommands.ApplyForBonus(model); }