예제 #1
0
        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);
            }
        }