diff --git a/client/public/retreat/main/third/table1.png b/client/public/retreat/main/third/table1.png index 69984ea..b4c9259 100644 Binary files a/client/public/retreat/main/third/table1.png and b/client/public/retreat/main/third/table1.png differ diff --git a/client/public/retreat/main/third/table2.png b/client/public/retreat/main/third/table2.png index 4ab1e6f..ac73889 100644 Binary files a/client/public/retreat/main/third/table2.png and b/client/public/retreat/main/third/table2.png differ diff --git a/client/public/retreat/main/third/table3.png b/client/public/retreat/main/third/table3.png index 117e4a3..2329d82 100644 Binary files a/client/public/retreat/main/third/table3.png and b/client/public/retreat/main/third/table3.png differ diff --git a/client/public/retreat/main/third/table4.png b/client/public/retreat/main/third/table4.png index 53d90d6..a82a2a7 100644 Binary files a/client/public/retreat/main/third/table4.png and b/client/public/retreat/main/third/table4.png differ diff --git a/client/src/app/retreat/admin/room-assignment/page.tsx b/client/src/app/retreat/admin/room-assignment/page.tsx index 355adaa..b765669 100644 --- a/client/src/app/retreat/admin/room-assignment/page.tsx +++ b/client/src/app/retreat/admin/room-assignment/page.tsx @@ -50,6 +50,12 @@ function RoomAssignment() { return [...rooms].sort((left, right) => left.roomNumber - right.roomNumber) } + function getVisibleMembers(room: DraftRoom) { + return room.members.filter( + (retreatAttend) => retreatAttend.user.gender === gender, + ) + } + function normalizeResponse(response: Array) { const unassignedUsers = sortByBirthYear( response.filter( @@ -320,60 +326,21 @@ function RoomAssignment() { return } - const targetRoom = draftState.rooms.find( - (room) => room.roomNumber === nextRoomNumber && room.id !== roomId, - ) - - let nextRooms: Array - - if (targetRoom) { - const mergedMembers = sortByBirthYear([ - ...targetRoom.members, - ...sourceRoom.members.map((user) => ({ - ...user, - roomNumber: nextRoomNumber, - })), - ]) - - nextRooms = sortRooms( - draftState.rooms - .filter((room) => room.id !== roomId) - .map((room) => - room.id === targetRoom.id - ? { - ...room, - roomNumber: nextRoomNumber, - members: mergedMembers, - } - : room, - ), - ) - } else { - nextRooms = sortRooms( - draftState.rooms.map((room) => - room.id === roomId - ? { - ...room, - roomNumber: nextRoomNumber, - members: sortByBirthYear( - room.members.map((user) => ({ - ...user, - roomNumber: nextRoomNumber, - })), - ), - } - : room, + const updatedUsers = [ + ...draftState.unassignedUsers, + ...draftState.rooms.flatMap((room) => + room.members.map((user) => + room.id === roomId && user.user.gender === gender + ? { ...user, roomNumber: nextRoomNumber } + : user, ), - ) - } + ), + ] - const nextState = { - ...draftState, - rooms: nextRooms, - } + const nextState = normalizeResponse(updatedUsers) setDraftState(nextState) - syncRoomNumberDrafts(nextRooms) + syncRoomNumberDrafts(nextState.rooms) void persistDraftState(nextState) } @@ -425,9 +392,7 @@ function RoomAssignment() { } function renderRoom(room: DraftRoom) { - const visibleMembers = room.members.filter( - (retreatAttend) => retreatAttend.user.gender === gender, - ) + const visibleMembers = getVisibleMembers(room) return ( - {draftState.rooms.map((room) => renderRoom(room))} + {draftState.rooms + .filter((room) => getVisibleMembers(room).length > 0) + .map((room) => renderRoom(room))} {selectedUser && selectedUser.id && (