diff --git a/src/main/java/org/ntlab/tampoposerver/models/ChatRooms.java b/src/main/java/org/ntlab/tampoposerver/models/ChatRooms.java index 542c07d..a5849b5 100644 --- a/src/main/java/org/ntlab/tampoposerver/models/ChatRooms.java +++ b/src/main/java/org/ntlab/tampoposerver/models/ChatRooms.java @@ -20,6 +20,9 @@ this.chatRoomId = chatRoomId; this.user0Id = user0Id; this.user1Id = user1Id; + + this.users.add(user0Id); + this.users.add(user1Id); } public String getUser0Id(){ @@ -81,4 +84,12 @@ public String getSenderId() { return senderId;} public String getContent() { return content;} } + + public boolean removeUser(String userId) { + return users.remove(userId); + } + + public boolean isEmpty() { + return users.isEmpty(); + } } diff --git a/src/main/java/org/ntlab/tampoposerver/repositories/ChatRoomsRepository.java b/src/main/java/org/ntlab/tampoposerver/repositories/ChatRoomsRepository.java index 3ff56f8..bc06f8a 100644 --- a/src/main/java/org/ntlab/tampoposerver/repositories/ChatRoomsRepository.java +++ b/src/main/java/org/ntlab/tampoposerver/repositories/ChatRoomsRepository.java @@ -103,4 +103,5 @@ public ChatRooms getChatRoom(int chatRoomId) { return chatRooms.get(chatRoomId); } + } \ No newline at end of file diff --git a/src/main/java/org/ntlab/tampoposerver/resources/ChatRoomsResource.java b/src/main/java/org/ntlab/tampoposerver/resources/ChatRoomsResource.java index f8d92e9..0c01e17 100644 --- a/src/main/java/org/ntlab/tampoposerver/resources/ChatRoomsResource.java +++ b/src/main/java/org/ntlab/tampoposerver/resources/ChatRoomsResource.java @@ -157,15 +157,17 @@ //チャットルームの削除 @DELETE - @Path("/{chatroom-id}") - public Response deleteChatRoom(@PathParam("chatroom-id") int chatRoomId, @FormParam("user-id") String userId, @QueryParam("token") String token) { + @Path("/{chatroom-id}/{user-id}") + @Produces(MediaType.APPLICATION_JSON) + public Response leaveChatRoom(@PathParam("chatroom-id") int chatRoomId, + @PathParam("user-id") String userId, + @QueryParam("token") String token) { + ChatRooms room = chatRoomsRepository.getChatRoom(chatRoomId); if (room == null) throw new NotFoundException("チャットルームが存在しません"); User user = userRepository.getUser(userId); - if (user == null) { - throw new NotFoundException("IDが存在しません"); - } + if (user == null) throw new NotFoundException("ユーザーが存在しません"); if (token == null || !token.equals(user.getToken())) { throw new WebApplicationException( @@ -175,10 +177,19 @@ ); } + boolean removed = room.removeUser(userId); + if (!removed) { + return Response.status(Response.Status.BAD_REQUEST) + .entity(Map.of("message", "ユーザーはこのルームに存在しません")) + .build(); + } - ChatRooms chatRoom = chatRoomsRepository.deleteChatRoom(chatRoomId); - return Response.noContent().build(); - //return Response.status(Response.Status.noContent).entity(chatRoom).build(); + if (room.isEmpty()) { + chatRoomsRepository.deleteChatRoom(chatRoomId); + return Response.ok(Map.of("message", "両者が退出したためルームを削除しました")).build(); + } + + return Response.noContent().build(); // 片方退出 }