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 cae6a823..de1628f5 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 @@ -16,9 +16,11 @@ import org.cotato.csquiz.api.attendance.dto.OfflineAttendanceRequest; import org.cotato.csquiz.api.attendance.dto.OnlineAttendanceRequest; import org.cotato.csquiz.api.attendance.dto.UpdateAttendanceRequest; +import org.cotato.csquiz.api.attendance.dto.AttendanceTimeResponse; import org.cotato.csquiz.domain.attendance.service.AttendanceAdminService; import org.cotato.csquiz.domain.attendance.service.AttendanceRecordService; import org.cotato.csquiz.domain.attendance.service.AttendanceService; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.validation.annotation.Validated; @@ -50,6 +52,12 @@ public ResponseEntity updateAttendance(@RequestBody @Valid UpdateAttendanc return ResponseEntity.noContent().build(); } + @Operation(summary = "세션 시간 반환 API") + @GetMapping("/info") + public ResponseEntity findAttendanceTimeInfo(@RequestParam("sessionId") Long sessionId) { + return ResponseEntity.status(HttpStatus.OK).body(attendanceService.findAttendanceTimeInfo(sessionId)); + } + @Operation(summary = "회원 출결사항 기간 단위 조회 API") @GetMapping("/records") public ResponseEntity> findAttendanceRecords( diff --git a/src/main/java/org/cotato/csquiz/api/session/dto/SessionDetailInfoResponse.java b/src/main/java/org/cotato/csquiz/api/attendance/dto/AttendanceTimeResponse.java similarity index 53% rename from src/main/java/org/cotato/csquiz/api/session/dto/SessionDetailInfoResponse.java rename to src/main/java/org/cotato/csquiz/api/attendance/dto/AttendanceTimeResponse.java index d3e0f0c5..49488e2d 100644 --- a/src/main/java/org/cotato/csquiz/api/session/dto/SessionDetailInfoResponse.java +++ b/src/main/java/org/cotato/csquiz/api/attendance/dto/AttendanceTimeResponse.java @@ -1,15 +1,15 @@ -package org.cotato.csquiz.api.session.dto; +package org.cotato.csquiz.api.attendance.dto; import java.time.LocalDateTime; import java.time.LocalTime; -public record SessionDetailInfoResponse( +public record AttendanceTimeResponse( Long sessionId, LocalTime attendanceDeadLine, LocalTime lateDeadLine ) { - public static SessionDetailInfoResponse of(Long sessionId, LocalDateTime attendanceDeadLine, LocalDateTime lateDeadLine) { - return new SessionDetailInfoResponse( + public static AttendanceTimeResponse of(Long sessionId, LocalDateTime attendanceDeadLine, LocalDateTime lateDeadLine) { + return new AttendanceTimeResponse( sessionId, attendanceDeadLine.toLocalTime(), lateDeadLine.toLocalTime() diff --git a/src/main/java/org/cotato/csquiz/api/session/controller/SessionController.java b/src/main/java/org/cotato/csquiz/api/session/controller/SessionController.java index 67083d57..561df15f 100644 --- a/src/main/java/org/cotato/csquiz/api/session/controller/SessionController.java +++ b/src/main/java/org/cotato/csquiz/api/session/controller/SessionController.java @@ -12,7 +12,6 @@ import org.cotato.csquiz.api.session.dto.AddSessionResponse; import org.cotato.csquiz.api.session.dto.CsEducationOnSessionNumberResponse; import org.cotato.csquiz.api.session.dto.DeleteSessionImageRequest; -import org.cotato.csquiz.api.session.dto.SessionDetailInfoResponse; import org.cotato.csquiz.api.session.dto.SessionListResponse; import org.cotato.csquiz.api.session.dto.UpdateSessionNumberRequest; import org.cotato.csquiz.api.session.dto.UpdateSessionImageOrderRequest; @@ -26,7 +25,6 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PatchMapping; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -49,12 +47,6 @@ public ResponseEntity> findSessionsByGenerationId(@Req return ResponseEntity.status(HttpStatus.OK).body(sessionService.findSessionsByGenerationId(generationId)); } - @Operation(summary = "세션 시간 반환 API") - @GetMapping("/{sessionId}/info") - public ResponseEntity findSessionDetailInfo(@PathVariable("sessionId") Long sessionId) { - return ResponseEntity.status(HttpStatus.OK).body(sessionService.findSessionDetailInfo(sessionId)); - } - @Operation(summary = "CS ON인 세션 목록 반환 API") @GetMapping("/cs-on") public ResponseEntity> findAllCsOnSessionsByGenerationId( diff --git a/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceMemberService.java b/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceMemberService.java deleted file mode 100644 index 4703aec9..00000000 --- a/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceMemberService.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.cotato.csquiz.domain.attendance.service; - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@RequiredArgsConstructor -@Transactional(readOnly = true) -@Slf4j -public class AttendanceMemberService { -} 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 f77c4ed1..5edd8b49 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 @@ -9,6 +9,8 @@ import lombok.RequiredArgsConstructor; import org.cotato.csquiz.api.attendance.dto.AttendanceResponse; import org.cotato.csquiz.api.attendance.dto.AttendancesResponse; +import org.cotato.csquiz.api.attendance.dto.AttendanceTimeResponse; +import org.cotato.csquiz.domain.attendance.entity.Attendance; import org.cotato.csquiz.domain.attendance.repository.AttendanceRepository; import org.cotato.csquiz.domain.attendance.util.AttendanceUtil; import org.cotato.csquiz.domain.generation.entity.Generation; @@ -58,4 +60,14 @@ public AttendancesResponse findAttendancesByGenerationId(final Long generationId .attendances(attendances) .build(); } + + @Transactional(readOnly = true) + public AttendanceTimeResponse findAttendanceTimeInfo(Long sessionId) { + Attendance findAttendance = attendanceRepository.findBySessionId(sessionId) + .orElseThrow(() -> new EntityNotFoundException("해당 출석을 찾을 수 없습니다")); + + return AttendanceTimeResponse.of(sessionId, + findAttendance.getAttendanceDeadLine(), + findAttendance.getLateDeadLine()); + } } 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 4731b896..18dacacd 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 @@ -12,7 +12,6 @@ import org.cotato.csquiz.api.session.dto.AddSessionRequest; import org.cotato.csquiz.api.session.dto.AddSessionResponse; import org.cotato.csquiz.api.session.dto.CsEducationOnSessionNumberResponse; -import org.cotato.csquiz.api.session.dto.SessionDetailInfoResponse; import org.cotato.csquiz.api.session.dto.SessionListResponse; import org.cotato.csquiz.api.session.dto.UpdateSessionNumberRequest; import org.cotato.csquiz.api.session.dto.UpdateSessionRequest; @@ -162,15 +161,6 @@ public List findSessionsByGenerationId(Long generationId) { .toList(); } - public SessionDetailInfoResponse findSessionDetailInfo(Long sessionId) { - Attendance findAttendance = attendanceRepository.findBySessionId(sessionId) - .orElseThrow(() -> new EntityNotFoundException("해당 출석을 찾을 수 없습니다")); - - return SessionDetailInfoResponse.of(sessionId, - findAttendance.getAttendanceDeadLine(), - findAttendance.getLateDeadLine()); - } - public Session findSessionById(Long sessionId) { return sessionRepository.findById(sessionId) .orElseThrow(() -> new EntityNotFoundException("해당 세션을 찾을 수 없습니다."));