예제 #1
0
        private void HandleEligibility(InsessionEligibility eligibility)
        {
            var watch = Stopwatch.StartNew();

            _logger.LogInformation($"Eligibility Received for crediting: {eligibility.ToJson()}");
            _logger.LogInformation($"Player {eligibility.GamingSystemId}-{eligibility.ProductId}-{eligibility.UserId} has been credited with {eligibility.CreditAmount} for offer {eligibility.OfferId}");

            CreditModel blockData = new CreditModel(eligibility, true);

            /////////Block
            var    transaction  = _creditBlockRepository.Get(INSESSION_TRANSACTION_NAME, $"{eligibility.GamingSystemId}-{eligibility.ProductId}-{eligibility.UserId}").Result;
            IBlock lastBlock    = transaction.GetLastBlock();
            IBlock currentBlock = new Block(lastBlock.Index, "Player_Credited_v1", blockData.ToJson(), watch.Elapsed, lastBlock.Hash);

            transaction.Add(currentBlock);

            if (transaction.IsValid())
            {
                var conversion = new ConversionModel()
                {
                    Amount         = 500,
                    GamingSystemId = eligibility.GamingSystemId,
                    ProductId      = eligibility.ProductId,
                    UserId         = eligibility.UserId
                };

                PubishTransction(new TransactionMessage.Insession(transaction));
                Context.System.Scheduler.ScheduleTellOnce(TimeSpan.FromSeconds(60), Self, conversion, Self);
            }
            ///////////
        }