Skip to content

Commit

Permalink
Merge pull request #245 from swm-standard/rin/swm-188
Browse files Browse the repository at this point in the history
Feat: readExamResults 구현
  • Loading branch information
RinRinPARK authored Oct 6, 2024
2 parents 6b31bb0 + 81cc767 commit a3a1519
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import com.swm_standard.phote.dto.GradeExamRequest
import com.swm_standard.phote.dto.GradeExamResponse
import com.swm_standard.phote.dto.ReadExamHistoryDetailResponse
import com.swm_standard.phote.dto.ReadExamHistoryListResponse
import com.swm_standard.phote.dto.ReadExamResultsResponse
import com.swm_standard.phote.service.ExamService
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.Parameter
Expand Down Expand Up @@ -48,6 +49,16 @@ class ExamController(
): BaseResponse<List<ReadExamHistoryListResponse>> =
BaseResponse(msg = "문제풀이 기록 리스트 조회 성공", data = examService.readExamHistoryList(workbookId))

@Operation(summary = "readExamResults", description = "(강사가) 학생들의 시험 결과 목록을 조회")
@SecurityRequirement(name = "bearer Auth")
@GetMapping("/exams/result/{examId}")
fun readExamResults(
@PathVariable(
required = true,
) examId: UUID,
): BaseResponse<ReadExamResultsResponse> =
BaseResponse(msg = "학생 시험 결과 조회 성공", data = examService.readExamResults(examId))

@Operation(summary = "gradeExam", description = "문제풀이 제출 및 채점")
@SecurityRequirement(name = "bearer Auth")
@PostMapping("/exam/{workbookId}")
Expand Down
13 changes: 13 additions & 0 deletions src/main/kotlin/com/swm_standard/phote/dto/ExamDtos.kt
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,19 @@ data class ReadExamHistoryListResponse(
val sequence: Int,
)

data class ReadExamStudentResult(
val userId: UUID,
val name: String,
val score: Int,
val time: Int,
)

data class ReadExamResultsResponse(
val examId: UUID,
val totalQuestionCount: Int,
val students: List<ReadExamStudentResult>,
)

data class GradeExamRequest(
val time: Int,
val answers: List<SubmittedAnswerRequest>,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ import java.util.UUID

interface ExamResultRepository : JpaRepository<ExamResult, UUID> {
fun findByExamId(examId: UUID): ExamResult?
fun findAllByExamId(examId: UUID): List<ExamResult>
}
18 changes: 18 additions & 0 deletions src/main/kotlin/com/swm_standard/phote/service/ExamService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ import com.swm_standard.phote.dto.GradeExamResponse
import com.swm_standard.phote.dto.ReadExamHistoryDetail
import com.swm_standard.phote.dto.ReadExamHistoryDetailResponse
import com.swm_standard.phote.dto.ReadExamHistoryListResponse
import com.swm_standard.phote.dto.ReadExamStudentResult
import com.swm_standard.phote.dto.ReadExamResultsResponse
import com.swm_standard.phote.dto.SubmittedAnswerRequest
import com.swm_standard.phote.entity.Answer
import com.swm_standard.phote.entity.Category
Expand Down Expand Up @@ -104,6 +106,22 @@ class ExamService(
}
}

fun readExamResults(examId: UUID): ReadExamResultsResponse {
val exam = examRepository.findById(examId).orElseThrow { NotFoundException(fieldName = "examId") }
val examResults = examResultRepository.findAllByExamId(examId)

val responses = examResults.map { examResult ->
ReadExamStudentResult(
examResult.member.id,
examResult.member.name,
examResult.totalCorrect,
examResult.time,
)
}

return ReadExamResultsResponse(examId, exam.workbook.quantity, responses)
}

@Transactional
fun gradeExam(
workbookId: UUID,
Expand Down

0 comments on commit a3a1519

Please sign in to comment.