Skip to content

Commit

Permalink
FU-346 feat: 날짜별스케줄 조회 가능 범위 변경
Browse files Browse the repository at this point in the history
기존: 현시점 이후의 스케줄만 조회 가능
변경: 과거 데이터를 포함한 월별 스케줄 조회 가능
  • Loading branch information
rheeri committed Jan 6, 2025
1 parent e4b0e6c commit e0e6c1f
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -34,10 +35,10 @@ public class DailyScheduleController {

@GetMapping("/schedule/daily")
public ResponseEntity<ResponseBody<List<DailyScheduleResponse>>> getDailySchedules(
@AuthenticationPrincipal MemberAdapter memberAdapter) {
@AuthenticationPrincipal MemberAdapter memberAdapter, @Valid @RequestBody DailyScheduleMonthlyRequest request) {

Member photographer = memberAdapter.getMember();
List<DailyScheduleResponse> responses = dailyScheduleService.getDailySchedules(photographer);
List<DailyScheduleResponse> responses = dailyScheduleService.getDailySchedules(photographer, request);

ResponseBody<List<DailyScheduleResponse>> responseBody = ResponseBody.<List<DailyScheduleResponse>>builder()
.message("Successfully get daily schedules")
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -26,11 +27,11 @@ public class DailyScheduleService {
private final DailyScheduleRepository dailyScheduleRepository;
private final Clock clock;

public List<DailyScheduleResponse> getDailySchedules(Member photographer) {
public List<DailyScheduleResponse> 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());
}

Expand Down Expand Up @@ -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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -63,35 +64,37 @@ void setUp() {
@DisplayName("날짜별 스케줄 조회 테스트")
class FindDailySchedule {
@Test
@DisplayName("날짜별 스케줄 조회 시 현시점 이후의 데이터만 불러온다")
@DisplayName("날짜별 스케줄 조회 시 월별 데이터를 불러온다")
void shouldFetchSchedulesAfterCurrentDate() {
// given
List<DailySchedule> 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<DailyScheduleResponse> responses = dailyScheduleService.getDailySchedules(photographer);
List<DailyScheduleResponse> 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());
}
}

Expand Down

0 comments on commit e0e6c1f

Please sign in to comment.