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 @@ -5,7 +5,6 @@
import com.umc.yeogi_gal_lae.api.aiCourse.dto.AICourseIdResponse;
import com.umc.yeogi_gal_lae.api.aiCourse.dto.AICourseItineraryResponse;
import com.umc.yeogi_gal_lae.api.aiCourse.dto.AICourseResponse;
import com.umc.yeogi_gal_lae.api.aiCourse.dto.DailyItineraryResponse;
import com.umc.yeogi_gal_lae.api.aiCourse.repository.AICourseRepository;
import com.umc.yeogi_gal_lae.api.aiCourse.service.AICourseService;
import com.umc.yeogi_gal_lae.api.place.domain.Place;
Expand Down Expand Up @@ -61,30 +60,17 @@ public Response<AICourseItineraryResponse> getStoredAICourse(
@PathVariable Long aiCourseId) {
Optional<AICourse> aiCourseOpt = aiCourseRepository.findById(aiCourseId);
if (aiCourseOpt.isEmpty()) {
return Response.of(ErrorCode.NOT_FOUND, null);
return Response.of(ErrorCode.NOT_FOUND);
}
AICourse aiCourse = aiCourseOpt.get();
// TripPlan 검증: aiCourse에 연결된 TripPlan의 id와 입력받은 tripPlanId가 동일해야 함
if (!aiCourse.getTripPlan().getId().equals(tripPlanId)) {
return Response.of(ErrorCode.NOT_FOUND, null);
return Response.of(ErrorCode.NOT_FOUND);
}
Map<String, List<Place>> courseMap = aiCourseService.getStoredAICourseById(aiCourseId);
if (courseMap.isEmpty()) {
return Response.of(ErrorCode.NOT_FOUND, null);
return Response.of(ErrorCode.NOT_FOUND);
}
// Room 정보
String roomName = aiCourse.getTripPlan().getRoom().getName();
int totalRoomMember = (aiCourse.getTripPlan().getRoom().getRoomMembers() != null)
? aiCourse.getTripPlan().getRoom().getRoomMembers().size() : 0;
// dailyItineraries 변환
List<DailyItineraryResponse> dailyItineraries = AICourseConverter.toDailyItineraryResponseList(courseMap);

// 전체 응답 DTO 생성
AICourseItineraryResponse responseDTO = AICourseItineraryResponse.builder()
.roomName(roomName)
.totalRoomMember(totalRoomMember)
.dailyItineraries(dailyItineraries)
.build();
AICourseItineraryResponse responseDTO = AICourseConverter.toAICourseItineraryResponse(aiCourse, courseMap);
return Response.of(SuccessCode.OK, responseDTO);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
package com.umc.yeogi_gal_lae.api.aiCourse.converter;

import com.umc.yeogi_gal_lae.api.aiCourse.domain.AICourse;
import com.umc.yeogi_gal_lae.api.aiCourse.dto.AICourseItineraryResponse;
import com.umc.yeogi_gal_lae.api.aiCourse.dto.AICourseResponse;
import com.umc.yeogi_gal_lae.api.aiCourse.dto.DailyItineraryResponse;
import com.umc.yeogi_gal_lae.api.place.converter.PlaceConverter;
import com.umc.yeogi_gal_lae.api.place.domain.Place;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;


public class AICourseConverter {

public static List<DailyItineraryResponse> toDailyItineraryResponseList(Map<String, List<Place>> courseMap) {
public static List<DailyItineraryResponse> toDailyItineraryResponseList(Map<String, List<Place>> courseMap,
String startDate) {
// 기존의 roomName과 totalRoomMember 정보를 제거하고 day, places만 포함하도록 함
return courseMap.entrySet().stream()
.map(entry -> DailyItineraryResponse.builder()
Expand All @@ -31,4 +34,25 @@ public static AICourseResponse toAICourseResponse(AICourse aiCourse) {
.roomId(aiCourse.getTripPlan().getRoom().getId())
.build();
}

public static AICourseItineraryResponse toAICourseItineraryResponse(AICourse aiCourse,
Map<String, List<Place>> courseMap) {
// TripPlan의 startDate를 "yyyy-MM-dd" 형식으로 변환
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String startDate = aiCourse.getTripPlan().getStartDate().format(formatter);

// dailyItineraries 생성 (각 DailyItineraryResponse에 startDate 포함)
List<DailyItineraryResponse> dailyItineraries = toDailyItineraryResponseList(courseMap, startDate);

String roomName = aiCourse.getTripPlan().getRoom().getName();
int totalRoomMember = (aiCourse.getTripPlan().getRoom().getRoomMembers() != null)
? aiCourse.getTripPlan().getRoom().getRoomMembers().size() : 0;

return AICourseItineraryResponse.builder()
.roomName(roomName)
.totalRoomMember(totalRoomMember)
.startDate(startDate)
.dailyItineraries(dailyItineraries)
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.umc.yeogi_gal_lae.api.aiCourse.dto;


import java.util.List;
import lombok.Builder;
import lombok.Getter;
Expand All @@ -10,5 +9,6 @@
public class AICourseItineraryResponse {
private String roomName;
private int totalRoomMember;
private String startDate;
private List<DailyItineraryResponse> dailyItineraries;
}