correction many2many en vu de l'utilisation du stockage des réponses des joueurs par questoins

Springboot
Victor SOULIER 1 year ago
parent c646d15a25
commit 5cb6e5c108

@ -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.dto.partieKahoot.PartieKahootStatusDTO;
import fr.iut.sciencequest.sae.entities.*; import fr.iut.sciencequest.sae.entities.*;
import fr.iut.sciencequest.sae.exceptions.partie.PartyAlreadyStartedException; 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.repositories.ScorePartieKahootJoueurRepository;
import fr.iut.sciencequest.sae.services.*; import fr.iut.sciencequest.sae.services.*;
import jakarta.validation.Valid; import jakarta.validation.Valid;
@ -24,6 +25,7 @@ import java.util.List;
public class PartieKahootController { public class PartieKahootController {
private static final int NOMBRE_QUESTION = 2; private static final int NOMBRE_QUESTION = 2;
private final QuestionPartieKahootRepository questionPartieKahootRepository;
private final ScorePartieKahootJoueurRepository scorePartieKahootJoueurRepository; private final ScorePartieKahootJoueurRepository scorePartieKahootJoueurRepository;
private final PartieKahootService partieKahootService; private final PartieKahootService partieKahootService;
private final JoueurService joueurService; private final JoueurService joueurService;
@ -49,9 +51,6 @@ public class PartieKahootController {
} }
partie.setDifficulte(this.difficulteService.findById(request.getIdDifficulte())); partie.setDifficulte(this.difficulteService.findById(request.getIdDifficulte()));
partie.setQuestions(this.questionService.getRandomQuestions(NOMBRE_QUESTION, partie.getThematiques(), partie.getDifficulte()));
partie = this.partieKahootService.create(partie); partie = this.partieKahootService.create(partie);
//setup score //setup score
@ -61,6 +60,18 @@ public class PartieKahootController {
score.setPartie(partie); score.setPartie(partie);
this.scorePartieKahootJoueurRepository.save(score); this.scorePartieKahootJoueurRepository.save(score);
//setup question
List<Question> 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); return this.modelMapper.map(partie, PartieKahootDTO.class);
} }
@ -90,7 +101,7 @@ public class PartieKahootController {
throw new PartyAlreadyStartedException(); throw new PartyAlreadyStartedException();
} }
partieKahoot.setStatus(Status.Started); partieKahoot.setStatus(Status.Started);
partieKahoot.setQuestionActuel(partieKahoot.getQuestions().getFirst()); partieKahoot.setQuestionActuel(partieKahoot.getQuestions().getFirst().getQuestion());
partieKahoot = this.partieKahootService.update(partieKahoot); partieKahoot = this.partieKahootService.update(partieKahoot);
return this.modelMapper.map(partieKahoot, PartieKahootStatusDTO.class); return this.modelMapper.map(partieKahoot, PartieKahootStatusDTO.class);
} }

@ -7,6 +7,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List; import java.util.List;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ -22,15 +23,13 @@ public class PartieKahoot extends Partie {
@JoinColumn(name="idquestionactuel") @JoinColumn(name="idquestionactuel")
private Question questionActuel; private Question questionActuel;
//private Date tempsLimiteReponse;
@JsonManagedReference @JsonManagedReference
@ManyToMany(fetch = FetchType.EAGER) @OneToMany(mappedBy = "partie", fetch = FetchType.EAGER)
@JoinTable( private List<QuestionPartieKahoot> questions;
name = "Questionpartiekahoot",
joinColumns = @JoinColumn(name = "idpartiekahoot"),
inverseJoinColumns = @JoinColumn(name="idquestion")
)
private List<Question> questions;
@JsonManagedReference
@OneToMany(mappedBy = "partie", fetch = FetchType.EAGER) @OneToMany(mappedBy = "partie", fetch = FetchType.EAGER)
private List<ScorePartieKahootJoueur> scores; private List<ScorePartieKahootJoueur> scores;
} }

@ -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;
}

@ -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;
}

@ -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<QuestionPartieKahoot, QuestionPartieKahootKey> {}
Loading…
Cancel
Save