Example #1
0
        public void ContainsSite()
        {
            using (var context = new AsynchronusTestContext(this))
            {
                SiteStats    received  = null;
                ApiException exception = null;

                bool completed = false;
                EnqueueCallback(() =>
                {
                    Client.GetSiteStats(results =>
                    {
                        received  = results;
                        completed = true;
                    },
                                        error =>
                    {
                        exception = error;
                        completed = true;
                    });
                });
                EnqueueConditional(() => completed);
                EnqueueCallback(() => Assert.IsNull(exception));
                EnqueueCallback(() => Assert.IsNotNull(received));
                EnqueueCallback(() => Assert.IsNotNull(received.Site));
            }
        }
Example #2
0
        /// <summary>
        /// Gets Site Stats
        /// </summary>
        public SiteStats GetSiteStats()
        {
            var siteStats = new SiteStats();

            // Recipe Count
            siteStats.RecipeCount = this.Repository.GetSet <Recipe>().Count(x => x.IsActive && x.User.UserAdmin == null);

            // Brew Session Count
            siteStats.BrewSessionCount = this.Repository.GetSet <BrewSession>().Count(x => x.IsActive && x.BrewedByUser.UserAdmin == null);

            // User Count
            siteStats.UserCount = this.Repository.GetSet <User>().Count(x => x.IsActive && x.UserAdmin == null);

            // Comment Count
            siteStats.CommentCount = this.Repository.GetSet <RecipeComment>().Count(x => x.IsActive && x.User.UserAdmin == null);

            // Tasting Note Count
            siteStats.TastingNoteCount = this.Repository.GetSet <TastingNote>().Count(x => x.IsActive && x.IsPublic && x.User.UserAdmin == null);

            var loginDateStart = DateTime.Now.AddDays(-1);

            siteStats.LoginCountLast24Hours = this.Repository.GetSet <UserLogin>().Count(x => x.LoginDate >= loginDateStart && x.User.UserAdmin == null);

            // Custom Ingredient Count
            siteStats.CustomIngredientCount =
                this.Repository.GetSet <Fermentable>().Count(x => x.IsActive && x.CreatedByUserId != null && x.User.UserAdmin == null) +
                this.Repository.GetSet <Hop>().Count(x => x.IsActive && x.CreatedByUserId != null && x.User.UserAdmin == null) +
                this.Repository.GetSet <Yeast>().Count(x => x.IsActive && x.CreatedByUserId != null && x.User.UserAdmin == null) +
                this.Repository.GetSet <Adjunct>().Count(x => x.IsActive && x.CreatedByUserId != null && x.User.UserAdmin == null);

            // RecentCustom Ingredients
            var customIngredients = new List <IIngredient>();

            customIngredients.AddRange(this.Repository.GetSet <Fermentable>().Where(x => x.IsActive && x.CreatedByUserId != null && x.User.UserAdmin == null).OrderByDescending(x => x.DateCreated).Take(5).ToList());
            customIngredients.AddRange(this.Repository.GetSet <Hop>().Where(x => x.IsActive && x.CreatedByUserId != null && x.User.UserAdmin == null).OrderByDescending(x => x.DateCreated).Take(5).ToList());
            customIngredients.AddRange(this.Repository.GetSet <Yeast>().Where(x => x.IsActive && x.CreatedByUserId != null && x.User.UserAdmin == null).OrderByDescending(x => x.DateCreated).Take(5).ToList());
            customIngredients.AddRange(this.Repository.GetSet <Adjunct>().Where(x => x.IsActive && x.CreatedByUserId != null && x.User.UserAdmin == null).OrderByDescending(x => x.DateCreated).Take(5).ToList());

            siteStats.RecentCustomIngredients = customIngredients;

            // Last 25 Users
            siteStats.Last25Users = Mapper.Map(this.Repository.GetSet <User>().Where(x => x.IsActive && x.UserAdmin == null).OrderByDescending(x => x.DateCreated).Take(25).ToList(), new List <UserSummary>());

            // Last 25 Recipes
            siteStats.Last25Recipes = this.Repository.GetSet <RecipeSummary>().Where(x => x.IsActive && !x.UserIsAdmin).OrderByDescending(x => x.DateCreated).Take(25).ToList();

            // Last 25 recipe comments
            siteStats.Last25RecipeComments = this.Repository.GetSet <RecipeComment>().Where(x => x.IsActive).OrderByDescending(x => x.DateCreated).Take(25).ToList();

            // Last 25 recipe brew comments
            siteStats.Last25BrewSessionComments = this.Repository.GetSet <BrewSessionComment>().Where(x => x.IsActive).OrderByDescending(x => x.DateCreated).Take(25).ToList();

            return(siteStats);
        }
Example #3
0
 public void Start()
 {
     this.Stats        = new SessionStats(true);
     this.SiteStats    = CopyHelper.CreateCopy <SiteStats>(Site.Stats);
     SiteStats.Balance = Balance;
     Running           = true;
     Stop = false;
     if (DiceStrategy is Strategies.ProgrammerMode)
     {
         (DiceStrategy as Strategies.ProgrammerMode).LoadScript();
     }
     new Thread(new ThreadStart(SimulationThread)).Start();
 }
Example #4
0
        public SiteStats GetSiteStats()
        {
            try
            {
                var       stats = new SiteStats();
                Stopwatch sw    = new Stopwatch();
                sw.Start();
                using (var connection = OpenConnection())
                {
                    stats.TotalUsers      = connection.Query <long>(MySQL.StatisticsSql.TotalUsers).SingleOrDefault();
                    stats.TotalCharacters = connection.Query <long>(MySQL.StatisticsSql.TotalCharacters).SingleOrDefault();
                    stats.TotalGuilds     = connection.Query <long>(MySQL.StatisticsSql.TotalGuilds).SingleOrDefault();
                    stats.TotalSessions   = connection.Query <long>(MySQL.StatisticsSql.TotalSessions).SingleOrDefault();
                    stats.TotalEncounters = connection.Query <long>(MySQL.StatisticsSql.TotalEncounters).SingleOrDefault();
                    var encNotRemoved = connection.Query <long>(MySQL.StatisticsSql.TotalEncountersNotRemoved).SingleOrDefault();
                    var dmgRows       = (IDictionary <string, object>)connection.Query(MySQL.StatisticsSql.TotalDamageRows).Single();
                    stats.TotalDamageRecords = Convert.ToInt64(dmgRows.First().Value);
                    var healRows = (IDictionary <string, object>)connection.Query(MySQL.StatisticsSql.TotalHealingRows).Single();
                    stats.TotalHealingRecords = Convert.ToInt64(healRows.First().Value);
                    var shieldRows = (IDictionary <string, object>)connection.Query(MySQL.StatisticsSql.TotalShieldingRows).Single();
                    stats.TotalShieldingRecords   = Convert.ToInt64(shieldRows.First().Value);
                    stats.AverageDamageRecords    = stats.TotalEncounters > 0 ? stats.TotalDamageRecords / encNotRemoved : 0;
                    stats.AverageHealingRecords   = stats.TotalEncounters > 0 ? stats.TotalHealingRecords / encNotRemoved : 0;
                    stats.AverageShieldingRecords = stats.TotalEncounters > 0 ? stats.TotalShieldingRecords / encNotRemoved : 0;
                    var allDurations = connection.Query <TimeSpan>(MySQL.StatisticsSql.TotalDurationNotSum).ToList();
                    stats.TotalDuration        = new TimeSpan(allDurations.Sum(d => d.Ticks));
                    stats.TotalLogSize         = Convert.ToInt64(connection.Query <decimal>(MySQL.StatisticsSql.TotalLogSize).SingleOrDefault());
                    stats.TotalPlayedTimeTicks = Convert.ToInt64(connection.Query <decimal>(MySQL.StatisticsSql.TotalPlayedTimeTicks).SingleOrDefault());
                    stats.TotalLogLines        = Convert.ToInt64(connection.Query <decimal>(MySQL.StatisticsSql.TotalLogLines).SingleOrDefault());
                    stats.TotalPlayers         = connection.Query <long>(MySQL.StatisticsSql.TotalPlayers).SingleOrDefault();
                }

                sw.Stop();
                _logger.Debug(string.Format("Returned stats in {0}", sw.Elapsed));

                return(stats);
            }
            catch (Exception ex)
            {
                _logger.Debug(string.Format("Error while getting site statistics: {0}", ex.Message));
                return(null);
            }
        }
Example #5
0
    public static void GetSiteStatistics(string subdomain, string apiKey, Action <SiteStats> callback)
    {
        SiteStats         retVal      = null;
        HttpWebRequest    request     = WebRequest.Create(string.Format("https://{0}.chargify.com/stats.json", subdomain)) as HttpWebRequest;
        NetworkCredential credentials = new NetworkCredential(apiKey, "X");

        request.Credentials = credentials;
        request.Method      = "GET";
        request.Accept      = "application/json";
        request.BeginGetResponse(result =>
        {
            using (var response = request.EndGetResponse(result))
            {
                using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                {
                    string stats = reader.ReadToEnd();
                    retVal       = Json.Deserialize <SiteStats>(stats);
                    callback(retVal);
                }
            }
        }, request);
        //return retVal; // you can't return here
    }
 public bool CheckResetSeed(Bet NewBet, bool win, SessionStats Stats, SiteStats siteStats)
 {
     if (EnableResetSeedBets && Stats.Bets % ResetSeedBets == 0)
     {
         return(true);
     }
     if (EnableResetSeedWins && Stats.Wins % ResetSeedWins == 0)
     {
         return(true);
     }
     if (EnableResetSeedLosses && Stats.Losses % ResetSeedLosses == 0)
     {
         return(true);
     }
     if (EnableResetSeedWinStreak && Stats.WinStreak % ResetSeedWinStreak == 0 && win)
     {
         return(true);
     }
     if (EnableResetSeedLossStreak && Stats.LossStreak % ResetSeedLossStreak == 0 && !win)
     {
         return(true);
     }
     return(false);
 }
Example #7
0
 public void UpdateSiteStats(SiteStats Stats)
 {
     Scope.SetVariable("SiteStats", Stats);
 }
Example #8
0
 public void UpdateSiteStats(SiteStats Stats)
 {
     CurrentRuntime.Globals["SiteStats"] = Stats;
 }
 public bool CheckBank(Bet NewBet, bool win, SessionStats Stats, out decimal Amount, SiteStats siteStats)
 {
     Amount = 0;
     if (EnableUpperLimit && UpperLimitCompare == "Balance" && UpperLimitAction == LimitAction.Bank)
     {
         if (siteStats.Balance >= UpperLimit)
         {
             Amount = UpperLimitActionAmount;
             return(true);
         }
     }
     if (EnableLowerLimit && UpperLimitCompare == "Balance" && LowerLimitAction == LimitAction.Bank)
     {
         if (siteStats.Balance <= LowerLimit)
         {
             Amount = LowerLimitActionAmount;
             return(true);
         }
     }
     if (EnableUpperLimit && UpperLimitCompare == "Profit" && UpperLimitAction == LimitAction.Bank)
     {
         if (Stats.Profit >= UpperLimit)
         {
             Amount = UpperLimitActionAmount;
             return(true);
         }
     }
     if (EnableLowerLimit && UpperLimitCompare == "Profit" && LowerLimitAction == LimitAction.Bank)
     {
         if (Stats.Profit <= LowerLimit)
         {
             Amount = LowerLimitActionAmount;
             return(true);
         }
     }
     return(false);
 }
        public bool CheckHighLow(DiceBet NewBet, bool win, SessionStats Stats, out bool NewHigh, SiteStats siteStats)
        {
            NewHigh = false;

            if (EnableSwitchWins && Stats.Wins % SwitchWins == 0)
            {
                NewHigh = !NewBet.High;
                return(true);
            }
            if (EnableSwitchWinStreak && Stats.WinStreak % SwitchWinStreak == 0 && win)
            {
                NewHigh = !NewBet.High;
                return(true);
            }
            if (EnableSwitchLosses && Stats.Losses % SwitchLosses == 0)
            {
                NewHigh = !NewBet.High;
                return(true);
            }
            if (EnableSwitchLossStreak && Stats.LossStreak % SwitchLossStreak == 0 && !win)
            {
                NewHigh = !NewBet.High;
                return(true);
            }
            if (EnableSwitchBets && Stats.Bets % SwitchBets == 0)
            {
                NewHigh = !NewBet.High;
                return(true);
            }
            return(false);
        }
 public bool CheckStopPOstStats(Bet NewBet, bool win, SessionStats Stats, out string reason, SiteStats siteStats)
 {
     if (EnableUpperLimit && UpperLimitCompare == "Balance" && UpperLimitAction == LimitAction.Stop)
     {
         if (siteStats.Balance >= UpperLimit)
         {
             reason = "Upper balance limit reached.";
             return(true);
         }
     }
     if (EnableLowerLimit && UpperLimitCompare == "Balance" && LowerLimitAction == LimitAction.Stop)
     {
         if (siteStats.Balance <= LowerLimit)
         {
             reason = "lower balance limit reached.";
             return(true);
         }
     }
     if (EnableUpperLimit && UpperLimitCompare == "Profit" && UpperLimitAction == LimitAction.Stop)
     {
         if (Stats.Profit >= UpperLimit)
         {
             reason = "Upper profit limit reached. Stopping.";
             return(true);
         }
     }
     if (EnableLowerLimit && UpperLimitCompare == "Profit" && LowerLimitAction == LimitAction.Stop)
     {
         if (Stats.Profit <= LowerLimit)
         {
             reason = "Lower profit limit reached. Stopping.";
             return(true);
         }
     }
     if (EnableStopAfterBets && Stats.Bets >= StopAfterBets)
     {
         reason = "Stop after " + StopAfterBets + " bets condition triggered with " + Stats.Bets + " bets, Stopping.";
         return(true);
     }
     if (EnableStopAfterTime && (Stats.RunningTime + (long)(DateTime.Now - Stats.StartTime).TotalMilliseconds) > StopAfterTime)
     {
         reason = "Stop after " + StopAfterTime.ToString("HH:mm:ss") + " run time condition triggered with " + (new TimeSpan(0, 0, 0, 0, (int)(Stats.RunningTime + (long)(DateTime.Now - Stats.StartTime).TotalMilliseconds))).ToString("HH:mm:ss") + " running time, Stopping.";
         return(true);
     }
     if (win)
     {
         if (EnableStopAfterWinStreak && Stats.WinStreak >= StopAfterWinStreak)
         {
             reason = string.Format("Stop after {0} {1} conditino triggered with {2} {1}, Stopping", StopAfterWinStreak, "Wines in a row", Stats.WinStreak);
             return(true);
         }
         if (EnableStopAfterBtcWin && Stats.Profit >= StopAfterBtcWin)
         {
             reason = string.Format("Stop after {0} {1} conditino triggered with {2} {1}, Stopping", StopAfterBtcWin, "Currency Win", Stats.Profit);
             return(true);
         }
         if (EnableStopAfterBtcWinStreak && Stats.CurrentProfit >= StopAfterBtcWinStreak)
         {
             reason = string.Format("Stop after {0} {1} conditino triggered with {2} {1}, Stopping", StopAfterBtcWinStreak, "Currency Streak Win", Stats.CurrentProfit);
             return(true);
         }
         if (EnableStopAfterWins && Stats.Wins % StopAfterWins == 0)
         {
             reason = string.Format("Stop after {0} {1} conditino triggered with {2} {1}, Stopping", StopAfterWins, "Wins", Stats.Wins);
             return(true);
         }
         if (EnableStopWinFromMinProfit && Stats.Profit - Stats.MinProfit >= StopWinFromMinProfit)
         {
             reason = string.Format("Stop after {0} {1} conditino triggered with {2} {1}, Stopping", StopWinFromMinProfit, "profit since min profit", Stats.Profit - Stats.MinProfit);
             return(true);
         }
     }
     else
     {
         if (EnableStopAfterLoseStreak && Stats.LossStreak >= StopAfterLoseStreak)
         {
             reason = string.Format("Stop after {0} {1} conditino triggered with {2} {1}, Stopping", StopAfterLoseStreak, "Losses in a row", Stats.LossStreak);
             return(true);
         }
         if (EnableStopAfterBtcLoss && -Stats.Profit >= StopAfterBtcLoss)
         {
             reason = string.Format("Stop after {0} {1} conditino triggered with {2} {1}, Stopping", StopAfterBtcLoss, "Currency Loss", Stats.Profit);
             return(true);
         }
         if (EnableStopAfterBtcLoseStreak && Stats.CurrentProfit <= -StopAfterBtcLoseStreak)
         {
             reason = string.Format("Stop after {0} {1} conditino triggered with {2} {1}, Stopping", StopAfterBtcLoseStreak, "Currency Streak Loss", Stats.CurrentProfit);
             return(true);
         }
         if (EnableStopAfterLosses && Stats.Losses % StopAfterLosses == 0)
         {
             reason = string.Format("Stop after {0} {1} conditino triggered with {2} {1}, Stopping", StopAfterLosses, "Losses", Stats.Losses);
             return(true);
         }
         if (EnableStopLossFromMaxProfit && Stats.MaxProfit - Stats.Profit >= StopLossFromMaxProfit)
         {
             reason = string.Format("Stop after {0} {1} conditino triggered with {2} {1}, Stopping", StopLossFromMaxProfit, "loss since max profit", Stats.MaxProfit - Stats.Profit);
             return(true);
         }
     }
     reason = "";
     return(false);
 }
 public bool CheckStopPreStats(Bet NewBet, bool win, SessionStats Stats, out string reason, SiteStats siteStats)
 {
     reason = "";
     return(false);
 }
        public bool CheckResetPostStats(Bet NewBet, bool win, SessionStats Statsn, SiteStats siteStats)
        {
            bool reset = false;

            if (EnableResetAfterBets && Statsn.Bets % ResetAfterBets == 0)
            {
                reset = true;
            }
            if (EnableUpperLimit && UpperLimitCompare == "Balance" && UpperLimitAction == LimitAction.Reset)
            {
                reset = reset || (siteStats.Balance >= UpperLimit);
            }
            if (EnableLowerLimit && UpperLimitCompare == "Balance" && LowerLimitAction == LimitAction.Reset)
            {
                reset = reset || (siteStats.Balance <= LowerLimit);
            }
            if (EnableUpperLimit && UpperLimitCompare == "Profit" && UpperLimitAction == LimitAction.Reset)
            {
                if (Statsn.PorfitSinceLimitAction >= UpperLimit)
                {
                    reset = true;
                    Statsn.PorfitSinceLimitAction = 0;
                }
            }
            if (EnableLowerLimit && UpperLimitCompare == "Profit" && LowerLimitAction == LimitAction.Reset)
            {
                if (Statsn.PorfitSinceLimitAction >= LowerLimit)
                {
                    reset = true;
                    Statsn.PorfitSinceLimitAction = 0;
                }
            }
            if (win)
            {
                if (EnableResetAfterWinStreak && Statsn.WinStreak % ResetAfterWinStreak == 0)
                {
                    reset = true;
                }
                if (EnableResetAfterBtcStreakWin && Statsn.StreakProfitSinceLastReset >= ResetAfterBtcStreakWin)
                {
                    reset = true;
                    Statsn.StreakProfitSinceLastReset = 0;
                }
                if (EnableResetAfterBtcWin && Statsn.ProfitSinceLastReset >= ResetAfterBtcWin)
                {
                    reset = true;
                    Statsn.ProfitSinceLastReset = 0;
                }
                if (EnableResetAfterWins && Statsn.Wins % ResetAfterWins == 0)
                {
                    reset = true;
                }
                if (EnableResetWinFromMinProfit && Statsn.Profit - Statsn.MinProfitSinceReset >= ResetWinFromMinProfit)
                {
                    Statsn.MinProfitSinceReset = Statsn.Profit;
                    reset = true;
                }
            }
            else
            {
                if (EnableResetAfterLoseStreak && Statsn.LossStreak % ResetAfterLoseStreak == 0)
                {
                    reset = true;
                }
                if (EnableResetAfterBtcStreakLoss && Statsn.StreakLossSinceLastReset <= -ResetAfterBtcStreakLoss)
                {
                    reset = true;
                    Statsn.StreakLossSinceLastReset = 0;
                }
                if (EnableResetAfterBtcLoss && Statsn.ProfitSinceLastReset <= -ResetAfterBtcLoss)
                {
                    reset = true;
                    Statsn.ProfitSinceLastReset = 0;
                }
                if (EnableResetAfterLosses && Statsn.Losses % ResetAfterLosses == 0)
                {
                    reset = true;
                }
                if (EnableResetLossFromMaxProfit && Statsn.MaxProfitSinceReset - Statsn.Profit >= ResetLossFromMaxProfit)
                {
                    Statsn.MaxProfitSinceReset = Statsn.Profit;
                    reset = true;
                }
            }
            return(reset);
        }
 public bool CheckResetPreStats(Bet NewBet, bool win, SessionStats Stats, SiteStats siteStats)
 {
     return(false);
 }
Example #15
0
 public void UpdateSiteStats(SiteStats Stats)
 {
     Runtime.SetValue("SiteStats", Stats);
 }
Example #16
0
 public void UpdateSiteStats(SiteStats Stats)
 {
     globals.SiteStats = Stats;
 }