Skip to content

Commit a9823c6

Browse files
committed
delete all citizen requests upon joining a nation
1 parent ea9c3dd commit a9823c6

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

src/main/java/pro/cloudnode/smp/smpcore/CitizenRequest.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.util.Optional;
1818
import java.util.UUID;
1919
import java.util.logging.Level;
20+
import java.util.stream.Collectors;
2021

2122
public final class CitizenRequest {
2223
/**
@@ -264,4 +265,37 @@ public void delete() {
264265
return new ArrayList<>();
265266
}
266267
}
268+
269+
/**
270+
* Deletes multiple requests
271+
*
272+
* @param requests Requests
273+
*/
274+
public static void delete(final @NotNull List<@NotNull CitizenRequest> requests) {
275+
try (
276+
final @NotNull Connection conn = SMPCore.getInstance().db().getConnection();
277+
final @NotNull PreparedStatement stmt = conn.prepareStatement(
278+
"DELETE FROM `citizen_requests` WHERE `member` = ? AND `nation` = ?")
279+
) {
280+
conn.setAutoCommit(false);
281+
for (final @NotNull CitizenRequest request : requests) {
282+
stmt.setString(1, request.uuid.toString());
283+
stmt.setString(2, request.nationID);
284+
stmt.addBatch();
285+
}
286+
287+
stmt.executeBatch();
288+
conn.commit();
289+
}
290+
catch (final @NotNull SQLException e) {
291+
SMPCore.getInstance().getLogger().log(
292+
Level.SEVERE,
293+
"could not delete citizen requests: "
294+
+ requests.stream()
295+
.map(r -> "(" + r.nationID + ", " + r.uuid + ")")
296+
.collect(Collectors.joining(", ")),
297+
e
298+
);
299+
}
300+
}
267301
}

src/main/java/pro/cloudnode/smp/smpcore/Nation.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package pro.cloudnode.smp.smpcore;
22

3+
import net.kyori.adventure.audience.Audience;
34
import net.kyori.adventure.text.Component;
45
import net.kyori.adventure.text.event.HoverEvent;
56
import net.kyori.adventure.text.format.TextColor;
@@ -132,10 +133,15 @@ public Nation(final @NotNull String id, final @NotNull String name, final @NotNu
132133
}
133134

134135
public void add(final @NotNull Member member) {
136+
member.nation().ifPresent(nation -> nation.remove(member));
135137
member.nationID = id;
136138
member.save();
137139
getTeam().addPlayer(member.player());
140+
141+
Audience.audience(onlinePlayers()).sendMessage(SMPCore.messages().nationJoinJoined(member));
142+
138143
CitizenRequest.get(member, this).ifPresent(CitizenRequest::delete);
144+
CitizenRequest.delete(CitizenRequest.get(member, true));
139145
}
140146

141147
public void remove(final @NotNull Member member) {

0 commit comments

Comments
 (0)