1
Fork 0
mirror of https://github.com/Quackster/Havana.git synced 2025-07-03 13:17:46 +00:00

Add pagination to housekeeping ban overview page

This commit is contained in:
GitHabbo 2022-11-13 17:29:20 +01:00
parent e4ccf404a1
commit 8fa86cfb2b
3 changed files with 54 additions and 18 deletions

View file

@ -115,16 +115,23 @@ public class BanDao {
} }
} }
public static List<Ban> getActiveBans() { public static List<Ban> getActiveBans(int page, String sortBy) {
List<Ban> banList = new ArrayList<>(); List<Ban> banList = new ArrayList<>();
int rows = 1;
int nextOffset = page * rows;
if (nextOffset >= 0) {
Connection sqlConnection = null; Connection sqlConnection = null;
PreparedStatement preparedStatement = null; PreparedStatement preparedStatement = null;
ResultSet resultSet = null; ResultSet resultSet = null;
try { try {
sqlConnection = Storage.getStorage().getConnection(); sqlConnection = Storage.getStorage().getConnection();
preparedStatement = Storage.getStorage().prepare("SELECT * FROM users_bans WHERE is_active = 1 ORDER BY banned_at DESC", sqlConnection); 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(); resultSet = preparedStatement.executeQuery();
while (resultSet.next()) { while (resultSet.next()) {
@ -138,6 +145,7 @@ public class BanDao {
Storage.closeSilently(preparedStatement); Storage.closeSilently(preparedStatement);
Storage.closeSilently(resultSet); Storage.closeSilently(resultSet);
} }
}
return banList; return banList;
} }

View file

@ -15,6 +15,21 @@ public class HousekeepingBansController {
return; 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"); Template tpl = client.template("housekeeping/users_bans");
tpl.set("housekeepingManager", HousekeepingManager.getInstance()); tpl.set("housekeepingManager", HousekeepingManager.getInstance());
@ -25,7 +40,12 @@ public class HousekeepingBansController {
return; 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(); tpl.render();
// Delete alert after it's been rendered // Delete alert after it's been rendered

View file

@ -5,6 +5,14 @@
<h1 class="mt-4">View and manage bans</h1> <h1 class="mt-4">View and manage bans</h1>
{% include "housekeeping/base/alert.tpl" %} {% include "housekeeping/base/alert.tpl" %}
<p>Manage all currently active bans on the hotel</p> <p>Manage all currently active bans on the hotel</p>
{% if nextBans|length > 0 %}
{% set ourNextPage = page + 1 %}
<a href="{{ site.sitePath }}/{{ site.housekeepingPath }}/bans?page={{ ourNextPage }}&sort={{ sortBy }}"><button type="button" class="btn btn-info">Next Page</button></a>
{% endif %}
{% if previousBans|length > 0 %}
{% set ourNextPage = page - 1 %}
<a href="{{ site.sitePath }}/{{ site.housekeepingPath }}/bans?page={{ ourNextPage }}&sort={{ sortBy }}"><button type="button" class="btn btn-warning">Go back</button></a>
{% endif %}
<div class="table-responsive"> <div class="table-responsive">
<form method="post"> <form method="post">
<table class="table table-striped"> <table class="table table-striped">