diff --git a/src/de/steamwar/bungeecore/BungeeCore.java b/src/de/steamwar/bungeecore/BungeeCore.java index a6a9ccad..6252b19e 100644 --- a/src/de/steamwar/bungeecore/BungeeCore.java +++ b/src/de/steamwar/bungeecore/BungeeCore.java @@ -119,6 +119,7 @@ public class BungeeCore extends Plugin { new RankCommand(); new IgnoreCommand(); new UnIgnoreCommand(); + new PollresultCommand(); if(!EVENT_MODE){ new WebregisterCommand(); diff --git a/src/de/steamwar/bungeecore/commands/PollresultCommand.java b/src/de/steamwar/bungeecore/commands/PollresultCommand.java new file mode 100644 index 00000000..f8412dc7 --- /dev/null +++ b/src/de/steamwar/bungeecore/commands/PollresultCommand.java @@ -0,0 +1,50 @@ +/* + This file is a part of the SteamWar software. + + Copyright (C) 2020 SteamWar.de-Serverteam + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +package de.steamwar.bungeecore.commands; + +import de.steamwar.bungeecore.Message; +import de.steamwar.bungeecore.listeners.PollSystem; +import de.steamwar.bungeecore.sql.PollAnswer; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.connection.ProxiedPlayer; + +import java.util.Map; + +public class PollresultCommand extends BasicCommand { + + public PollresultCommand() { + super("pollresult", "bungeecore.pollresults"); + } + + @Override + public void execute(CommandSender sender, String[] strings) { + if(!(sender instanceof ProxiedPlayer)) + return; + ProxiedPlayer player = (ProxiedPlayer) sender; + + Map voted = PollAnswer.getCurrentResults(); + Message.send("POLLRESULT_HEADER", player, PollAnswer.getAllAnswered(), PollSystem.getQuestion()); + int i = 1; + for (Map.Entry e: voted.entrySet()) { + Message.send("POLLRESULT_LIST", sender, i, e.getKey(), e.getValue()); + i++; + } + } +} diff --git a/src/de/steamwar/bungeecore/listeners/PollSystem.java b/src/de/steamwar/bungeecore/listeners/PollSystem.java index 4572e276..3dcca630 100644 --- a/src/de/steamwar/bungeecore/listeners/PollSystem.java +++ b/src/de/steamwar/bungeecore/listeners/PollSystem.java @@ -78,4 +78,8 @@ public class PollSystem extends BasicListener { public static int answers(){ return answers.size(); } + + public static String getAnswer(int i) { + return answers.get(i); + } } diff --git a/src/de/steamwar/bungeecore/sql/PollAnswer.java b/src/de/steamwar/bungeecore/sql/PollAnswer.java index 043d1a68..f8f6b749 100644 --- a/src/de/steamwar/bungeecore/sql/PollAnswer.java +++ b/src/de/steamwar/bungeecore/sql/PollAnswer.java @@ -24,6 +24,8 @@ import de.steamwar.bungeecore.listeners.PollSystem; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; public class PollAnswer { @@ -53,6 +55,32 @@ public class PollAnswer { } } + public static Map getCurrentResults() { + ResultSet set = SQL.select("SELECT Count(UserID) AS Times, Answer FROM PollAnswer WHERE Question = ? GROUP BY Answer ORDER BY `Times` ASC", PollSystem.getQuestion()); + try { + Map retMap = new HashMap<>(); + while (set.next()) { + retMap.put(PollSystem.getAnswer(set.getInt("Answer")), set.getInt("Times")); + } + return retMap; + }catch (SQLException e) { + BungeeCore.log("Unable to get PollAnswer", e); + throw new SecurityException(); + } + } + + public static Integer getAllAnswered() { + ResultSet set = SQL.select("SELECT Count(UserID) AS Times FROM PollAnswer"); + try { + if(!set.next()) + throw new SecurityException("Could not get PollAnswers"); + return set.getInt("Times"); + }catch (SQLException e) { + BungeeCore.log("Unable to get PollAnswer", e); + throw new SecurityException(); + } + } + public boolean hasAnswered(){ return answer != 0; } diff --git a/src/de/steamwar/messages/BungeeCore.properties b/src/de/steamwar/messages/BungeeCore.properties index 6855cb7c..5bcca7ff 100644 --- a/src/de/steamwar/messages/BungeeCore.properties +++ b/src/de/steamwar/messages/BungeeCore.properties @@ -53,3 +53,7 @@ HELP_BAU_TESTARENA=§8/§ebau testarena §8- §7Starte eine Testarena HELP_BAU_TESTARENA_HOVER=§eTestarena starten HELP_BAU_BAU=§8/§ehelp bau §8- §7Hilfe zu nützlichen Werkzeugen HELP_BAU_BAU_HOVER=§eNützliche Zusatzfunktionen + +#PollresultCommand +POLLRESULT_HEADER=§e§lEs haben {0} abgestimmt auf die Frage: §f{1} +POLLRESULT_LIST=§e{0}. §7{1} mit {2} stimmen \ No newline at end of file