diff --git a/src/main/java/com/foru/freebe/schedule/controller/DailyScheduleController.java b/src/main/java/com/foru/freebe/schedule/controller/DailyScheduleController.java index 98bf8af..a32a874 100644 --- a/src/main/java/com/foru/freebe/schedule/controller/DailyScheduleController.java +++ b/src/main/java/com/foru/freebe/schedule/controller/DailyScheduleController.java @@ -18,6 +18,7 @@ import com.foru.freebe.common.dto.ResponseBody; import com.foru.freebe.member.entity.Member; import com.foru.freebe.schedule.dto.DailyScheduleAddResponse; +import com.foru.freebe.schedule.dto.DailyScheduleMonthlyRequest; import com.foru.freebe.schedule.dto.DailyScheduleRequest; import com.foru.freebe.schedule.dto.DailyScheduleResponse; import com.foru.freebe.schedule.service.DailyScheduleService; @@ -34,10 +35,10 @@ public class DailyScheduleController { @GetMapping("/schedule/daily") public ResponseEntity>> getDailySchedules( - @AuthenticationPrincipal MemberAdapter memberAdapter) { + @AuthenticationPrincipal MemberAdapter memberAdapter, @Valid @RequestBody DailyScheduleMonthlyRequest request) { Member photographer = memberAdapter.getMember(); - List responses = dailyScheduleService.getDailySchedules(photographer); + List responses = dailyScheduleService.getDailySchedules(photographer, request); ResponseBody> responseBody = ResponseBody.>builder() .message("Successfully get daily schedules") diff --git a/src/main/java/com/foru/freebe/schedule/dto/DailyScheduleMonthlyRequest.java b/src/main/java/com/foru/freebe/schedule/dto/DailyScheduleMonthlyRequest.java new file mode 100644 index 0000000..3b41260 --- /dev/null +++ b/src/main/java/com/foru/freebe/schedule/dto/DailyScheduleMonthlyRequest.java @@ -0,0 +1,12 @@ +package com.foru.freebe.schedule.dto; + +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class DailyScheduleMonthlyRequest { + @NotNull(message = "Month value must not be null") + private int monthValue; +} diff --git a/src/main/java/com/foru/freebe/schedule/service/DailyScheduleService.java b/src/main/java/com/foru/freebe/schedule/service/DailyScheduleService.java index 1641ee4..b2a03c7 100644 --- a/src/main/java/com/foru/freebe/schedule/service/DailyScheduleService.java +++ b/src/main/java/com/foru/freebe/schedule/service/DailyScheduleService.java @@ -11,6 +11,7 @@ import com.foru.freebe.errors.exception.RestApiException; import com.foru.freebe.member.entity.Member; import com.foru.freebe.schedule.dto.DailyScheduleAddResponse; +import com.foru.freebe.schedule.dto.DailyScheduleMonthlyRequest; import com.foru.freebe.schedule.dto.DailyScheduleRequest; import com.foru.freebe.schedule.dto.DailyScheduleResponse; import com.foru.freebe.schedule.entity.DailySchedule; @@ -26,11 +27,11 @@ public class DailyScheduleService { private final DailyScheduleRepository dailyScheduleRepository; private final Clock clock; - public List getDailySchedules(Member photographer) { + public List getDailySchedules(Member photographer, DailyScheduleMonthlyRequest request) { return dailyScheduleRepository.findByMember(photographer) .stream() .map(this::toDailyScheduleResponse) - .filter(this::isAfterToday) + .filter(dailySchedule -> dailySchedule.getDate().getMonthValue() == request.getMonthValue()) .collect(Collectors.toList()); } @@ -106,11 +107,4 @@ private DailyScheduleResponse toDailyScheduleResponse(DailySchedule dailySchedul .endTime(dailySchedule.getEndTime()) .build(); } - - private boolean isAfterToday(DailyScheduleResponse dailySchedule) { - LocalDateTime today = LocalDateTime.now(clock); - LocalDateTime requestDateTime = dailySchedule.getDate().atTime(dailySchedule.getStartTime()); - - return requestDateTime.isAfter(today); - } } diff --git a/src/test/java/com/foru/freebe/schedule/DailyScheduleServiceTest.java b/src/test/java/com/foru/freebe/schedule/DailyScheduleServiceTest.java index ce30ba7..366a12e 100644 --- a/src/test/java/com/foru/freebe/schedule/DailyScheduleServiceTest.java +++ b/src/test/java/com/foru/freebe/schedule/DailyScheduleServiceTest.java @@ -26,6 +26,7 @@ import com.foru.freebe.member.entity.Member; import com.foru.freebe.member.entity.Role; import com.foru.freebe.schedule.dto.DailyScheduleAddResponse; +import com.foru.freebe.schedule.dto.DailyScheduleMonthlyRequest; import com.foru.freebe.schedule.dto.DailyScheduleRequest; import com.foru.freebe.schedule.dto.DailyScheduleResponse; import com.foru.freebe.schedule.entity.DailySchedule; @@ -63,35 +64,37 @@ void setUp() { @DisplayName("날짜별 스케줄 조회 테스트") class FindDailySchedule { @Test - @DisplayName("날짜별 스케줄 조회 시 현시점 이후의 데이터만 불러온다") + @DisplayName("날짜별 스케줄 조회 시 월별 데이터를 불러온다") void shouldFetchSchedulesAfterCurrentDate() { // given List dailySchedules = new ArrayList<>(); DailySchedule dailySchedule1 = DailySchedule.builder() .member(photographer) .scheduleStatus(ScheduleStatus.OPEN) - .date(now.toLocalDate().plusDays(1)) + .date(now.toLocalDate()) .startTime(LocalTime.of(10, 0, 0)) .endTime(LocalTime.of(11, 0, 0)) .build(); DailySchedule dailySchedule2 = DailySchedule.builder() .member(photographer) .scheduleStatus(ScheduleStatus.OPEN) - .date(now.toLocalDate()) + .date(now.toLocalDate().plusMonths(1L)) .startTime(now.toLocalTime().minusSeconds(1L)) .endTime(now.toLocalTime()) .build(); dailySchedules.add(dailySchedule1); dailySchedules.add(dailySchedule2); + DailyScheduleMonthlyRequest request = new DailyScheduleMonthlyRequest(now.toLocalDate().getMonthValue()); + given(dailyScheduleRepository.findByMember(photographer)).willReturn(dailySchedules); // when - List responses = dailyScheduleService.getDailySchedules(photographer); + List responses = dailyScheduleService.getDailySchedules(photographer, request); // then assertThat(responses).size().isEqualTo(1); - assertThat(responses.get(0).getDate()).isEqualTo(now.toLocalDate().plusDays(1)); + assertThat(responses.get(0).getDate()).isEqualTo(now.toLocalDate()); } }