internal List <Player> GetTopPlayers(Chat chat, Top type, int count) { if (type == Top.APG) { return(GetTopPlayersAPG(chat, count)); } if (type == Top.Penalty) { return(GetTopPlayersPenalty(chat, count)); } SqliteCommand cmd = DB.DBConnection.Connection.CreateCommand(); var typestring = ""; if (type == Top.Assist) { typestring += " WHERE asist = 'True'"; } if (type == Top.Goals) { typestring += " WHERE asist = 'False'"; } var stOptions = DB.ChatToGameOptions(chat); if (typestring == "") { stOptions = "WHERE 1 " + stOptions; } cmd.CommandText = "SELECT player_id , count(*) AS num " + "FROM goal_player " + "LEFT JOIN goal ON goal_player.goal_id = goal.id " + "LEFT JOIN game ON game.id = goal.game_id " + $"{typestring} {stOptions} " + $"GROUP BY player_id ORDER BY num DESC LIMIT {count};"; SqliteDataReader reader = null; try { reader = cmd.ExecuteReader(); } catch (SqliteException ex) { Console.WriteLine(ex.Message); } List <Player> players = new List <Player>(); while (reader.Read()) { var player = GetPlayerById(Convert.ToInt32(reader["player_id"].ToString())); if (type == Top.Assist) { player.AllStatAssist = Convert.ToInt32(reader["num"].ToString()); } if (type == Top.Goals) { player.AllStatGoal = Convert.ToInt32(reader["num"].ToString()); } if (type == Top.Points) { player.AllStatBomb = Convert.ToInt32(reader["num"].ToString()); } GetPlayerStatistic(chat, player); players.Add(player); } return(players); }
public Player GetPlayerStatistic(Chat chat, Player player) { if (player == null) { return(null); } var stOptions = DB.ChatToGameOptions(chat); SqliteCommand cmd = DB.DBConnection.Connection.CreateCommand(); cmd.CommandText = "SELECT game_action.* FROM game_action " + "LEFT JOIN game ON game.id = game_action.game_id " + $"WHERE player_id = {player.Id} {stOptions};"; SqliteDataReader reader = null; try { reader = cmd.ExecuteReader(); } catch (SqliteException ex) { Console.WriteLine(ex.Message); } //var playeractions = new List<GameAction>(); while (reader.Read()) { var game_id = reader["game_id"].ToString(); var action = (Action)Convert.ToInt32(reader["action"].ToString()); var gameaction = new GameAction(player, game_id, action); var par = reader["param"].ToString(); if (par != "") { gameaction.Param = Convert.ToInt32(par); } player.Actions.Add(gameaction); } reader.Close(); cmd.CommandText = "SELECT goal_player.asist, goal.game_id FROM goal_player " + "LEFT JOIN goal ON goal_player.goal_id = goal.id " + "LEFT JOIN game ON game.id = goal.game_id " + $"WHERE player_id = {player.Id} {stOptions};"; try { reader = cmd.ExecuteReader(); } catch (SqliteException ex) { Console.WriteLine(ex.Message); } //var playeractions = new List<GameAction>(); while (reader.Read()) { //var id = reader["id"].ToString(); var game_id = reader["game_id"].ToString(); bool ass = reader["asist"].ToString() == "True"; //var s = reader["asist"].ToString(); //var kek = reader.GetBoolean(1); var action = Action.Гол; if (ass) { action = Action.Пас; } ; var gameaction = new GameAction(player, game_id, action); player.Actions.Add(gameaction); } return(player); }