@@ -122,18 +122,27 @@ public static ResourceResponseDTO.RecentlyWatchedEpisodeDTO convertToRecentlyWat
122122 UserEpisodeProgress userEpisodeProgress
123123 ) {
124124 return ResourceResponseDTO .RecentlyWatchedEpisodeDTO .builder ()
125- .resourceId ( getResourceId (userCollection ))
125+ .episodeId ( getEpisodeId (userCollection ))
126126 .collectionId (userCollection .getCollection ().getId ())
127127 .collectionTitle (userCollection .getCollection ().getTitle ())
128128 .resourceSource (extractResourceSource (getResourceUrl (userCollection )))
129129 .episodeNumber (userCollection .getUserCollectionStatus ())
130130 .episodeName (getEpisodeName (userCollection ))
131131 .progressRatio (calculateProgressRatio (userCollection ))
132- .currentProgress (userEpisodeProgress .getCurrentProgress ())
133- .totalProgress (userEpisodeProgress .getTotalProgress ())
132+ .currentProgress (userEpisodeProgress != null ? userEpisodeProgress .getCurrentProgress () : 0 )
133+ .totalProgress (userEpisodeProgress != null ? userEpisodeProgress .getTotalProgress () : 0 )
134134 .build ();
135135 }
136136
137+ private static Long getEpisodeId (UserCollection userCollection ) {
138+ // added: episodeId를 찾는 메소드 추가
139+ return userCollection .getCollection ().getEpisodes ().stream ()
140+ .filter (episode -> episode .getEpisodeNumber ().equals (userCollection .getUserCollectionStatus ()))
141+ .findFirst ()
142+ .map (CollectionEpisode ::getId )
143+ .orElse (null );
144+ }
145+
137146 public static List <ResourceResponseDTO .SearchResultResourceDTO > convertToResourceDTOWithToday (
138147 List <CollectionEpisode > episodes ,
139148 int nextEpisodeNumber ,
@@ -152,6 +161,29 @@ public static List<ResourceResponseDTO.SearchResultResourceDTO> convertToResourc
152161 .toList ();
153162 }
154163
164+ public static ResourceResponseDTO .RecentlyWatchedEpisodeDTO convertToRecentlyWatchedEpisodeDTO (
165+ UserCollection userCollection ,
166+ UserEpisodeProgress userEpisodeProgress ,
167+ CollectionEpisode currentEpisode , // added: 파라미터 추가
168+ int totalEpisodes , // added: 파라미터 추가
169+ double progressPercentage // added: 파라미터 추가
170+ ) {
171+ return ResourceResponseDTO .RecentlyWatchedEpisodeDTO .builder ()
172+ .episodeId (currentEpisode .getId ())
173+ .collectionId (userCollection .getCollection ().getId ())
174+ .collectionTitle (userCollection .getCollection ().getTitle ())
175+ .resourceSource (extractResourceSource (currentEpisode .getResource ().getUrl ()))
176+ .episodeNumber (userCollection .getUserCollectionStatus ())
177+ .episodeName (currentEpisode .getEpisodeName ())
178+ .progressRatio (String .format ("%d / %d회차 (%.0f%%)" ,
179+ userCollection .getUserCollectionStatus (),
180+ totalEpisodes ,
181+ progressPercentage ))
182+ .currentProgress (userEpisodeProgress != null ? userEpisodeProgress .getCurrentProgress () : 0 )
183+ .totalProgress (userEpisodeProgress != null ? userEpisodeProgress .getTotalProgress () : 0 )
184+ .build ();
185+ }
186+
155187 public static String extractResourceSource (String url ) {
156188
157189 String lowerCaseUrl = url .toLowerCase ();
0 commit comments