feat: add /get for invitations that gets the invite and its attendees.

This commit is contained in:
sBubshait 2025-07-22 15:37:31 +03:00
parent 2f7bc9e6c5
commit 05e9261f62
3 changed files with 73 additions and 1 deletions

View File

@ -14,6 +14,7 @@ public class InvitationResponse {
private TagDto tag;
private UserDto creator;
private LocalDateTime createdAt;
private java.util.List<AttendeeDto> attendees;
public InvitationResponse() {}
@ -97,6 +98,14 @@ public class InvitationResponse {
this.createdAt = createdAt;
}
public java.util.List<AttendeeDto> getAttendees() {
return attendees;
}
public void setAttendees(java.util.List<AttendeeDto> 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;
}
}
}

View File

@ -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<Attendee, Long> {
boolean existsByInvitationIdAndUserId(Long invitationId, Long userId);
List<Attendee> findByInvitationId(Long invitationId);
}

View File

@ -59,7 +59,7 @@ public class InvitationService {
public Optional<InvitationResponse> getInvitationById(Long id) {
return invitationRepository.findById(id)
.map(this::mapToResponse);
.map(this::mapToResponseWithAttendees);
}
public List<InvitationResponse> getAvailableInvitations() {
@ -146,4 +146,23 @@ public class InvitationService {
return response;
}
private InvitationResponse mapToResponseWithAttendees(Invitation invitation) {
InvitationResponse response = mapToResponse(invitation);
List<Attendee> attendees = attendeeRepository.findByInvitationId(invitation.getId());
List<InvitationResponse.AttendeeDto> 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;
}
}