コード例 #1
0
        public DepositSubmitted Submit()
        {
            var depositSubmitted = new DepositSubmitted
            {
                DepositId         = Data.Id,
                PlayerId          = Data.PlayerId,
                TransactionNumber = Data.TransactionNumber,
                Amount            = Data.Amount,
                Submitted         = Data.Created,
                SubmittedBy       = Data.CreatedBy,
                CurrencyCode      = Data.CurrencyCode,
                PaymentMethod     = PaymentMethodDto.OfflinePayMethod,
                DepositType       = Data.DepositType,
                Status            = Data.Status.ToString(),
                Remarks           = Data.Remark,
                EventCreated      = Data.Created,
            };

            if (Data.BankAccount != null)
            {
                var bankAccount = Data.BankAccount;
                depositSubmitted.BankAccountName   = bankAccount.AccountName;
                depositSubmitted.BankAccountNumber = bankAccount.AccountNumber;
                depositSubmitted.BankAccountId     = bankAccount.AccountId;
                depositSubmitted.BankProvince      = bankAccount.Province;
                depositSubmitted.BankBranch        = bankAccount.Branch;
                depositSubmitted.BankName          = bankAccount.Bank != null ? bankAccount.Bank.BankName : null;
                depositSubmitted.BankAccount       = Data.BankAccount.Id;
            }

            return(depositSubmitted);
        }
コード例 #2
0
        public void Handle(DepositSubmitted @event)
        {
            var bonusCommands   = _container.Resolve <BonusCommands>();
            var bonusQueries    = _container.Resolve <BonusQueries>();
            var bus             = _container.Resolve <IEventBus>();
            var bonusRepository = _container.Resolve <IBonusRepository>();

            using (var scope = CustomTransactionScope.GetTransactionScope())
            {
                var player           = bonusRepository.GetLockedPlayer(@event.PlayerId);
                var redemptionParams = new RedemptionParams
                {
                    TransferAmount           = @event.Amount,
                    TransferExternalId       = @event.DepositId,
                    TransferWalletTemplateId = player.Data.Brand.WalletTemplates.Single(wt => wt.IsMain).Id
                };

                bonusQueries
                .GetQualifiedAutomaticBonusIds(@event.PlayerId, player.DepositQuailifiedBonusType, redemptionParams)
                .ForEach(bonusId =>
                {
                    var redemption = bonusCommands.RedeemBonus(@event.PlayerId, bonusId, redemptionParams);
                    redemption.Events.ForEach(bus.Publish);
                });

                scope.Complete();
            }
        }
コード例 #3
0
        public void WhenNewActivityLogIsCreated()
        {
            ScenarioContext.Current.Should().ContainKey("playerId");
            var playerId = ScenarioContext.Current.Get <Guid>("playerId");

            var @event = new DepositSubmitted
            {
                PlayerId = playerId,
                Amount   = 1
            };

            PlayerHelper.AddActivityLog("Deposit submitted", @event, playerId, string.Empty, string.Empty);
        }
コード例 #4
0
        public void Consume(DepositSubmitted submittedEvent)
        {
            var paymentRepository = _container.Resolve <IPaymentRepository>();

            var record = paymentRepository.Deposits.SingleOrDefault(r => r.Id == submittedEvent.DepositId);

            if (record != null)
            {
                throw new RegoException(string.Format("deposit record '{0}' already exists", submittedEvent.DepositId));
            }

            var player = paymentRepository.Players
                         .SingleOrDefault(x => x.Id == submittedEvent.PlayerId);

            if (player == null)
            {
                throw new RegoException(string.Format("plaer '{0}' not found", submittedEvent.PlayerId));
            }
            var brand = paymentRepository.Brands.FirstOrDefault(x => x.Id == player.BrandId);

            if (brand == null)
            {
                throw new RegoException(string.Format("brand '{0}' not found", player.BrandId));
            }

            record = new Deposit
            {
                Id                  = submittedEvent.DepositId,
                Licensee            = brand.LicenseeName,
                BrandId             = brand.Id,
                PlayerId            = player.Id,
                ReferenceCode       = submittedEvent.TransactionNumber,
                PaymentMethod       = submittedEvent.PaymentMethod,
                CurrencyCode        = submittedEvent.CurrencyCode,
                Amount              = submittedEvent.Amount,
                UniqueDepositAmount = 0,
                Status              = submittedEvent.Status,
                DateSubmitted       = submittedEvent.Submitted,
                SubmittedBy         = submittedEvent.SubmittedBy,
                DepositType         = submittedEvent.DepositType,
                BankAccountId       = submittedEvent.BankAccount
            };
            paymentRepository.Deposits.Add(record);
            paymentRepository.SaveChanges();
        }
コード例 #5
0
        public void Handle(DepositSubmitted submittedEvent)
        {
            var repository = _container.Resolve <IReportRepository>();
            var record     = repository.DepositRecords.SingleOrDefault(r => r.DepositId == submittedEvent.DepositId);

            if (record != null)
            {
                throw new RegoException(string.Format("deposit record '{0}' already exists", submittedEvent.DepositId));
            }

            var player = _container.Resolve <PlayerQueries>().GetPlayer(submittedEvent.PlayerId);
            var brand  = _container.Resolve <BrandQueries>().GetBrandOrNull(player.BrandId);

            record = new DepositRecord
            {
                Licensee          = brand != null ? brand.Licensee.Name : null,
                Brand             = brand != null ? brand.Name : null,
                Username          = player != null ? player.Username : null,
                IsInternalAccount = player != null ? player.InternalAccount : true,
                VipLevel          = player != null && player.VipLevel != null ? player.VipLevel.Code : null,
                TransactionId     = submittedEvent.TransactionNumber,
                DepositId         = submittedEvent.DepositId,
                PaymentMethod     = submittedEvent.PaymentMethod,
                Currency          = submittedEvent.CurrencyCode,
                Amount            = submittedEvent.Amount,
                Status            = submittedEvent.DepositType == DepositType.Offline ? OfflineDepositStatus.New.ToString() : OnlineDepositStatus.Processing.ToString(),
                Submitted         = submittedEvent.Submitted,
                SubmittedBy       = submittedEvent.SubmittedBy,
                DepositType       = submittedEvent.DepositType.ToString(),
                BankAccountName   = submittedEvent.BankAccountName,
                BankAccountId     = submittedEvent.BankAccountId,
                BankName          = submittedEvent.BankName,
                BankProvince      = submittedEvent.BankProvince,
                BankBranch        = submittedEvent.BankBranch,
                BankAccountNumber = submittedEvent.BankAccountNumber
            };
            repository.DepositRecords.Add(record);
            repository.SaveChanges();
        }
コード例 #6
0
 // Deposit category
 public void Consume(DepositSubmitted message)
 {
     _depositHandlers.Handle(message);
 }
コード例 #7
0
 public void Handle(DepositSubmitted @event)
 {
     AddActivityLog("Create " + @event.DepositType + " Deposit", @event, @event.PlayerId, @event.Remarks);
 }
コード例 #8
0
 public void Consume(DepositSubmitted message)
 {
     _paymentSubscriber.Handle(message);
 }
コード例 #9
0
 public void Handle(DepositSubmitted @event)
 {
     AddActivityLog(AdminActivityLogCategory.Deposit, @event);
 }