diff --git a/src/main/java/com/example/quizapp/QuizApp/Services/SessionService.java b/src/main/java/com/example/quizapp/QuizApp/Services/SessionService.java index 25497ad..736ac96 100644 --- a/src/main/java/com/example/quizapp/QuizApp/Services/SessionService.java +++ b/src/main/java/com/example/quizapp/QuizApp/Services/SessionService.java @@ -28,6 +28,7 @@ @Service public class SessionService { + @Autowired SessionDAO sessionDAO; @@ -50,6 +51,35 @@ public class SessionService { @Autowired ModelMapper modelMapper; + public Object verifySession(SessionDTO sessionDTO) { + + SessionVerifyDTO sessionVerifyDTO=modelMapper.map(sessionDTO,SessionVerifyDTO.class); + HashMap sessionUserMap=new HashMap<>(); + List questionList=new ArrayList<>(); + + for(QuestionDTO question:sessionDTO.getSessionQuestionList()){ + if(question.getId()!=null){ + if(!questionDAO.existsById(question.getId())){ + throw new BadRequest("question with questionId - "+question.getId().toString()+" doesn't exist"); + } + questionList.add(modelMapper.map(questionDAO.findById(question.getId()).get(),QuestionDTO.class)); + } + else { + questionList.add(question); + } + } + sessionVerifyDTO.setSessionVerifyQuestionList(questionList); + + for(SessionUser sessionUser:sessionDTO.getSessionUserList()){ + if(!userDAO.existsById(sessionUser.getUserId())){ + throw new BadRequest("user with userId - "+sessionUser.getUserId().toString()+" doesn't exist"); + } + sessionUserMap.put(sessionUser.getUserId(),userDAO.findById(sessionUser.getUserId()).get().getUsername()); + } + sessionVerifyDTO.setUserMapList(sessionUserMap); + return sessionVerifyDTO; + } + public record sessionMessage(String message, Long timeLeft){} public SessionDTO createSession(SessionDTO sessionDTO) { diff --git a/src/main/java/com/example/quizapp/QuizApp/controller/SessionController.java b/src/main/java/com/example/quizapp/QuizApp/controller/SessionController.java index 62700ae..897847d 100644 --- a/src/main/java/com/example/quizapp/QuizApp/controller/SessionController.java +++ b/src/main/java/com/example/quizapp/QuizApp/controller/SessionController.java @@ -3,10 +3,7 @@ import com.example.quizapp.QuizApp.Services.SessionService; import com.example.quizapp.QuizApp.Services.UserService; import com.example.quizapp.QuizApp.entity.Session; -import com.example.quizapp.QuizApp.model.Response; -import com.example.quizapp.QuizApp.model.SessionDTO; -import com.example.quizapp.QuizApp.model.SessionResponse; -import com.example.quizapp.QuizApp.model.SessionResult; +import com.example.quizapp.QuizApp.model.*; import com.example.quizapp.QuizApp.security.JwtAuthenticationFilter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.relational.core.sql.In; @@ -65,4 +62,10 @@ public ResponseEntity deleteSession(@PathVariable String sessionId){ return new ResponseEntity<>("Session deleted successfully sessionId = "+sessionId,HttpStatus.OK); } + @PostMapping("/verifySession") + public ResponseEntity getSessionVerify(@RequestBody SessionDTO sessionDTO){ + sessionDTO.setUserId(userService.getUserByUserName(jwtAuthenticationFilter.getUserNameByToken()).getId()); + return new ResponseEntity<>(sessionService.verifySession(sessionDTO),HttpStatus.OK); + } + } diff --git a/src/main/java/com/example/quizapp/QuizApp/dao/QuestionDAO.java b/src/main/java/com/example/quizapp/QuizApp/dao/QuestionDAO.java index 0f541d7..690ddd9 100644 --- a/src/main/java/com/example/quizapp/QuizApp/dao/QuestionDAO.java +++ b/src/main/java/com/example/quizapp/QuizApp/dao/QuestionDAO.java @@ -24,6 +24,8 @@ public interface QuestionDAO extends JpaRepository { @Query(value = "SELECT COUNT(id) FROM question WHERE difficulty= :n",nativeQuery = true) Integer countByDifficulty( @Param("n") String difficulty); + + @Query(value = "SELECT DISTINCT(category) FROM question",nativeQuery = true) List allCategory(); diff --git a/src/main/java/com/example/quizapp/QuizApp/model/SessionVerifyDTO.java b/src/main/java/com/example/quizapp/QuizApp/model/SessionVerifyDTO.java new file mode 100644 index 0000000..a8e0fd7 --- /dev/null +++ b/src/main/java/com/example/quizapp/QuizApp/model/SessionVerifyDTO.java @@ -0,0 +1,29 @@ +package com.example.quizapp.QuizApp.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +import java.util.HashMap; +import java.util.List; + +@Getter +@Setter +@Data + +public class SessionVerifyDTO { + + + Integer sessionId; + String dateAndTime; + Integer delayDuration; + Integer duration; + @JsonProperty(access = JsonProperty.Access.READ_ONLY) + Integer userId; + String sessionTitle; + List sessionVerifyQuestionList; + HashMap userMapList; +} + +