示例#1
0
        private void UpdateMetrics(int gameIdentID)
        {
            using (DataAccess.CSSStatsDataContext statsDB = new Allegiance.CommunitySecuritySystem.DataAccess.CSSStatsDataContext())
            {
                var game = statsDB.Games.FirstOrDefault(p => p.GameIdentID == gameIdentID);

                if (game == null)
                {
                    throw new Exception("Couldn't get game for ID: " + gameIdentID);
                }

                if (IsGameEligibleForLogging(game) == false)
                {
                    return;
                }

                DataAccess.StatsMetric statsMetric = statsDB.StatsMetrics.FirstOrDefault();

                var averages = statsDB.StatsLeaderboards
                               .Where(p => p.DateModified > DateTime.Now.AddDays(-1 * Common.Constants.Leaderboard.MaxLastActiveDays))
                               .GroupBy(p => p)
                               .Select(p => new
                {
                    CommandRank = p.Average(x => x.CommandRank),
                    Rank        = p.Average(x => x.Rank)
                })
                               .FirstOrDefault();

                double averageCommandRank = 0;
                double averageRank        = 0;

                if (averages != null)
                {
                    averageCommandRank = averages.CommandRank;
                    averageRank        = averages.Rank;
                }

                if (statsMetric == null)
                {
                    statsMetric = new Allegiance.CommunitySecuritySystem.DataAccess.StatsMetric()
                    {
                        AverageCommandRank = averageCommandRank,
                        AveragePlayerRank  = averageRank,
                        DateModified       = DateTime.Now,
                        LastGameProcessed  = gameIdentID,
                        TotalGamesLogged   = 1
                    };

                    statsDB.StatsMetrics.InsertOnSubmit(statsMetric);
                }
                else
                {
                    statsMetric.AverageCommandRank = averageCommandRank;
                    statsMetric.AveragePlayerRank  = averageRank;
                    statsMetric.DateModified       = DateTime.Now;
                    statsMetric.LastGameProcessed  = gameIdentID;
                    statsMetric.TotalGamesLogged++;
                }

                statsDB.SubmitChanges();
            }
        }
        private void UpdateMetrics(int gameIdentID)
        {
            using (DataAccess.CSSStatsDataContext statsDB = new Allegiance.CommunitySecuritySystem.DataAccess.CSSStatsDataContext())
            {
                var game = statsDB.Games.FirstOrDefault(p => p.GameIdentID == gameIdentID);

                if (game == null)
                    throw new Exception("Couldn't get game for ID: " + gameIdentID);

                if (IsGameEligibleForLogging(game) == false)
                    return;

                DataAccess.StatsMetric statsMetric = statsDB.StatsMetrics.FirstOrDefault();

                var averages = statsDB.StatsLeaderboards
                    .Where(p => p.DateModified > DateTime.Now.AddDays(-1 * Common.Constants.Leaderboard.MaxLastActiveDays))
                    .GroupBy(p => p)
                    .Select(p => new
                    {
                        CommandRank = p.Average(x => x.CommandRank),
                        Rank = p.Average(x => x.Rank)
                    })
                    .FirstOrDefault();

                double averageCommandRank = 0;
                double averageRank = 0;

                if (averages != null)
                {
                    averageCommandRank = averages.CommandRank;
                    averageRank = averages.Rank;
                }

                if (statsMetric == null)
                {
                    statsMetric = new Allegiance.CommunitySecuritySystem.DataAccess.StatsMetric()
                    {
                        AverageCommandRank = averageCommandRank,
                        AveragePlayerRank = averageRank,
                        DateModified = DateTime.Now,
                        LastGameProcessed = gameIdentID,
                        TotalGamesLogged = 1
                    };

                    statsDB.StatsMetrics.InsertOnSubmit(statsMetric);
                }
                else
                {
                    statsMetric.AverageCommandRank = averageCommandRank;
                    statsMetric.AveragePlayerRank = averageRank;
                    statsMetric.DateModified = DateTime.Now;
                    statsMetric.LastGameProcessed = gameIdentID;
                    statsMetric.TotalGamesLogged++;
                }

                statsDB.SubmitChanges();

            }
        }