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 d3a7f2f..02c4578 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 @@ -6,6 +6,7 @@ import fr.iut.sciencequest.sae.dto.partieKahoot.PartieKahootDTO; import fr.iut.sciencequest.sae.dto.partieKahoot.PartieKahootStatusDTO; import fr.iut.sciencequest.sae.entities.*; import fr.iut.sciencequest.sae.exceptions.partie.PartyAlreadyStartedException; +import fr.iut.sciencequest.sae.repositories.QuestionPartieKahootRepository; import fr.iut.sciencequest.sae.repositories.ScorePartieKahootJoueurRepository; import fr.iut.sciencequest.sae.services.*; import jakarta.validation.Valid; @@ -24,6 +25,7 @@ import java.util.List; public class PartieKahootController { private static final int NOMBRE_QUESTION = 2; + private final QuestionPartieKahootRepository questionPartieKahootRepository; private final ScorePartieKahootJoueurRepository scorePartieKahootJoueurRepository; private final PartieKahootService partieKahootService; private final JoueurService joueurService; @@ -49,9 +51,6 @@ public class PartieKahootController { } partie.setDifficulte(this.difficulteService.findById(request.getIdDifficulte())); - - partie.setQuestions(this.questionService.getRandomQuestions(NOMBRE_QUESTION, partie.getThematiques(), partie.getDifficulte())); - partie = this.partieKahootService.create(partie); //setup score @@ -61,6 +60,18 @@ public class PartieKahootController { score.setPartie(partie); this.scorePartieKahootJoueurRepository.save(score); + //setup question + List questions = this.questionService.getRandomQuestions(NOMBRE_QUESTION, partie.getThematiques(), partie.getDifficulte()); + for(Question question: questions){ + QuestionPartieKahoot questionPartie = new QuestionPartieKahoot(); + questionPartie.setId(new QuestionPartieKahootKey(question.getId(), partie.getId())); + questionPartie.setQuestion(question); + questionPartie.setPartie(partie); + this.questionPartieKahootRepository.save(questionPartie); + } + + partie = this.partieKahootService.findById(partie.getId()); + return this.modelMapper.map(partie, PartieKahootDTO.class); } @@ -90,7 +101,7 @@ public class PartieKahootController { throw new PartyAlreadyStartedException(); } partieKahoot.setStatus(Status.Started); - partieKahoot.setQuestionActuel(partieKahoot.getQuestions().getFirst()); + partieKahoot.setQuestionActuel(partieKahoot.getQuestions().getFirst().getQuestion()); partieKahoot = this.partieKahootService.update(partieKahoot); return this.modelMapper.map(partieKahoot, PartieKahootStatusDTO.class); } diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/PartieKahoot.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/PartieKahoot.java index f96f455..92dc090 100644 --- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/PartieKahoot.java +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/PartieKahoot.java @@ -7,6 +7,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; +import java.util.Date; import java.util.List; @EqualsAndHashCode(callSuper = true) @@ -22,15 +23,13 @@ public class PartieKahoot extends Partie { @JoinColumn(name="idquestionactuel") private Question questionActuel; + //private Date tempsLimiteReponse; + @JsonManagedReference - @ManyToMany(fetch = FetchType.EAGER) - @JoinTable( - name = "Questionpartiekahoot", - joinColumns = @JoinColumn(name = "idpartiekahoot"), - inverseJoinColumns = @JoinColumn(name="idquestion") - ) - private List questions; + @OneToMany(mappedBy = "partie", fetch = FetchType.EAGER) + private List questions; + @JsonManagedReference @OneToMany(mappedBy = "partie", fetch = FetchType.EAGER) private List scores; } diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/QuestionPartieKahoot.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/QuestionPartieKahoot.java new file mode 100644 index 0000000..d70595c --- /dev/null +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/QuestionPartieKahoot.java @@ -0,0 +1,31 @@ +package fr.iut.sciencequest.sae.entities; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@AllArgsConstructor +@NoArgsConstructor +@Data +@Entity +@Table(name="questionpartiekahoot") +public class QuestionPartieKahoot { + @EmbeddedId + private QuestionPartieKahootKey id = new QuestionPartieKahootKey(); + + @JsonBackReference + @ManyToOne + @MapsId("idQuestion") + @JoinColumn(name = "idquestion") + private Question question; + + @JsonBackReference + @ManyToOne + @MapsId("idPartieKahoot") + @JoinColumn(name="idpartiekahoot") + private PartieKahoot partie; +} diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/QuestionPartieKahootKey.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/QuestionPartieKahootKey.java new file mode 100644 index 0000000..fb96e55 --- /dev/null +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/entities/QuestionPartieKahootKey.java @@ -0,0 +1,22 @@ +package fr.iut.sciencequest.sae.entities; + + +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@AllArgsConstructor +@NoArgsConstructor +@Data +@Embeddable +public class QuestionPartieKahootKey implements Serializable { + @Column(name="idquestion") + private Integer idQuestion; + + @Column(name="idpartiekahoot") + private Integer idPartieKahoot; +} diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/QuestionPartieKahootRepository.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/QuestionPartieKahootRepository.java new file mode 100644 index 0000000..7b1ba11 --- /dev/null +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/repositories/QuestionPartieKahootRepository.java @@ -0,0 +1,9 @@ +package fr.iut.sciencequest.sae.repositories; + +import fr.iut.sciencequest.sae.entities.QuestionPartieKahoot; +import fr.iut.sciencequest.sae.entities.QuestionPartieKahootKey; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface QuestionPartieKahootRepository extends CrudRepository {}