public void Handle(DepositApproved @event) { var bonusCommands = _container.Resolve <BonusCommands>(); var repository = _container.Resolve <IBonusRepository>(); var bus = _container.Resolve <IEventBus>(); using (var scope = CustomTransactionScope.GetTransactionScope()) { var wallet = repository.GetLockedWallet(@event.PlayerId); wallet.Deposit(@event.ActualAmount, @event.ReferenceCode); wallet.Events.ForEach(bus.Publish); var player = repository.GetLockedPlayer(@event.PlayerId); var depositBonusRedemptions = player.BonusesRedeemed .Where(r => r.Parameters.TransferExternalId == @event.DepositId) .Select(br => new BonusRedemption(br)); foreach (var depositBonusRedemption in depositBonusRedemptions) { depositBonusRedemption.Data.Parameters.TransferAmount = @event.ActualAmount; bonusCommands.ProcessBonusRedemptionLifecycle(depositBonusRedemption); depositBonusRedemption.Events.ForEach(bus.Publish); } bonusCommands.ProcessHighDepositBonus(player); repository.SaveChanges(); scope.Complete(); } }
public void Handle(DepositApproved @event) { AddActivityLog("Approve " + @event.DepositType + " Deposit", @event, @event.PlayerId, @event.Remarks); if (@event.DepositWagering != 0) { AddActivityLog("Deposit Wagering Requirement", @event, @event.PlayerId); } }
public void Handle(DepositApproved approvedEvent) { var repository = _container.Resolve <IReportRepository>(); var record = repository.DepositRecords.SingleOrDefault(r => r.DepositId == approvedEvent.DepositId); if (record == null || (record.DepositType == DepositType.Offline.ToString() && record.Status != OfflineDepositStatus.Verified.ToString()) || (record.DepositType == DepositType.Online.ToString() && (record.Status == OfflineDepositStatus.Approved.ToString() || record.Status == OfflineDepositStatus.Rejected.ToString())) ) { throw new RegoException(string.Format(DepositRecordNotFoundMessage, approvedEvent.DepositId)); } record.ActualAmount = approvedEvent.ActualAmount; record.Fee = approvedEvent.Fee; record.Approved = approvedEvent.Approved; record.ApprovedBy = approvedEvent.ApprovedBy; record.Status = OfflineDepositStatus.Approved.ToString(); repository.SaveChanges(); }
public void Consume(DepositApproved approvedEvent) { var paymentRepository = _container.Resolve <IPaymentRepository>(); var record = paymentRepository.Deposits.SingleOrDefault(r => r.Id == approvedEvent.DepositId); if (record == null) { throw new RegoException(string.Format(DepositRecordNotFoundMessage, approvedEvent.DepositId)); } if ((record.DepositType == DepositType.Offline && record.Status != OfflineDepositStatus.Verified.ToString()) || (record.DepositType == DepositType.Online && (record.Status == OnlineDepositStatus.Approved.ToString() || record.Status == OnlineDepositStatus.Rejected.ToString())) ) { throw new RegoException(string.Format("deposit record '{0}' was in '{1}' state, can't be approved", approvedEvent.DepositId, record.Status)); } record.Status = OfflineDepositStatus.Approved.ToString(); record.DateApproved = approvedEvent.Approved; record.ApprovedBy = approvedEvent.ApprovedBy; paymentRepository.SaveChanges(); }
public void Consume(DepositApproved message) { _depositHandlers.Handle(message); }
public void Consume(DepositApproved message) { _paymentSubscriber.Handle(message); }
public void Handle(DepositApproved @event) { AddActivityLog(AdminActivityLogCategory.Deposit, @event); }