77import learningFlow .learningFlow_BE .domain .CollectionEpisode ;
88import learningFlow .learningFlow_BE .domain .UserCollection ;
99import java .util .*;
10+ import java .util .function .Function ;
11+ import java .util .stream .Collectors ;
1012
1113public class ResourceConverter {
12- public static ResourceResponseDTO .ResourceUrlDTO watchEpisode (Collection collection , UserEpisodeProgress userProgress , Resource resource , Optional <Memo > memo ){
14+ public static ResourceResponseDTO .ResourceUrlDTO watchEpisode (Collection collection , UserEpisodeProgress userProgress , Resource resource , Optional <Memo > memo
15+ ,List <UserEpisodeProgress > userEpisodeProgressList ){
1316 String memoContents = "작성하신 글의 첫 줄은 노트의 제목이 됩니다, 최대 2,000자까지 입력하실 수 있어요" ;
1417 if (memo .isPresent ())
1518 memoContents = memo .get ().getContents ();
@@ -21,15 +24,16 @@ public static ResourceResponseDTO.ResourceUrlDTO watchEpisode(Collection collect
2124 .urlTitle (resource .getTitle ())
2225 .progress (userProgress .getCurrentProgress ())
2326 .memoContents (memoContents )
24- .episodeInformationList (episodeInformationList (collection ,userProgress ))
27+ .episodeInformationList (episodeInformationList (collection ,userProgress , userEpisodeProgressList ))
2528 .build ();
2629 }
2730 public static ResourceResponseDTO .ResourceBlogUrlDTO watchBlogEpisode (
2831 Collection collection ,
2932 UserEpisodeProgress userProgress ,
3033 String pageResource ,
3134 String resourceTitle ,
32- Optional <Memo > memo ){
35+ Optional <Memo > memo ,
36+ List <UserEpisodeProgress > userEpisodeProgressList ){
3337 String memoContents = "작성하신 글의 첫 줄은 노트의 제목이 됩니다, 최대 2,000자까지 입력하실 수 있어요" ;
3438 if (memo .isPresent ())
3539 memoContents = memo .get ().getContents ();
@@ -41,15 +45,38 @@ public static ResourceResponseDTO.ResourceBlogUrlDTO watchBlogEpisode(
4145 .urlTitle (resourceTitle )
4246 .progress (userProgress .getCurrentProgress ())
4347 .memoContents (memoContents )
44- .episodeInformationList (episodeInformationList (collection , userProgress ))
48+ .episodeInformationList (episodeInformationList (collection , userProgress , userEpisodeProgressList ))
4549 .build ();
4650 }
4751
4852 public static List <ResourceResponseDTO .episodeInformation > episodeInformationList (
49- Collection collection , UserEpisodeProgress userEpisodeProgress
53+ Collection collection , UserEpisodeProgress userEpisodeProgress , List < UserEpisodeProgress > userEpisodeProgressList
5054 ) {
5155 List <ResourceResponseDTO .episodeInformation > episodeInformationList = new ArrayList <>();
5256
57+ // userEpisodeProgressList를 에피소드 ID를 키로 하는 Map으로 변환
58+ Map <Long , UserEpisodeProgress > progressMap = userEpisodeProgressList .stream ()
59+ .collect (Collectors .toMap (
60+ progress -> progress .getUserEpisodeProgressId ().getCollectionEpisodeId (),
61+ Function .identity ()
62+ ));
63+
64+ // 컬렉션에 속한 각 에피소드마다 진행 상태를 매핑
65+ for (CollectionEpisode episode : collection .getEpisodes ()) {
66+ // 해당 에피소드에 대해 UserEpisodeProgress가 존재하면 isComplete를 가져오고,
67+ // 없으면 기본값(false)를 사용
68+ Boolean isComplete = progressMap .containsKey (episode .getId ())
69+ ? progressMap .get (episode .getId ()).getIsComplete () : false ;
70+
71+ episodeInformationList .add (new ResourceResponseDTO .episodeInformation (
72+ episode .getId (),
73+ episode .getEpisodeNumber (),
74+ episode .getResource ().getTitle (),
75+ isComplete ,
76+ episode .getResource ().getType ()
77+ ));
78+ }/*
79+ // 유저 episodeProgress에서 가져올 것
5380 for (CollectionEpisode episode : collection.getEpisodes()) {
5481 episodeInformationList.add(new ResourceResponseDTO.episodeInformation(
5582 episode.getId(),
@@ -58,7 +85,7 @@ public static List<ResourceResponseDTO.episodeInformation> episodeInformationLis
5885 userEpisodeProgress.getIsComplete(),
5986 episode.getResource().getType()
6087 ));
61- }
88+ }*/
6289 episodeInformationList .sort (Comparator .comparingInt (ResourceResponseDTO .episodeInformation ::getEpisodeNumber ));
6390 return episodeInformationList ;
6491 }
0 commit comments