22
33import com .danthis .backend .domain .danceclass .DanceClass ;
44import com .danthis .backend .domain .danceclass .danceclassimage .DanceClassImage ;
5+ import com .danthis .backend .domain .danceclass .danceclassschedule .DanceClassSchedule ;
6+ import com .danthis .backend .domain .danceclass .danceclassschedule .Week ;
7+ import java .time .format .DateTimeFormatter ;
58import java .util .Comparator ;
69import java .util .List ;
710import java .util .Set ;
11+ import java .util .stream .Collectors ;
812import lombok .Builder ;
913import lombok .Getter ;
1014import org .springframework .data .domain .Page ;
@@ -28,6 +32,8 @@ public static class DanceClassSummary {
2832 private String thumbnailImage ;
2933 private String genre ;
3034 private Set <Long > hashtagIds ;
35+ private Set <String > days ;
36+ private Set <String > dates ;
3137 }
3238
3339 public static DanceClassListServiceResponse from (Page <DanceClass > danceClassPage ) {
@@ -43,6 +49,8 @@ public static DanceClassListServiceResponse from(Page<DanceClass> danceClassPage
4349 .thumbnailImage (getFixedThumbnailImage (danceClass ))
4450 .genre (danceClass .getGenre ().getName ())
4551 .hashtagIds (danceClass .getHashtagIds ())
52+ .days (extractDays (danceClass ))
53+ .dates (extractDates (danceClass ))
4654 .build ())
4755 .toList ())
4856 .build ();
@@ -61,6 +69,8 @@ public static DanceClassListServiceResponse from(List<DanceClass> danceClasses)
6169 .thumbnailImage (getFixedThumbnailImage (danceClass ))
6270 .genre (danceClass .getGenre ().getName ())
6371 .hashtagIds (danceClass .getHashtagIds ())
72+ .days (extractDays (danceClass ))
73+ .dates (extractDates (danceClass ))
6474 .build ())
6575 .toList ())
6676 .build ();
@@ -73,4 +83,29 @@ private static String getFixedThumbnailImage(DanceClass danceClass) {
7383 .findFirst ()
7484 .orElse (null );
7585 }
86+
87+ private static Set <String > extractDays (DanceClass danceClass ) {
88+ if (danceClass .getDanceClassSchedules () == null ) {
89+ return Set .of ();
90+ }
91+
92+ return danceClass .getDanceClassSchedules ().stream ()
93+ .map (DanceClassSchedule ::getDay )
94+ .filter (day -> day != null )
95+ .map (Week ::name )
96+ .collect (Collectors .toSet ());
97+ }
98+
99+ private static Set <String > extractDates (DanceClass danceClass ) {
100+ if (danceClass .getDanceClassSchedules () == null ) {
101+ return Set .of ();
102+ }
103+
104+ DateTimeFormatter formatter = DateTimeFormatter .ofPattern ("yyyy-MM-dd" );
105+ return danceClass .getDanceClassSchedules ().stream ()
106+ .map (DanceClassSchedule ::getDate )
107+ .filter (date -> date != null )
108+ .map (date -> date .format (formatter ))
109+ .collect (Collectors .toSet ());
110+ }
76111}
0 commit comments