static void GlobalStats() { Console.WriteLine("Calculating Global Stats"); try { //now do daily counts using (var db = new WWContext()) { Console.WriteLine("Updating Daily Counts"); //get daily counts var counts = db.getDailyCounts(); db.DailyCounts.RemoveRange(db.DailyCounts); foreach (var count in counts) { db.DailyCounts.Add(new DailyCount { Day = count.Day.Value, Games = count.Games.Value, Groups = count.Groups.Value, Users = count.players.Value }); } db.SaveChanges(); Console.WriteLine("Done"); } using (var DB = new WWContext()) { DB.Database.CommandTimeout = 600; Console.WriteLine("Total games.."); var gamesPlayed = DB.Games.Count(); Console.WriteLine("Night 1 Death"); var night1death = DB.GlobalNight1Death().First(); Console.WriteLine("Day 1 Lynch"); var day1lynch = DB.GlobalDay1Lynch().First(); Console.WriteLine("Day 1 Death"); var day1death = DB.GlobalDay1Death().First(); Console.WriteLine("Survivor"); var survivor = DB.GlobalSurvivor().First(); Console.WriteLine("Creating stat object"); var stat = DB.GlobalStats.FirstOrDefault(); if (stat == null) { stat = DB.GlobalStats.Create(); DB.GlobalStats.Add(stat); } stat.PlayersKilled = DB.GamePlayers.Count(x => !x.Survived); stat.PlayersSurvived = DB.GamePlayers.Count(x => x.Survived); stat.TotalGroups = DB.Groups.Count(); stat.TotalPlayers = DB.Players.Count(); stat.BestSurvivor = survivor.Name; stat.BestSurvivorPercent = (int)survivor.pct; stat.BestSurvivorId = survivor.TelegramId; stat.GamesPlayed = gamesPlayed; stat.LastRun = DateTime.Now; stat.MostKilledFirstDay = day1death.Name; stat.MostKilledFirstDayPercent = day1death.pct; stat.MostKilledFirstDayId = day1death.TelegramId; stat.MostKilledFirstNight = night1death.Name; stat.MostKilledFirstPercent = night1death.pct; stat.MostKilledFirstNightId = night1death.TelegramId; stat.MostLynchedFirstDay = day1lynch.Name; stat.MostLynchedFirstPercent = day1lynch.pct; stat.MostLynchedFirstDayId = day1lynch.TelegramId; Console.WriteLine("Saving to database"); DB.SaveChanges(); Console.WriteLine("Done"); } //now do daily counts using (var db = new WWContext()) { Console.WriteLine("Updating Daily Counts"); //get daily counts var counts = db.getDailyCounts(); db.DailyCounts.RemoveRange(db.DailyCounts); foreach (var count in counts) { db.DailyCounts.Add(new DailyCount { Day = count.Day.Value, Games = count.Games.Value, Groups = count.Groups.Value, Users = count.players.Value }); } db.SaveChanges(); Console.WriteLine("Done"); } } catch (Exception e) { while (e.InnerException != null) { e = e.InnerException; } Console.WriteLine(e.Message); } }