private string GetGameActionDescription(BonusWalletBalanceChanged processedEvent) { switch (processedEvent.Type) { case Bonus.Core.Models.Enums.TransactionType.BetPlaced: return("Place Bet"); case Bonus.Core.Models.Enums.TransactionType.BetFree: return("Free Bet"); case Bonus.Core.Models.Enums.TransactionType.BetWon: return("Win Bet"); case Bonus.Core.Models.Enums.TransactionType.BetLost: return("Lose Bet"); case Bonus.Core.Models.Enums.TransactionType.BetCancelled: return("Cancel Tx"); case Bonus.Core.Models.Enums.TransactionType.BetWonAdjustment: return("Win Bet Adjustment, " + (processedEvent.MainBalanceAmount + processedEvent.BonusBalanceAmount).ToString("F") + " "); default: return(string.Empty); } }
private string GetDescription(BonusWalletBalanceChanged processedEvent) { var gameId = processedEvent.GameId; if (!gameId.HasValue) { return(string.Empty); } var game = ((IGameQueries)_gameQueriesFactory()).GetGameDto(gameId.Value); var gameName = game == null ? "Game" : game.Name; var gameActionDescription = GetGameActionDescription(processedEvent); return($"{gameName}, {gameActionDescription}"); }
public void Handle(BonusWalletBalanceChanged processedEvent) { if (!IsValidForStatsEvent(processedEvent)) { return; } var reportRepository = _reportRepositoryFactory(); var record = reportRepository.PlayerTransactionRecords.FirstOrDefault(r => r.TransactionId == processedEvent.TransactionId.ToString()); if (record != null) { throw new RegoException($"Player transaction record {processedEvent.TransactionId} already exists"); } record = new PlayerTransactionRecord { // wallet transaction id TransactionId = processedEvent.TransactionId.ToString(), // related wallet's transaction id RelatedTransactionId = processedEvent.RelatedTransactionId, PlayerId = processedEvent.Wallet.PlayerId, CreatedOn = processedEvent.CreatedOn, PerformedBy = GetNamePerformedBy(processedEvent.PerformedBy), RoundId = processedEvent.RoundId, GameId = processedEvent.GameId, Type = processedEvent.Type.ToString(), Balance = processedEvent.Wallet.Balance, MainBalance = processedEvent.Wallet.Balance, MainBalanceAmount = processedEvent.MainBalanceAmount, BonusBalanceAmount = processedEvent.BonusBalanceAmount, CurrencyCode = processedEvent.Wallet.CurrencyCode, Description = GetDescription(processedEvent), TransactionNumber = processedEvent.TransactionNumber }; reportRepository.PlayerTransactionRecords.Add(record); reportRepository.SaveChanges(); }
private static bool IsValidForStatsEvent(BonusWalletBalanceChanged @event) { // we don't handle Bet Lost events in the stats. AFTREGO-4445 return(@event.Type != TransactionType.BetLost); }