Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -170,13 +170,16 @@ List<ChatRoom> findAllSystemAdminDirectRooms(
FROM ChatRoom cr
JOIN ChatRoomMember crm ON crm.id.chatRoomId = cr.id
JOIN User u ON u.id = crm.id.userId
JOIN ChatRoomMember adminCrm ON adminCrm.id.chatRoomId = cr.id
AND adminCrm.id.userId = :systemAdminId
JOIN ChatRoomMember systemAdminCrm ON systemAdminCrm.id.chatRoomId = cr.id
AND systemAdminCrm.id.userId = :systemAdminId
LEFT JOIN ChatRoomMember viewerAdminCrm ON viewerAdminCrm.id.chatRoomId = cr.id
AND viewerAdminCrm.id.userId = :viewerAdminId
LEFT JOIN ChatMessage cm ON cm.chatRoom.id = cr.id
AND cm.sender.id <> :systemAdminId
AND cm.createdAt > adminCrm.lastReadAt
AND cm.createdAt > systemAdminCrm.lastReadAt
WHERE cr.roomType = :roomType
AND u.role != :adminRole
AND (viewerAdminCrm.leftAt IS NULL OR viewerAdminCrm.id.userId IS NULL)
AND EXISTS (
SELECT 1 FROM ChatMessage userReply
JOIN userReply.sender userSender
Expand All @@ -188,6 +191,7 @@ ORDER BY COALESCE(cr.lastMessageSentAt, cr.createdAt) DESC
""")
List<AdminChatRoomProjection> findAdminChatRoomsOptimized(
@Param("systemAdminId") Integer systemAdminId,
@Param("viewerAdminId") Integer viewerAdminId,
@Param("adminRole") UserRole adminRole,
@Param("roomType") ChatType roomType
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -482,7 +482,7 @@ private List<ChatRoomSummaryResponse> getDirectChatRooms(Integer userId) {
User user = userRepository.getById(userId);

if (user.getRole() == UserRole.ADMIN) {
return getAdminDirectChatRooms();
return getAdminDirectChatRooms(userId);
}

List<ChatRoomSummaryResponse> roomSummaries = new ArrayList<>();
Expand Down Expand Up @@ -525,9 +525,9 @@ private List<ChatRoomSummaryResponse> getDirectChatRooms(Integer userId) {
return roomSummaries;
}

private List<ChatRoomSummaryResponse> getAdminDirectChatRooms() {
private List<ChatRoomSummaryResponse> getAdminDirectChatRooms(Integer adminUserId) {
List<AdminChatRoomProjection> projections = chatRoomRepository.findAdminChatRoomsOptimized(
SYSTEM_ADMIN_ID, UserRole.ADMIN, ChatType.DIRECT
SYSTEM_ADMIN_ID, adminUserId, UserRole.ADMIN, ChatType.DIRECT
);

return projections.stream()
Expand Down
Loading