diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/checks/GameLobbyExistsCheck.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/checks/GameLobbyExistsCheck.java new file mode 100644 index 0000000..fba5240 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/server/app/checks/GameLobbyExistsCheck.java @@ -0,0 +1,75 @@ +package ch.unibas.dmi.dbis.cs108.casono.server.app.checks; + +import ch.unibas.dmi.dbis.cs108.casono.server.app.commands.game.bet.PlayerBetRequest; +import ch.unibas.dmi.dbis.cs108.casono.server.app.commands.game.call.PlayerCallRequest; +import ch.unibas.dmi.dbis.cs108.casono.server.app.commands.game.fold.PlayerFoldRequest; +import ch.unibas.dmi.dbis.cs108.casono.server.app.commands.game.raise.PlayerRaiseRequest; +import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.Lobby; +import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyId; +import ch.unibas.dmi.dbis.cs108.casono.server.domain.lobby.LobbyManager; +import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.User; +import ch.unibas.dmi.dbis.cs108.casono.server.domain.user.UserRegistry; +import ch.unibas.dmi.dbis.cs108.casono.server.network.command.execution.checks.HandlerCheck; +import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.request.Request; +import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.ErrorResponse; +import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.response.Response; +import java.util.Optional; + +/** + * Checks whether a target lobby exists for game action commands. + * + *
Supported commands are BET, CALL, FOLD and RAISE. If a request specifies a GAME_ID, the check
+ * validates that this lobby exists. Otherwise, it validates that the logged-in user is in a lobby.
+ */
+public class GameLobbyExistsCheck implements HandlerCheck {
+ private final UserRegistry userRegistry;
+ private final LobbyManager lobbyManager;
+
+ public GameLobbyExistsCheck(UserRegistry userRegistry, LobbyManager lobbyManager) {
+ this.userRegistry = userRegistry;
+ this.lobbyManager = lobbyManager;
+ }
+
+ @Override
+ public Optional