private void HandleLowBalance(LowBalanceEventMessage lowBalance) { var watch = Stopwatch.StartNew(); var match = lowBalance.Offer.Percentage * lowBalance.Conversion.Amount; InsessionEligibility eligibility = new InsessionEligibility { CreditAmount = match, OfferId = lowBalance.Offer.OfferId.ToString(), GamingSystemId = lowBalance.Conversion.GamingSystemId, ProductId = lowBalance.Conversion.ProductId, UserId = lowBalance.Conversion.UserId }; ExperienceResult experience = new ExperienceResult { Experience = "BadMarginGoodBetSize", MatchOffer = $"{match}" }; PlayerExperienceBlockData blockData = new PlayerExperienceBlockData(experience, eligibility); /////////Block var transaction = _experienceBlockRepository.Get(INSESSION_TRANSACTION_NAME, $"{eligibility.GamingSystemId}-{eligibility.ProductId}-{eligibility.UserId}").Result; IBlock lastBlock = transaction.GetLastBlock(); IBlock currentBlock = new Block(lastBlock.Index, "Experience_Calculated_v1", blockData.ToJson(), watch.Elapsed, lastBlock.Hash); transaction.Add(currentBlock); if (transaction.IsValid()) { PubishInsessionEligibility(eligibility); PubishTransction(new TransactionMessage.Insession(transaction)); } /////////// }
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); } /////////// }
public PlayerExperienceBlockData(ExperienceResult experienceResult, InsessionEligibility eligibility) { ExperienceResult = experienceResult; InsessionEligibility = eligibility; }
private void PubishInsessionEligibility(InsessionEligibility eligibility) { Context.System.Scheduler.ScheduleTellOnce(TimeSpan.FromSeconds(3), Self, eligibility, Self); }
public CreditModel(InsessionEligibility insessionEligibility, bool isSuccess) { IsSuccess = isSuccess; Eligibility = insessionEligibility; }