private void GetAllPlayerData()
        {
            Command.CommandText = "SELECT pd.playeruid, pd.playername, SUM(cd.KillsZ) AS KillsZ, SUM(cd.HeadshotsZ) AS HeadshotsZ, SUM(cd.KillsH) AS KillsH, SUM(cd.KillsB) AS KillsB, SUM(cd.distanceFoot) AS distanceFoot, SUM(cd.duration) AS duration, MAX(cd.generation) AS deaths, MAX(cd.humanity) AS humanity FROM character_data cd LEFT JOIN player_data pd ON cd.PlayerUID = pd.playerUID WHERE cd.alive = 1 GROUP BY cd.PlayerUID ";
            Command.CommandType = CommandType.Text;
            Connection.Open();
            var reader = Command.ExecuteReader();
            if (reader == null) return;

            IList<PlayerSummary> playerSummaryList = new List<PlayerSummary>();
            while (reader.Read())
            {
                var playerSummary = new PlayerSummary
                {
                    UID = reader.GetString(0),
                    Name = reader.GetString(1),
                    KillsZ = reader.GetInt32(2),
                    HeadshotsZ = reader.GetInt32(3),
                    KillsH = reader.GetInt32(4),
                    KillsB = reader.GetInt32(5),
                    DistanceFoot = reader.GetInt32(6),
                    Duration = reader.GetInt32(7),
                    Deaths = reader.GetInt32(8),
                    Humanity = reader.GetInt32(9)
                };
                playerSummaryList.Add(playerSummary);
            }
            Connection.Close();

            // Update score values:
            foreach (var player in playerSummaryList)
            {
                player.Score = ScoreCalculator.CalculatePlayerScore(player.KillsZ, player.KillsB, player.HeadshotsZ, player.KillsH, player.DistanceFoot);
            }
            PlayerSummaryList = playerSummaryList.OrderByDescending(s => s.Score).ToList();
        }
        public void GetPlayerData(string playerUID)
        {
            //Command.CommandText = "SELECT pd.playerid, pd.playeruid, pd.playername, cd.KillsZ, cd.HeadshotsZ, cd.KillsH, cd.KillsB, cd.distanceFoot, pd.playermorality, pd.playersex, cd.Datestamp, cd.LastLogin, cd.Inventory, cd.Backpack, cd.Worldspace, cd.Medical, cd.Alive, cd.Generation, cd.LastAte, cd.LastDrank, cd.duration, cd.currentState, cd.Model, cd.Humanity, cd.last_updated FROM player_data pd LEFT JOIN character_data cd ON pd.playeruid = cd.playeruid WHERE pd.playeruid = @uid  ";
            Command.CommandText = "SELECT pd.playeruid, pd.playername, MAX(cd.lastdrank), MAX(cd.lastate), MAX(cd.lastlogin), SUM(cd.KillsZ) AS KillsZ, SUM(cd.HeadshotsZ) AS HeadshotsZ, SUM(cd.KillsH) AS KillsH, SUM(cd.KillsB) AS KillsB, SUM(cd.distanceFoot) AS distanceFoot, SUM(cd.duration) AS duration, MAX(cd.generation) AS deaths, MAX(cd.humanity) AS humanity FROM character_data cd LEFT JOIN player_data pd ON cd.PlayerUID = pd.playerUID WHERE pd.playeruid = @uid GROUP BY cd.Playeruid ORDER BY cd.last_updated DESC ";

            Command.CommandType = CommandType.Text;
            var param = Command.CreateParameter();
            param.DbType = DbType.String;
            param.Direction = ParameterDirection.Input;
            param.ParameterName = "uid";
            param.Value = playerUID;
            Command.Parameters.Clear();
            Command.Parameters.Add(param);
            Connection.Open();
            var reader = Command.ExecuteReader();
            if (reader == null) return;

            IList<PlayerSummary> playerDataList = new List<PlayerSummary>();
            while (reader.Read())
            {
                var playerData = new PlayerSummary
                {
                    //ID = reader.GetInt32(0),
                    //UID = reader.GetString(1),
                    //Name = reader.GetString(2),
                    //KillsZ = reader.GetInt32(3),
                    //HeadshotsZ = reader.GetInt32(4),
                    //KillsH = reader.GetInt32(5),
                    //KillsB = reader.GetInt32(6),
                    //DistanceFoot = reader.GetInt32(7),
                    //Morality = reader.GetInt32(8),
                    //Sex = reader.GetInt32(9),
                    //DateStamp = reader.GetDateTime(10),
                    //LastLogin = reader.GetDateTime(11),
                    //RawInventory = reader.GetString(12),
                    //RawBackpack = reader.GetString(13),
                    //Worldspace = reader.GetString(14),
                    //RawMedical = reader.GetString(15),
                    //Alive = reader.GetInt32(16),
                    //Generation = reader.GetInt32(17),
                    //LastAte = reader.GetDateTime(18),
                    //LastDrank = reader.GetDateTime(19),
                    //Duration = reader.GetInt32(20),
                    //RawCurrentState = reader.GetString(21),
                    //Model = reader.GetString(22),
                    //Humanity = reader.GetInt32(23),
                    //LastUpdate = reader.GetDateTime(24)
                    UID = reader.GetString(0),
                    Name = reader.GetString(1),
                    LastAte = reader.GetDateTime(2),
                    LastDrank = reader.GetDateTime(3),
                    LastLogin = reader.GetDateTime(4),
                    KillsZ = reader.GetInt32(5),
                    HeadshotsZ = reader.GetInt32(6),
                    KillsH = reader.GetInt32(7),
                    KillsB = reader.GetInt32(8),
                    DistanceFoot = reader.GetInt32(9),
                    Duration = reader.GetInt32(10),
                    Deaths = reader.GetInt32(11),
                    Humanity = reader.GetInt32(12)
                };
                playerDataList.Add(playerData);
            }
            Connection.Close();

            // Update Summary values:
            foreach (var player in playerDataList)
            {
                player.Score = ScoreCalculator.CalculatePlayerScore(player.KillsZ, player.KillsB, player.HeadshotsZ, player.KillsH, player.DistanceFoot); //(player.KillsZ*10) + (player.HeadshotsZ*50) + (player.KillsB*500) + System.Math.Round((player.DistanceFoot*.00001)) - (player.KillsH*25);
            }

            PlayerSummaryList = playerDataList;
            CurrentStats = PlayerSummaryList.First();// OrDefault(p => p.Alive == 1);
        }