Skip to content

Commit

Permalink
Feature: 세션 출석 시간 반환 기능 구현 (#112)
Browse files Browse the repository at this point in the history
* feat: 세션 시간 반환 기능 구현

* feat: 세션 목록 반환 시 세션 장소 추가

* docs: 세션 시간 반환 API 스웨거 설명 변경

* refactor: 세션 시간 반환 API 패키지 변경 및 메소드 명 변경
  • Loading branch information
gikhoon authored Aug 20, 2024
1 parent 5810d17 commit 7203ea5
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -50,6 +52,12 @@ public ResponseEntity<Void> updateAttendance(@RequestBody @Valid UpdateAttendanc
return ResponseEntity.noContent().build();
}

@Operation(summary = "세션 시간 반환 API")
@GetMapping("/info")
public ResponseEntity<AttendanceTimeResponse> findAttendanceTimeInfo(@RequestParam("sessionId") Long sessionId) {
return ResponseEntity.status(HttpStatus.OK).body(attendanceService.findAttendanceTimeInfo(sessionId));
}

@Operation(summary = "회원 출결사항 기간 단위 조회 API")
@GetMapping("/records")
public ResponseEntity<List<AttendanceRecordResponse>> findAttendanceRecords(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package org.cotato.csquiz.api.attendance.dto;

import java.time.LocalDateTime;
import java.time.LocalTime;

public record AttendanceTimeResponse(
Long sessionId,
LocalTime attendanceDeadLine,
LocalTime lateDeadLine
) {
public static AttendanceTimeResponse of(Long sessionId, LocalDateTime attendanceDeadLine, LocalDateTime lateDeadLine) {
return new AttendanceTimeResponse(
sessionId,
attendanceDeadLine.toLocalTime(),
lateDeadLine.toLocalTime()
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ public ResponseEntity<List<SessionListResponse>> findSessionsByGenerationId(@Req
return ResponseEntity.status(HttpStatus.OK).body(sessionService.findSessionsByGenerationId(generationId));
}


@Operation(summary = "CS ON인 세션 목록 반환 API")
@GetMapping("/cs-on")
public ResponseEntity<List<CsEducationOnSessionNumberResponse>> findAllCsOnSessionsByGenerationId(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ public record SessionListResponse(
List<SessionListImageInfoResponse> imageInfos,
String description,
Long generationId,
String placeName,
SessionContents sessionContents
) {
public static SessionListResponse of(Session session, List<SessionImage> sessionImages) {
Expand All @@ -24,6 +25,7 @@ public static SessionListResponse of(Session session, List<SessionImage> session
.toList(),
session.getDescription(),
session.getGeneration().getId(),
session.getPlaceName(),
session.getSessionContents()
);
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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());
}
}

0 comments on commit 7203ea5

Please sign in to comment.