示例#1
0
        public static void AddNewPlayer(PlayerInfo player)
        {
            using var db = new EspnDB();
            if (!IsPlayerExist(player.Player.Id))
            {
                db.Players.Add(player.Player);
                db.SaveChanges();
            }
            else
            {
                if (!ConfigurationManager.AppSettings["updateExistPlayer"].ToBool())
                {
                    return;
                }
            }

            foreach (Game game in player.Games)
            {
                if (IsGameExist(player.Player.Id, game.GameDate))
                {
                    continue;
                }
                game.Pk = GetNextGamePk();
                db.Games.Add(game);
            }
            db.SaveChanges();
            Console.WriteLine($"Player {player.Player.Name} Uploaded To DB");
        }
示例#2
0
        private static long GetNextGamePk()
        {
            long pk;

            Mutex.WaitOne();
            try
            {
                if (_nextGamePk == -1)
                {
                    using var db = new EspnDB();
                    _nextGamePk  = db.Games.Max(g => g.Pk) + 1;
                    pk           = _nextGamePk;
                }
                else
                {
                    pk = ++_nextGamePk;
                }
            }
            catch (Exception)
            {
                _nextGamePk = 1;
                pk          = 1;
            }
            finally
            {
                Mutex.ReleaseMutex();
            }
            return(pk);
        }
示例#3
0
        public static void UpdatePlayersGames(PlayerInfo[] players)
        {
            using var db = new EspnDB();

            var dbPlayers  = db.Players.ToArray();
            var newPlayers = players.Where(p => !IsPlayerExist(p.Player, dbPlayers)).Select(p => p.Player).ToArray();

            if (newPlayers.Any())
            {
                db.Players.AddRange(newPlayers);
                db.SaveChanges();
                Console.WriteLine($"{newPlayers.Length} New Players Uploaded To DB");
            }

            var dbGames = db.Games.ToArray();

            Console.WriteLine($"Found {dbGames.Length} Games in DB, Search For New Games");
            var playerGames = players.SelectMany(p => p.Games).ToArray();
            var newGames    = playerGames.Where(g => !IsGameExist(g, dbGames)).ToArray();

            Console.WriteLine($"Found {newGames.Length} New Games, Start Upload To DB");
            foreach (Game newGame in newGames)
            {
                newGame.Pk = GetNextGamePk();
                db.Games.Add(newGame);
            }
            db.SaveChanges();
            Console.WriteLine($"{newGames.Length} New Games Uploaded To DB");
        }
示例#4
0
        public static bool IsPlayerExist(long playerId)
        {
            using var db = new EspnDB();

            var players = db.Players.ToList();

            return(players.Any(p => p.Id == playerId));
        }
示例#5
0
 public static bool IsGameExist(long playerId, DateTime gameDate)
 {
     using var db = new EspnDB();
     return(db.Games.Any(g => g.PlayerId == playerId && g.GameDate.Date.Equals(gameDate.Date)));
 }
示例#6
0
 public static string GetDataBaseConnectionString()
 {
     using var db = new EspnDB();
     return(db.Database.GetDbConnection().ConnectionString);
 }