diff --git a/backend/src/main/java/online/wesal/wesal/dto/InvitationResponse.java b/backend/src/main/java/online/wesal/wesal/dto/InvitationResponse.java index f729d39..2e5ec8a 100644 --- a/backend/src/main/java/online/wesal/wesal/dto/InvitationResponse.java +++ b/backend/src/main/java/online/wesal/wesal/dto/InvitationResponse.java @@ -14,6 +14,7 @@ public class InvitationResponse { private TagDto tag; private UserDto creator; private LocalDateTime createdAt; + private java.util.List attendees; public InvitationResponse() {} @@ -97,6 +98,14 @@ public class InvitationResponse { this.createdAt = createdAt; } + public java.util.List getAttendees() { + return attendees; + } + + public void setAttendees(java.util.List attendees) { + this.attendees = attendees; + } + public static class TagDto { private Long id; private String name; @@ -169,4 +178,45 @@ public class InvitationResponse { this.avatar = avatar; } } + + public static class AttendeeDto { + private Long id; + private String displayName; + private String avatar; + private LocalDateTime joinedAt; + + public AttendeeDto() {} + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + public String getAvatar() { + return avatar; + } + + public void setAvatar(String avatar) { + this.avatar = avatar; + } + + public LocalDateTime getJoinedAt() { + return joinedAt; + } + + public void setJoinedAt(LocalDateTime joinedAt) { + this.joinedAt = joinedAt; + } + } } \ No newline at end of file diff --git a/backend/src/main/java/online/wesal/wesal/repository/AttendeeRepository.java b/backend/src/main/java/online/wesal/wesal/repository/AttendeeRepository.java index 3131e3d..a761d6f 100644 --- a/backend/src/main/java/online/wesal/wesal/repository/AttendeeRepository.java +++ b/backend/src/main/java/online/wesal/wesal/repository/AttendeeRepository.java @@ -3,9 +3,12 @@ package online.wesal.wesal.repository; import online.wesal.wesal.entity.Attendee; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.List; @Repository public interface AttendeeRepository extends JpaRepository { boolean existsByInvitationIdAndUserId(Long invitationId, Long userId); + + List findByInvitationId(Long invitationId); } \ No newline at end of file diff --git a/backend/src/main/java/online/wesal/wesal/service/InvitationService.java b/backend/src/main/java/online/wesal/wesal/service/InvitationService.java index 8b656b5..81ef294 100644 --- a/backend/src/main/java/online/wesal/wesal/service/InvitationService.java +++ b/backend/src/main/java/online/wesal/wesal/service/InvitationService.java @@ -59,7 +59,7 @@ public class InvitationService { public Optional getInvitationById(Long id) { return invitationRepository.findById(id) - .map(this::mapToResponse); + .map(this::mapToResponseWithAttendees); } public List getAvailableInvitations() { @@ -146,4 +146,23 @@ public class InvitationService { return response; } + + private InvitationResponse mapToResponseWithAttendees(Invitation invitation) { + InvitationResponse response = mapToResponse(invitation); + + List attendees = attendeeRepository.findByInvitationId(invitation.getId()); + List attendeeDtos = attendees.stream() + .map(attendee -> { + InvitationResponse.AttendeeDto dto = new InvitationResponse.AttendeeDto(); + dto.setId(attendee.getUser().getId()); + dto.setDisplayName(attendee.getUser().getDisplayName()); + dto.setAvatar(attendee.getUser().getAvatar()); + dto.setJoinedAt(attendee.getJoinedAt()); + return dto; + }) + .collect(Collectors.toList()); + + response.setAttendees(attendeeDtos); + return response; + } } \ No newline at end of file