Example #1
0
        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();
            }
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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();
        }
Example #4
0
        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();
        }
Example #5
0
 public void Consume(DepositApproved message)
 {
     _depositHandlers.Handle(message);
 }
Example #6
0
 public void Consume(DepositApproved message)
 {
     _paymentSubscriber.Handle(message);
 }
Example #7
0
 public void Handle(DepositApproved @event)
 {
     AddActivityLog(AdminActivityLogCategory.Deposit, @event);
 }