diff --git a/src/de/steamwar/bungeecore/BungeeCore.java b/src/de/steamwar/bungeecore/BungeeCore.java index 682741f0..80881f36 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..1d39e9ea --- /dev/null +++ b/src/de/steamwar/bungeecore/commands/PollresultCommand.java @@ -0,0 +1,54 @@ +/* + 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; + + if(PollSystem.noCurrentPoll()) { + Message.send("POLLRESULT_NOPOLL", sender); + return; + } + + ProxiedPlayer player = (ProxiedPlayer) sender; + + Map voted = PollAnswer.getCurrentResults(); + Message.send("POLLRESULT_HEADER", player, PollAnswer.getAllAnswered(), PollSystem.getQuestion()); + for (Map.Entry e: voted.entrySet()) { + Message.send("POLLRESULT_LIST", sender, e.getKey(), e.getValue()); + } + } +} 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..62fcee04 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 { @@ -48,8 +50,31 @@ public class PollAnswer { return new PollAnswer(userID, PollSystem.getQuestion()); return new PollAnswer(rs); } catch (SQLException e) { - BungeeCore.log("Unable to get PollAnswer", e); - throw new SecurityException(); + throw new SecurityException("Unable to get PollAnswer", e); + } + } + + 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) { + throw new SecurityException("Unable to get PollAnswer", e); + } + } + + public static Integer getAllAnswered() { + ResultSet set = SQL.select("SELECT Count(UserID) AS Times FROM PollAnswer WHERE Question = ?", PollSystem.getQuestion()); + try { + if(!set.next()) + throw new SecurityException("Could not get PollAnswers"); + return set.getInt("Times"); + }catch (SQLException e) { + throw new SecurityException("Unable to get PollAnswer", e); } } diff --git a/src/de/steamwar/messages/BungeeCore.properties b/src/de/steamwar/messages/BungeeCore.properties index 6855cb7c..e4cc7a20 100644 --- a/src/de/steamwar/messages/BungeeCore.properties +++ b/src/de/steamwar/messages/BungeeCore.properties @@ -53,3 +53,8 @@ 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_NOPOLL=§cDerzeit läuft keine Umfrage. +POLLRESULT_HEADER=§eEs haben {0} abgestimmt auf die Frage: §7{1} +POLLRESULT_LIST=§e{0}§8: §7{1} \ No newline at end of file