diff --git a/src/main/java/org/capstone/maru/dto/DormitoryRoomRecommendPost.java b/src/main/java/org/capstone/maru/dto/DormitoryRoomRecommendPost.java index c5b95e0..8ec55cf 100644 --- a/src/main/java/org/capstone/maru/dto/DormitoryRoomRecommendPost.java +++ b/src/main/java/org/capstone/maru/dto/DormitoryRoomRecommendPost.java @@ -20,6 +20,7 @@ public class DormitoryRoomRecommendPost { private final List roomImages; private final MemberAccount publisherAccount; private final Address address; + private final Short recruitmentCapacity; private final LocalDateTime createdAt; private final String createdBy; private final LocalDateTime modifiedAt; @@ -38,6 +39,7 @@ public DormitoryRoomRecommendPost( this.roomImages = dormitoryRoomPost.getRoomImages(); this.publisherAccount = dormitoryRoomPost.getPublisherAccount(); this.address = dormitoryRoomPost.getAddress(); + this.recruitmentCapacity = dormitoryRoomPost.getRecruitmentCapacity(); this.createdAt = dormitoryRoomPost.getCreatedAt(); this.createdBy = dormitoryRoomPost.getCreatedBy(); this.modifiedAt = dormitoryRoomPost.getModifiedAt(); diff --git a/src/main/java/org/capstone/maru/dto/DormitoryRoomRecommendPostDto.java b/src/main/java/org/capstone/maru/dto/DormitoryRoomRecommendPostDto.java index c57d7bb..080f264 100644 --- a/src/main/java/org/capstone/maru/dto/DormitoryRoomRecommendPostDto.java +++ b/src/main/java/org/capstone/maru/dto/DormitoryRoomRecommendPostDto.java @@ -13,6 +13,7 @@ public record DormitoryRoomRecommendPostDto( List roomImages, MemberAccountDto publisherAccount, Address address, + Short recruitmentCapacity, Boolean isScrapped, LocalDateTime createdAt, String createdBy, @@ -33,12 +34,15 @@ public static DormitoryRoomRecommendPostDto from(DormitoryRoomRecommendPost enti .toList(), MemberAccountDto.from(entity.getPublisherAccount()), entity.getAddress(), - scrapPostViews.stream() - .filter( - scrapPostView -> scrapPostView.getScrappedId().equals(entity.getId())) - .map(ScrapPostView::getIsScrapped) - .findFirst() - .orElse(false), + entity.getRecruitmentCapacity(), + scrapPostViews + .stream() + .filter( + scrapPostView -> scrapPostView.getScrappedId() + .equals(entity.getId())) + .map(ScrapPostView::getIsScrapped) + .findFirst() + .orElse(false), entity.getCreatedAt(), entity.getCreatedBy(), entity.getModifiedAt(), @@ -46,4 +50,12 @@ public static DormitoryRoomRecommendPostDto from(DormitoryRoomRecommendPost enti entity.getScore() ); } + + public RoomImageDto thumbnail() { + return roomImages + .stream() + .filter(RoomImageDto::isThumbnail) + .findAny() + .orElseThrow(IllegalArgumentException::new); + } } diff --git a/src/main/java/org/capstone/maru/dto/StudioRoomRecommendPost.java b/src/main/java/org/capstone/maru/dto/StudioRoomRecommendPost.java index c5767a6..37ba4b4 100644 --- a/src/main/java/org/capstone/maru/dto/StudioRoomRecommendPost.java +++ b/src/main/java/org/capstone/maru/dto/StudioRoomRecommendPost.java @@ -22,6 +22,7 @@ public class StudioRoomRecommendPost { private final MemberAccount publisherAccount; private final Address address; private final RoomInfo roomInfo; + private final Short recruitmentCapacity; private final LocalDateTime createdAt; private final String createdBy; private final LocalDateTime modifiedAt; @@ -40,6 +41,7 @@ public StudioRoomRecommendPost( this.roomImages = studioRoomPost.getRoomImages(); this.publisherAccount = studioRoomPost.getPublisherAccount(); this.address = studioRoomPost.getAddress(); + this.recruitmentCapacity = studioRoomPost.getRecruitmentCapacity(); this.roomInfo = studioRoomPost.getRoomInfo(); this.createdAt = studioRoomPost.getCreatedAt(); this.createdBy = studioRoomPost.getCreatedBy(); diff --git a/src/main/java/org/capstone/maru/dto/StudioRoomRecommendPostDto.java b/src/main/java/org/capstone/maru/dto/StudioRoomRecommendPostDto.java index 8518d6a..0a1100b 100644 --- a/src/main/java/org/capstone/maru/dto/StudioRoomRecommendPostDto.java +++ b/src/main/java/org/capstone/maru/dto/StudioRoomRecommendPostDto.java @@ -14,12 +14,13 @@ public record StudioRoomRecommendPostDto( MemberAccountDto publisherAccount, Address address, RoomInfoDto roomInfo, + Short recruitmentCapacity, + Integer score, Boolean isScrapped, LocalDateTime createdAt, String createdBy, LocalDateTime modifiedAt, - String modifiedBy, - Integer score + String modifiedBy ) { public static StudioRoomRecommendPostDto from(StudioRoomRecommendPost studioRoomPost, @@ -30,22 +31,32 @@ public static StudioRoomRecommendPostDto from(StudioRoomRecommendPost studioRoom studioRoomPost.getContent(), studioRoomPost.getPublisherGender(), studioRoomPost.getRoomImages().stream() - .map(RoomImageDto::from) - .toList(), + .map(RoomImageDto::from) + .toList(), MemberAccountDto.from(studioRoomPost.getPublisherAccount()), studioRoomPost.getAddress(), RoomInfoDto.from(studioRoomPost.getRoomInfo()), + studioRoomPost.getRecruitmentCapacity(), + studioRoomPost.getScore(), scrapPostViews.stream() - .filter( - scrapPostView -> scrapPostView.getScrappedId().equals(studioRoomPost.getId())) - .map(ScrapPostView::getIsScrapped) - .findFirst() - .orElse(false), + .filter( + scrapPostView -> scrapPostView.getScrappedId() + .equals(studioRoomPost.getId())) + .map(ScrapPostView::getIsScrapped) + .findFirst() + .orElse(false), studioRoomPost.getCreatedAt(), studioRoomPost.getCreatedBy(), studioRoomPost.getModifiedAt(), - studioRoomPost.getModifiedBy(), - studioRoomPost.getScore() + studioRoomPost.getModifiedBy() ); } + + public RoomImageDto thumbnail() { + return roomImages + .stream() + .filter(RoomImageDto::isThumbnail) + .findAny() + .orElseThrow(IllegalArgumentException::new); + } } diff --git a/src/main/java/org/capstone/maru/dto/response/DormitoryRoomRecommendPostResponse.java b/src/main/java/org/capstone/maru/dto/response/DormitoryRoomRecommendPostResponse.java index 3351350..71d8605 100644 --- a/src/main/java/org/capstone/maru/dto/response/DormitoryRoomRecommendPostResponse.java +++ b/src/main/java/org/capstone/maru/dto/response/DormitoryRoomRecommendPostResponse.java @@ -13,10 +13,10 @@ public record DormitoryRoomRecommendPostResponse( Long id, String title, String content, - String publisherGender, - List roomImages, - MemberAccountDto publisherAccount, + RoomImageResponse thumbnail, + MemberAccountResponse publisherAccount, Address address, + Short recruitmentCapacity, Boolean isScrapped, LocalDateTime createdAt, String createdBy, @@ -33,10 +33,10 @@ public static DormitoryRoomRecommendPostResponse from( .id(dto.id()) .title(dto.title()) .content(dto.content()) - .publisherGender(dto.publisherGender()) - .roomImages(dto.roomImages()) - .publisherAccount(dto.publisherAccount()) + .thumbnail(RoomImageResponse.from(dto.thumbnail())) + .publisherAccount(MemberAccountResponse.from(dto.publisherAccount())) .address(dto.address()) + .recruitmentCapacity(dto.recruitmentCapacity()) .isScrapped(dto.isScrapped()) .createdAt(dto.createdAt()) .createdBy(dto.createdBy()) diff --git a/src/main/java/org/capstone/maru/dto/response/StudioRoomRecommendPostResponse.java b/src/main/java/org/capstone/maru/dto/response/StudioRoomRecommendPostResponse.java index 0252442..c2a4d13 100644 --- a/src/main/java/org/capstone/maru/dto/response/StudioRoomRecommendPostResponse.java +++ b/src/main/java/org/capstone/maru/dto/response/StudioRoomRecommendPostResponse.java @@ -14,11 +14,10 @@ public record StudioRoomRecommendPostResponse( Long id, String title, String content, - String publisherGender, - List roomImages, - MemberAccountDto publisherAccount, + RoomImageResponse thumbnail, + MemberAccountResponse publisherAccount, Address address, - RoomInfoDto roomInfo, + RoomInfoResponse roomInfo, Boolean isScrapped, LocalDateTime createdAt, String createdBy, @@ -28,23 +27,22 @@ public record StudioRoomRecommendPostResponse( ) { public static StudioRoomRecommendPostResponse from( - StudioRoomRecommendPostDto studioRoomRecommendPostDto) { - - return StudioRoomRecommendPostResponse.builder() - .id(studioRoomRecommendPostDto.id()) - .title(studioRoomRecommendPostDto.title()) - .content(studioRoomRecommendPostDto.content()) - .publisherGender(studioRoomRecommendPostDto.publisherGender()) - .roomImages(studioRoomRecommendPostDto.roomImages()) - .publisherAccount(studioRoomRecommendPostDto.publisherAccount()) - .address(studioRoomRecommendPostDto.address()) - .roomInfo(studioRoomRecommendPostDto.roomInfo()) - .isScrapped(studioRoomRecommendPostDto.isScrapped()) - .createdAt(studioRoomRecommendPostDto.createdAt()) - .createdBy(studioRoomRecommendPostDto.createdBy()) - .modifiedAt(studioRoomRecommendPostDto.modifiedAt()) - .modifiedBy(studioRoomRecommendPostDto.modifiedBy()) - .score(studioRoomRecommendPostDto.score()) + StudioRoomRecommendPostDto dto) { + return StudioRoomRecommendPostResponse + .builder() + .id(dto.id()) + .title(dto.title()) + .content(dto.content()) + .thumbnail(RoomImageResponse.from(dto.thumbnail())) + .publisherAccount(MemberAccountResponse.from(dto.publisherAccount())) + .address(dto.address()) + .roomInfo(RoomInfoResponse.from(dto.roomInfo(), dto.recruitmentCapacity())) + .isScrapped(dto.isScrapped()) + .createdAt(dto.createdAt()) + .createdBy(dto.createdBy()) + .modifiedAt(dto.modifiedAt()) + .modifiedBy(dto.modifiedBy()) + .score(dto.score()) .build(); } }