diff --git a/src/main/java/org/cotato/csquiz/api/attendance/controller/AttendanceController.java b/src/main/java/org/cotato/csquiz/api/attendance/controller/AttendanceController.java index 67e0f4b7..291514a7 100644 --- a/src/main/java/org/cotato/csquiz/api/attendance/controller/AttendanceController.java +++ b/src/main/java/org/cotato/csquiz/api/attendance/controller/AttendanceController.java @@ -55,7 +55,7 @@ public ResponseEntity updateAttendance(@RequestBody @Valid UpdateAttendanc @Operation(summary = "세션 시간 반환 API") @GetMapping("/info") public ResponseEntity findAttendanceTimeInfo(@RequestParam("sessionId") Long sessionId) { - return ResponseEntity.status(HttpStatus.OK).body(attendanceService.findAttendanceTimeInfo(sessionId)); + return ResponseEntity.status(HttpStatus.OK).body(attendanceService.getAttendanceDetailInfo(sessionId)); } @Operation(summary = "회원 출결사항 기간 단위 조회 API") diff --git a/src/main/java/org/cotato/csquiz/api/attendance/dto/AttendanceTimeResponse.java b/src/main/java/org/cotato/csquiz/api/attendance/dto/AttendanceTimeResponse.java index 49488e2d..d7fe01ea 100644 --- a/src/main/java/org/cotato/csquiz/api/attendance/dto/AttendanceTimeResponse.java +++ b/src/main/java/org/cotato/csquiz/api/attendance/dto/AttendanceTimeResponse.java @@ -1,18 +1,22 @@ package org.cotato.csquiz.api.attendance.dto; -import java.time.LocalDateTime; import java.time.LocalTime; +import org.cotato.csquiz.domain.attendance.embedded.Location; +import org.cotato.csquiz.domain.attendance.entity.Attendance; public record AttendanceTimeResponse( Long sessionId, LocalTime attendanceDeadLine, - LocalTime lateDeadLine + LocalTime lateDeadLine, + Location location ) { - public static AttendanceTimeResponse of(Long sessionId, LocalDateTime attendanceDeadLine, LocalDateTime lateDeadLine) { + + public static AttendanceTimeResponse from(Attendance attendance) { return new AttendanceTimeResponse( - sessionId, - attendanceDeadLine.toLocalTime(), - lateDeadLine.toLocalTime() + attendance.getSessionId(), + attendance.getAttendanceDeadLine().toLocalTime(), + attendance.getLateDeadLine().toLocalTime(), + attendance.getLocation() ); } } diff --git a/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceService.java b/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceService.java index 5edd8b49..a22d790e 100644 --- a/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceService.java +++ b/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceService.java @@ -62,12 +62,10 @@ public AttendancesResponse findAttendancesByGenerationId(final Long generationId } @Transactional(readOnly = true) - public AttendanceTimeResponse findAttendanceTimeInfo(Long sessionId) { - Attendance findAttendance = attendanceRepository.findBySessionId(sessionId) + public AttendanceTimeResponse getAttendanceDetailInfo(final Long sessionId) { + Attendance attendance = attendanceRepository.findBySessionId(sessionId) .orElseThrow(() -> new EntityNotFoundException("해당 출석을 찾을 수 없습니다")); - return AttendanceTimeResponse.of(sessionId, - findAttendance.getAttendanceDeadLine(), - findAttendance.getLateDeadLine()); + return AttendanceTimeResponse.from(attendance); } } diff --git a/src/main/java/org/cotato/csquiz/domain/generation/service/SessionService.java b/src/main/java/org/cotato/csquiz/domain/generation/service/SessionService.java index e0aef929..be101392 100644 --- a/src/main/java/org/cotato/csquiz/domain/generation/service/SessionService.java +++ b/src/main/java/org/cotato/csquiz/domain/generation/service/SessionService.java @@ -129,7 +129,9 @@ public void updateSession(UpdateSessionRequest request) { public void updateSessionDate(Session session, LocalDate newDate, AttendanceDeadLineDto newDeadline) { Attendance findAttendance = attendanceRepository.findBySessionId(session.getId()) - .orElseThrow(() -> new EntityNotFoundException("해당 세션의 출석이 존재하지 않습니다")); + .orElseGet(() -> Attendance.builder() + .session(session) + .build()); // 날짜가 바뀌지 않았고, 출결 시간이 모두 동일한 경우 @@ -144,6 +146,7 @@ public void updateSessionDate(Session session, LocalDate newDate, AttendanceDead LocalDateTime newLateDeadline = LocalDateTime.of(newDate, newDeadline.lateDeadLine()); findAttendance.updateDeadLine(newAttendanceDeadline, newLateDeadline); + attendanceRepository.save(findAttendance); attendanceRecordService.updateAttendanceStatus(findAttendance); }