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(); } }