diff --git a/Havana-Server/src/main/java/org/alexdev/havana/dao/mysql/BanDao.java b/Havana-Server/src/main/java/org/alexdev/havana/dao/mysql/BanDao.java index 47c52f6..49dbf26 100644 --- a/Havana-Server/src/main/java/org/alexdev/havana/dao/mysql/BanDao.java +++ b/Havana-Server/src/main/java/org/alexdev/havana/dao/mysql/BanDao.java @@ -115,28 +115,36 @@ public class BanDao { } } - public static List getActiveBans() { + public static List getActiveBans(int page, String sortBy) { List banList = new ArrayList<>(); - Connection sqlConnection = null; - PreparedStatement preparedStatement = null; - ResultSet resultSet = null; + int rows = 25; + int nextOffset = page * rows; - try { - sqlConnection = Storage.getStorage().getConnection(); - preparedStatement = Storage.getStorage().prepare("SELECT * FROM users_bans WHERE is_active = 1 ORDER BY banned_at DESC", sqlConnection); - resultSet = preparedStatement.executeQuery(); + if (nextOffset >= 0) { + Connection sqlConnection = null; + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; - while (resultSet.next()) { - banList.add(new Ban(BanType.valueOf(resultSet.getString("ban_type")), resultSet.getString("banned_value"), resultSet.getString("message"), resultSet.getTime("banned_until").getTime() / 1000L, - resultSet.getTime("banned_at").getTime() / 1000L, resultSet.getInt("banned_by"))); + try { + sqlConnection = Storage.getStorage().getConnection(); + preparedStatement = Storage.getStorage().prepare("SELECT * FROM users_bans WHERE is_active = 1 ORDER BY " + sortBy + " DESC LIMIT ? OFFSET ?", sqlConnection); + preparedStatement.setInt(1, rows); + preparedStatement.setInt(2, nextOffset); + + resultSet = preparedStatement.executeQuery(); + + while (resultSet.next()) { + banList.add(new Ban(BanType.valueOf(resultSet.getString("ban_type")), resultSet.getString("banned_value"), resultSet.getString("message"), resultSet.getTime("banned_until").getTime() / 1000L, + resultSet.getTime("banned_at").getTime() / 1000L, resultSet.getInt("banned_by"))); + } + } catch (Exception e) { + Storage.logError(e); + } finally { + Storage.closeSilently(sqlConnection); + Storage.closeSilently(preparedStatement); + Storage.closeSilently(resultSet); } - } catch (Exception e) { - Storage.logError(e); - } finally { - Storage.closeSilently(sqlConnection); - Storage.closeSilently(preparedStatement); - Storage.closeSilently(resultSet); } return banList; diff --git a/Havana-Web/src/main/java/org/alexdev/http/controllers/housekeeping/HousekeepingBansController.java b/Havana-Web/src/main/java/org/alexdev/http/controllers/housekeeping/HousekeepingBansController.java index a72ab0d..7bd3e6c 100644 --- a/Havana-Web/src/main/java/org/alexdev/http/controllers/housekeeping/HousekeepingBansController.java +++ b/Havana-Web/src/main/java/org/alexdev/http/controllers/housekeeping/HousekeepingBansController.java @@ -15,6 +15,21 @@ public class HousekeepingBansController { return; } + int currentPage = 0; + + if (client.get().contains("page")) { + currentPage = Integer.parseInt(client.get().getString("page")); + } + + String sortBy = "banned_at"; + + if (client.get().contains("sort")) { + if (client.get().getString("sort").equals("banned_at") || + client.get().getString("sort").equals("banned_until")) { + sortBy = client.get().getString("sort"); + } + } + Template tpl = client.template("housekeeping/users_bans"); tpl.set("housekeepingManager", HousekeepingManager.getInstance()); @@ -25,7 +40,12 @@ public class HousekeepingBansController { return; } - tpl.set("bans", BanDao.getActiveBans()); + tpl.set("pageName", "Bans"); + tpl.set("bans", BanDao.getActiveBans(currentPage, sortBy)); + tpl.set("nextBans", BanDao.getActiveBans(currentPage + 1, sortBy)); + tpl.set("previousBans", BanDao.getActiveBans(currentPage - 1, sortBy)); + tpl.set("page", currentPage); + tpl.set("sortBy", sortBy); tpl.render(); // Delete alert after it's been rendered diff --git a/tools/www-tpl/default-en/housekeeping/users_bans.tpl b/tools/www-tpl/default-en/housekeeping/users_bans.tpl index 9e00c89..88326d3 100644 --- a/tools/www-tpl/default-en/housekeeping/users_bans.tpl +++ b/tools/www-tpl/default-en/housekeeping/users_bans.tpl @@ -5,6 +5,16 @@

View and manage bans

{% include "housekeeping/base/alert.tpl" %}

Manage all currently active bans on the hotel

+
+ {% if nextBans|length > 0 %} + {% set ourNextPage = page + 1 %} + + {% endif %} + {% if previousBans|length > 0 %} + {% set ourNextPage = page - 1 %} + + {% endif %} +
@@ -13,8 +23,8 @@ - - + +
Type Value MessageBanned UtilBanned AtBanned UtilBanned At Banned By