ajout thematique selectionnées dans partie

Springboot
Victor SOULIER 1 year ago
parent fd052fe673
commit c5ca57d521

@ -6,11 +6,13 @@ 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.entities.Joueur; import fr.iut.sciencequest.sae.entities.Joueur;
import fr.iut.sciencequest.sae.entities.Partie; import fr.iut.sciencequest.sae.entities.Partie;
import fr.iut.sciencequest.sae.entities.Thematique;
import fr.iut.sciencequest.sae.exceptions.notFound.PartieNotFoundException; import fr.iut.sciencequest.sae.exceptions.notFound.PartieNotFoundException;
import fr.iut.sciencequest.sae.exceptions.partie.PartyAlreadyStartedException; import fr.iut.sciencequest.sae.exceptions.partie.PartyAlreadyStartedException;
import fr.iut.sciencequest.sae.services.JeuService; import fr.iut.sciencequest.sae.services.JeuService;
import fr.iut.sciencequest.sae.services.JoueurService; import fr.iut.sciencequest.sae.services.JoueurService;
import fr.iut.sciencequest.sae.services.PartieService; import fr.iut.sciencequest.sae.services.PartieService;
import fr.iut.sciencequest.sae.services.ThematiqueService;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.modelmapper.ModelMapper; import org.modelmapper.ModelMapper;
@ -18,6 +20,7 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -32,6 +35,7 @@ public class PartieController {
private final PartieService partieService; private final PartieService partieService;
private final JoueurService joueurService; private final JoueurService joueurService;
private final JeuService jeuService; private final JeuService jeuService;
private final ThematiqueService thematiqueService;
private final ModelMapper modelMapper; private final ModelMapper modelMapper;
@RequestMapping(value = "/{codeInvitation}",method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) @RequestMapping(value = "/{codeInvitation}",method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@ -45,6 +49,11 @@ public class PartieController {
Partie partie = new Partie(); Partie partie = new Partie();
partie.setJeu(this.jeuService.findById(request.getIdJeu())); partie.setJeu(this.jeuService.findById(request.getIdJeu()));
partie.setJoueurs(List.of(this.joueurService.findById(request.getIdJoueur()))); partie.setJoueurs(List.of(this.joueurService.findById(request.getIdJoueur())));
partie.setThematiques(new ArrayList<>());
for(int idThematique: request.getThematiques()){
partie.getThematiques().add(this.thematiqueService.findById(idThematique));
}
partie = this.partieService.create(partie); partie = this.partieService.create(partie);
return this.modelMapper.map(partie, PartieDTO.class); return this.modelMapper.map(partie, PartieDTO.class);
} }

@ -2,6 +2,8 @@ package fr.iut.sciencequest.sae.dto.partie;
import fr.iut.sciencequest.sae.dto.jeu.JeuDTO; import fr.iut.sciencequest.sae.dto.jeu.JeuDTO;
import fr.iut.sciencequest.sae.dto.joueur.JoueurSimpleDTO; import fr.iut.sciencequest.sae.dto.joueur.JoueurSimpleDTO;
import fr.iut.sciencequest.sae.dto.thematique.ThematiqueSimpleDTO;
import fr.iut.sciencequest.sae.entities.Thematique;
import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.*; import lombok.*;
@ -25,4 +27,6 @@ public class PartieDTO extends RepresentationModel<PartieDTO> {
private List<JoueurSimpleDTO> joueurs; private List<JoueurSimpleDTO> joueurs;
@NotNull @NotNull
private JeuDTO jeu; private JeuDTO jeu;
@NotEmpty
private List<ThematiqueSimpleDTO> thematiques;
} }

@ -37,4 +37,12 @@ public class Partie {
@Column(name = "datecreation") //default value : see Schema.sql @Column(name = "datecreation") //default value : see Schema.sql
private Date dateCreation; private Date dateCreation;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "thematiqueselectionnee",
joinColumns = @JoinColumn(name = "idpartie"),
inverseJoinColumns = @JoinColumn(name="idthematique")
)
List<Thematique> thematiques;
} }

@ -35,4 +35,7 @@ public class Thematique {
@OneToMany(mappedBy = "thematique") @OneToMany(mappedBy = "thematique")
@Fetch(FetchMode.JOIN) @Fetch(FetchMode.JOIN)
private List<Scientifique> scientifiques; private List<Scientifique> scientifiques;
@ManyToMany(mappedBy = "thematiques")
List<Partie> parties;
} }

@ -12,6 +12,7 @@ DROP TABLE IF EXISTS Joueur CASCADE;
DROP TABLE IF EXISTS Indice CASCADE; DROP TABLE IF EXISTS Indice CASCADE;
DROP TABLE IF EXISTS Scientifique CASCADE; DROP TABLE IF EXISTS Scientifique CASCADE;
DROP TABLE IF EXISTS Thematique CASCADE; DROP TABLE IF EXISTS Thematique CASCADE;
DROP TABLE IF EXISTS ThematiqueSelectionnee CASCADE;
DROP TABLE IF EXISTS Difficulte; DROP TABLE IF EXISTS Difficulte;
@ -150,6 +151,14 @@ CREATE TABLE Decouvrir(
PRIMARY KEY (idUtilisateur, idScientifique) PRIMARY KEY (idUtilisateur, idScientifique)
); );
-- ThematiqueSelectionnee
CREATE TABLE ThematiqueSelectionnee(
idPartie integer REFERENCES Partie(id),
idThematique integer REFERENCES Thematique(id),
PRIMARY KEY (idPartie, idThematique)
);
-- TRIGGERS -- TRIGGERS

Loading…
Cancel
Save