diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/PartieKahootController.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/PartieKahootController.java index fc2a5c9..4cd053f 100644 --- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/PartieKahootController.java +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/PartieKahootController.java @@ -5,10 +5,7 @@ import fr.iut.sciencequest.sae.controllers.request.PartieAddJoueurRequest; import fr.iut.sciencequest.sae.controllers.request.PartieRequest; import fr.iut.sciencequest.sae.dto.partie.PartieDTO; import fr.iut.sciencequest.sae.dto.partieKahoot.partie.PartieKahootDTO; -import fr.iut.sciencequest.sae.entities.Joueur; -import fr.iut.sciencequest.sae.entities.Partie; -import fr.iut.sciencequest.sae.entities.PartieKahoot; -import fr.iut.sciencequest.sae.entities.Status; +import fr.iut.sciencequest.sae.entities.*; import fr.iut.sciencequest.sae.exceptions.partie.PartyAlreadyStartedException; import fr.iut.sciencequest.sae.services.*; import jakarta.validation.Valid; @@ -28,7 +25,7 @@ public class PartieKahootController { private final PartieModelAssembler partieModelAssembler; private final PartieKahootService partieKahootService; private final JoueurService joueurService; - private final JeuService jeuService; + private final QuestionService questionService; private final ThematiqueService thematiqueService; private final DifficulteService difficulteService; private final ModelMapper modelMapper; @@ -52,6 +49,8 @@ public class PartieKahootController { partie.setDifficulte(this.difficulteService.findById(request.getIdDifficulte())); + partie.setQuestions(this.questionService.getRandomQuestions(1, partie.getThematiques(), partie.getDifficulte())); + partie = this.partieKahootService.create(partie); return this.modelMapper.map(partie, PartieKahootDTO.class); } diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Reponse.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Reponse.java index fc56bb2..e0a8d54 100644 --- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Reponse.java +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/Reponse.java @@ -18,6 +18,7 @@ public class Reponse{ private String reponse; + @Column(name = "estvalide") private Boolean estValide; @JsonBackReference diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/QuestionRepository.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/QuestionRepository.java index 96a7e12..3c0cb5c 100644 --- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/QuestionRepository.java +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/QuestionRepository.java @@ -1,6 +1,8 @@ package fr.iut.sciencequest.sae.repositories; +import fr.iut.sciencequest.sae.entities.Difficulte; import fr.iut.sciencequest.sae.entities.Question; +import fr.iut.sciencequest.sae.entities.Thematique; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; @@ -8,8 +10,13 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface QuestionRepository extends JpaRepository { @Query("SELECT q FROM Question q JOIN Reponse r ON q.id = r.id WHERE r.scientifique.id = :scientifiqueId") Page findAllQuestionsByScientifiqueId(Pageable page, @Param("scientifiqueId") Integer scientifiqueId); + + @Query("SELECT q FROM Question q JOIN Reponse r ON q.id = r.question.id JOIN Scientifique s ON s.thematique IN :thematiques AND s.id = r.scientifique.id WHERE s.difficulte = :difficulte ORDER BY RANDOM() LIMIT :number") + List getRandomQuestions(@Param("number") int number, @Param("thematiques") List thematiques,@Param("difficulte")Difficulte difficulte); } diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/QuestionService.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/QuestionService.java index b312f90..836b3f1 100644 --- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/QuestionService.java +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/QuestionService.java @@ -1,6 +1,8 @@ package fr.iut.sciencequest.sae.services; +import fr.iut.sciencequest.sae.entities.Difficulte; import fr.iut.sciencequest.sae.entities.Question; +import fr.iut.sciencequest.sae.entities.Thematique; import fr.iut.sciencequest.sae.repositories.QuestionRepository; import fr.iut.sciencequest.sae.repositories.ReponseRepository; import lombok.AllArgsConstructor; @@ -8,6 +10,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import java.util.List; + @AllArgsConstructor @Service public class QuestionService { @@ -22,4 +26,8 @@ public class QuestionService { return questionRepository.findAllQuestionsByScientifiqueId(page, scientifiqueId); } + public List getRandomQuestions(int number, List thematiques, Difficulte difficulte){ + return this.questionRepository.getRandomQuestions(number, thematiques, difficulte); + } + }