ajout requête récupération questions random selon difficulte et thematique

Springboot
Victor SOULIER 1 year ago
parent 649f9431c6
commit faf5014cfe

@ -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.controllers.request.PartieRequest;
import fr.iut.sciencequest.sae.dto.partie.PartieDTO; import fr.iut.sciencequest.sae.dto.partie.PartieDTO;
import fr.iut.sciencequest.sae.dto.partieKahoot.partie.PartieKahootDTO; import fr.iut.sciencequest.sae.dto.partieKahoot.partie.PartieKahootDTO;
import fr.iut.sciencequest.sae.entities.Joueur; import fr.iut.sciencequest.sae.entities.*;
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.exceptions.partie.PartyAlreadyStartedException; import fr.iut.sciencequest.sae.exceptions.partie.PartyAlreadyStartedException;
import fr.iut.sciencequest.sae.services.*; import fr.iut.sciencequest.sae.services.*;
import jakarta.validation.Valid; import jakarta.validation.Valid;
@ -28,7 +25,7 @@ public class PartieKahootController {
private final PartieModelAssembler partieModelAssembler; private final PartieModelAssembler partieModelAssembler;
private final PartieKahootService partieKahootService; private final PartieKahootService partieKahootService;
private final JoueurService joueurService; private final JoueurService joueurService;
private final JeuService jeuService; private final QuestionService questionService;
private final ThematiqueService thematiqueService; private final ThematiqueService thematiqueService;
private final DifficulteService difficulteService; private final DifficulteService difficulteService;
private final ModelMapper modelMapper; private final ModelMapper modelMapper;
@ -52,6 +49,8 @@ public class PartieKahootController {
partie.setDifficulte(this.difficulteService.findById(request.getIdDifficulte())); partie.setDifficulte(this.difficulteService.findById(request.getIdDifficulte()));
partie.setQuestions(this.questionService.getRandomQuestions(1, partie.getThematiques(), partie.getDifficulte()));
partie = this.partieKahootService.create(partie); partie = this.partieKahootService.create(partie);
return this.modelMapper.map(partie, PartieKahootDTO.class); return this.modelMapper.map(partie, PartieKahootDTO.class);
} }

@ -18,6 +18,7 @@ public class Reponse{
private String reponse; private String reponse;
@Column(name = "estvalide")
private Boolean estValide; private Boolean estValide;
@JsonBackReference @JsonBackReference

@ -1,6 +1,8 @@
package fr.iut.sciencequest.sae.repositories; 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.Question;
import fr.iut.sciencequest.sae.entities.Thematique;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository; 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.data.repository.query.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
@Repository @Repository
public interface QuestionRepository extends JpaRepository<Question, Integer> { public interface QuestionRepository extends JpaRepository<Question, Integer> {
@Query("SELECT q FROM Question q JOIN Reponse r ON q.id = r.id WHERE r.scientifique.id = :scientifiqueId") @Query("SELECT q FROM Question q JOIN Reponse r ON q.id = r.id WHERE r.scientifique.id = :scientifiqueId")
Page<Question> findAllQuestionsByScientifiqueId(Pageable page, @Param("scientifiqueId") Integer scientifiqueId); Page<Question> 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<Question> getRandomQuestions(@Param("number") int number, @Param("thematiques") List<Thematique> thematiques,@Param("difficulte")Difficulte difficulte);
} }

@ -1,6 +1,8 @@
package fr.iut.sciencequest.sae.services; 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.Question;
import fr.iut.sciencequest.sae.entities.Thematique;
import fr.iut.sciencequest.sae.repositories.QuestionRepository; import fr.iut.sciencequest.sae.repositories.QuestionRepository;
import fr.iut.sciencequest.sae.repositories.ReponseRepository; import fr.iut.sciencequest.sae.repositories.ReponseRepository;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -8,6 +10,8 @@ import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
@AllArgsConstructor @AllArgsConstructor
@Service @Service
public class QuestionService { public class QuestionService {
@ -22,4 +26,8 @@ public class QuestionService {
return questionRepository.findAllQuestionsByScientifiqueId(page, scientifiqueId); return questionRepository.findAllQuestionsByScientifiqueId(page, scientifiqueId);
} }
public List<Question> getRandomQuestions(int number, List<Thematique> thematiques, Difficulte difficulte){
return this.questionRepository.getRandomQuestions(number, thematiques, difficulte);
}
} }

Loading…
Cancel
Save