diff --git a/src/main/java/com/be08/smart_notes/controller/QuizController.java b/src/main/java/com/be08/smart_notes/controller/QuizController.java index db2375a..f240c60 100644 --- a/src/main/java/com/be08/smart_notes/controller/QuizController.java +++ b/src/main/java/com/be08/smart_notes/controller/QuizController.java @@ -4,6 +4,7 @@ import com.be08.smart_notes.dto.response.ApiResponse; import com.be08.smart_notes.dto.response.QuizResponse; import com.be08.smart_notes.dto.view.QuizView; +import com.be08.smart_notes.dto.view.View; import com.be08.smart_notes.service.QuizService; import com.be08.smart_notes.validation.group.OnCreate; import com.be08.smart_notes.validation.group.OnUpdate; @@ -16,6 +17,8 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequestMapping("/api/quizzes") @RequiredArgsConstructor @@ -34,6 +37,17 @@ public ResponseEntity createQuiz(@RequestBody @Validated(OnCreate.class) return ResponseEntity.status(HttpStatus.CREATED).body(apiResponse); } + @GetMapping + @JsonView(QuizView.Basic.class) + public ResponseEntity getAllQuizzes() { + List quizResponseList = quizService.getAllQuizzes(); + ApiResponse apiResponse = ApiResponse.builder() + .message("Quizzes fetched successfully") + .data(quizResponseList) + .build(); + return ResponseEntity.status(HttpStatus.OK).body(apiResponse); + } + @GetMapping("/{id}") @JsonView(QuizView.Detail.class) public ResponseEntity getQuiz(@PathVariable int id) { @@ -45,7 +59,7 @@ public ResponseEntity getQuiz(@PathVariable int id) { return ResponseEntity.status(HttpStatus.OK).body(apiResponse); } - @PutMapping("/{id}") + @PatchMapping("/{id}") @JsonView(QuizView.Detail.class) public ResponseEntity updateQuiz(@PathVariable int id, @Validated(OnUpdate.class) @RequestBody QuizUpsertDTO request) { QuizResponse quizResponse = quizService.updateQuiz(id, request); diff --git a/src/main/java/com/be08/smart_notes/controller/QuizSetController.java b/src/main/java/com/be08/smart_notes/controller/QuizSetController.java index eb1a205..dcc9abf 100644 --- a/src/main/java/com/be08/smart_notes/controller/QuizSetController.java +++ b/src/main/java/com/be08/smart_notes/controller/QuizSetController.java @@ -68,7 +68,7 @@ public ResponseEntity getQuizSet(@PathVariable int id) { return ResponseEntity.status(HttpStatus.OK).body(apiResponse); } - @PutMapping("/{id}") + @PatchMapping("/{id}") @JsonView(QuizView.Detail.class) public ResponseEntity updateQuizSet(@PathVariable int id, @RequestBody QuizSetUpsertRequest request) { QuizSetResponse quizSetResponse = quizSetService.updateQuizSet(id, request); diff --git a/src/main/java/com/be08/smart_notes/mapper/QuizMapper.java b/src/main/java/com/be08/smart_notes/mapper/QuizMapper.java index 3c2cab2..037a6bc 100644 --- a/src/main/java/com/be08/smart_notes/mapper/QuizMapper.java +++ b/src/main/java/com/be08/smart_notes/mapper/QuizMapper.java @@ -17,6 +17,7 @@ public interface QuizMapper { // Quiz Entity <--> QuizResponse dto @Mapping(target = "quizSetId", source = "entity.quizSet.id") QuizResponse toQuizResponse(Quiz entity); + List toQuizResponseList(List entity); Quiz toQuiz(QuizResponse dto); // Quiz Entity <--> QuizUpsertDTO diff --git a/src/main/java/com/be08/smart_notes/repository/QuizRepository.java b/src/main/java/com/be08/smart_notes/repository/QuizRepository.java index 66fdc12..2482bdf 100644 --- a/src/main/java/com/be08/smart_notes/repository/QuizRepository.java +++ b/src/main/java/com/be08/smart_notes/repository/QuizRepository.java @@ -4,8 +4,10 @@ import com.be08.smart_notes.model.Quiz; +import java.util.List; import java.util.Optional; public interface QuizRepository extends JpaRepository { Optional findByIdAndQuizSetUserId(int id, int userId); + List findAllByQuizSetUserId(int userId); } diff --git a/src/main/java/com/be08/smart_notes/service/QuizService.java b/src/main/java/com/be08/smart_notes/service/QuizService.java index 3183856..37a1c4f 100644 --- a/src/main/java/com/be08/smart_notes/service/QuizService.java +++ b/src/main/java/com/be08/smart_notes/service/QuizService.java @@ -14,6 +14,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.List; + @Service @RequiredArgsConstructor @FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true) @@ -62,6 +64,18 @@ public QuizResponse getQuizById(int quizId) { return quizMapper.toQuizResponse(quiz); } + /** + * Get all quiz and its questions based on given id + * @return quiz response list dto + */ + public List getAllQuizzes() { + int currentUserId = authorizationService.getCurrentUserId(); + + List quizzes = quizRepository.findAllByQuizSetUserId(currentUserId); + + return quizMapper.toQuizResponseList(quizzes); + } + /** * Update quiz information * @param quizId id of target quiz