public void FireSpinResultEvent()
        {
            if (spinResults == null)
            {
                return;
            }

            Dictionary <string, object> data = new Dictionary <string, object>();
            string eventName = spinResults.CompetitiveGameId.HasValue() ? WynnAnalyticsDataConstants.AE_RECORD_BATTLE_SPIN_RESULT : WynnAnalyticsDataConstants.AE_SPIN_RESULT;

            data[WynnAnalyticsDataConstants.AT_GAME_ID]               = spinResults.GameId;
            data[WynnAnalyticsDataConstants.ME_BET_MULTIPLIER]        = spinResults.BetMultiplier;
            data[WynnAnalyticsDataConstants.ME_BET]                   = spinResults.Bet;
            data[WynnAnalyticsDataConstants.ME_WIN]                   = spinResults.Win;
            data[WynnAnalyticsDataConstants.ME_NO_OF_SPIN]            = spinResults.NoOfSpin;
            data[WynnAnalyticsDataConstants.ME_WIN_JACKPOT_AMOUNT]    = spinResults.JackpotAmount;
            data[WynnAnalyticsDataConstants.AT_WIN_JACKPOT_TYPE]      = spinResults.JackpotType;
            data[WynnAnalyticsDataConstants.AT_IS_F]                  = spinResults.IsF;
            data[WynnAnalyticsDataConstants.AT_IS_TURBO]              = spinResults.IsTurboMode;
            data[WynnAnalyticsDataConstants.AT_BATTLE_ID]             = spinResults.CompetitiveGameId;
            data[WynnAnalyticsDataConstants.AT_IS_AUTO_SPIN]          = spinResults.IsAutoSpin;
            data[WynnAnalyticsDataConstants.AT_TOURNAMENT_ID]         = spinResults.TournamentId;
            data[WynnAnalyticsDataConstants.AT_IS_HIGH_ROLLER]        = spinResults.IsHighRoller;
            data[WynnAnalyticsDataConstants.AT_FEATURE_GAME_TYPE]     = spinResults.FeatureGameType;
            data[WynnAnalyticsDataConstants.ME_BET_LEVEL]             = spinResults.BetLevel;
            data[WynnAnalyticsDataConstants.ME_ADDITIONAL_BET_INDEX]  = spinResults.AdditionalBetIndex;
            data[WynnAnalyticsDataConstants.AT_BINGO_DROPPED_NUMBERS] = spinResults.BingoDroppedNumbers;
            data[WynnAnalyticsDataConstants.AT_EXTRA_PARAM]           = spinResults.EParam;
            data[WynnAnalyticsDataConstants.ME_DAYS_IN_GAME]          = WynnEngine.GetStateController <PlayerStatsStateController>().AgeInDays;

            RecordCustomEvent(eventName, data);

            spinResults = null;
        }
        public void Init()
        {
            if (wrappers != null)
            {
                GameEngine.LogWarning("WynnAnalyticsManager is already initialized.  Aborting initialization request.");
                return;
            }


#if !UNITY_EDITOR
            //Rudder SDK only works on device, crashes and has errors when running in editor.
            //Add Rudder Client to wrapper collection
            // GameEngine.LogError("WynnAnalyticsManager: Initialized RudderWrapper");
            wrappers.Add(SetupRudder());
#endif
            Application.RequestAdvertisingIdentifierAsync(OnAdvertisingIdResult);
            wrappers = new List <IAnalyticsLibraryWrapper>();
            wrappers.Add(SetupFacebook());
            wrappers.Add(SetupAmplitude());
            spinResults = null;
        }
        public void RecordSpinResult(string gameId,
                                     long bet,
                                     long bet_multiplier,
                                     long win,
                                     long jackpotWin,
                                     string progressiveVOId,
                                     bool isF,
                                     bool isTurboMode,
                                     string competitiveGameId,
                                     bool isAutoSpin,
                                     string tournamentId,
                                     bool isHighRoller,
                                     string featureGameType,
                                     long betLevel,
                                     int additionalBetIndex,
                                     string bingoDroppedNumbers,
                                     string extraParams)
        {
            string wonProgressiveType = string.Empty;

            if (progressiveVOId.HasValue())
            {
                SlotsProgressivesDataVO progressiveVO = GameEngine.GetVO <SlotsProgressivesDataVO>(progressiveVOId);

                if (progressiveVO != null)
                {
                    wonProgressiveType = progressiveVO.JackpotType;
                }
            }

            String preProgressiveType = string.Empty;



            if (spinResults == null)
            {
                spinResults = new SpinResultAnalyticsTO
                {
                    GameId              = gameId,
                    Bet                 = bet,
                    BetMultiplier       = bet_multiplier,
                    Win                 = win,
                    NoOfSpin            = 1,
                    IsF                 = isF,
                    IsAutoSpin          = isAutoSpin,
                    IsTurboMode         = isTurboMode,
                    IsHighRoller        = isHighRoller,
                    JackpotAmount       = jackpotWin,
                    JackpotType         = wonProgressiveType,
                    TournamentId        = tournamentId,
                    CompetitiveGameId   = competitiveGameId,
                    FeatureGameType     = featureGameType,
                    BetLevel            = betLevel,
                    AdditionalBetIndex  = additionalBetIndex,
                    BingoDroppedNumbers = bingoDroppedNumbers,
                    EParam              = extraParams
                };
            }
            else
            {
                preProgressiveType              = spinResults.JackpotType;
                spinResults.Bet                += bet;
                spinResults.Win                += win;
                spinResults.NoOfSpin           += 1;
                spinResults.IsAutoSpin          = isAutoSpin;
                spinResults.IsTurboMode         = isTurboMode;
                spinResults.IsHighRoller        = isHighRoller;
                spinResults.TournamentId        = tournamentId;
                spinResults.IsF                 = isF;
                spinResults.BetLevel            = betLevel;
                spinResults.AdditionalBetIndex  = additionalBetIndex;
                spinResults.BingoDroppedNumbers = bingoDroppedNumbers;
                if (StringExtensions.HasValue(extraParams) && StringExtensions.HasValue(spinResults.EParam))
                {
                    spinResults.EParam += "&" + extraParams;
                }
                else
                {
                    spinResults.EParam = extraParams;
                }
            }

            if (ShouldFireSpinResult(gameId, bet_multiplier, competitiveGameId, preProgressiveType, featureGameType))
            {
                FireSpinResultEvent();
            }
        }