ajout difficulte selectionnée dans partie

Springboot
Victor SOULIER 1 year ago
parent c5ca57d521
commit 7a878f9fb4

@ -9,10 +9,7 @@ import fr.iut.sciencequest.sae.entities.Partie;
import fr.iut.sciencequest.sae.entities.Thematique; 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.*;
import fr.iut.sciencequest.sae.services.JoueurService;
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;
@ -36,6 +33,7 @@ public class PartieController {
private final JoueurService joueurService; private final JoueurService joueurService;
private final JeuService jeuService; private final JeuService jeuService;
private final ThematiqueService thematiqueService; private final ThematiqueService thematiqueService;
private final DifficulteService difficulteService;
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)
@ -47,13 +45,18 @@ public class PartieController {
@ResponseStatus(HttpStatus.CREATED) @ResponseStatus(HttpStatus.CREATED)
public PartieDTO createPartie(@RequestBody @Valid PartieRequest request) { public PartieDTO createPartie(@RequestBody @Valid PartieRequest request) {
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<>()); partie.setThematiques(new ArrayList<>());
for(int idThematique: request.getThematiques()){ for(int idThematique: request.getThematiques()){
partie.getThematiques().add(this.thematiqueService.findById(idThematique)); partie.getThematiques().add(this.thematiqueService.findById(idThematique));
} }
partie.setDifficulte(this.difficulteService.findById(request.getIdDifficulte()));
partie = this.partieService.create(partie); partie = this.partieService.create(partie);
return this.modelMapper.map(partie, PartieDTO.class); return this.modelMapper.map(partie, PartieDTO.class);
} }

@ -1,5 +1,6 @@
package fr.iut.sciencequest.sae.controllers.request; package fr.iut.sciencequest.sae.controllers.request;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
@ -12,6 +13,9 @@ public class PartieRequest {
@NotNull @NotNull
private int idJoueur; private int idJoueur;
@NotEmpty
private List<Integer> thematiques; private List<Integer> thematiques;
@NotNull
private Integer idDifficulte; private Integer idDifficulte;
} }

@ -1,5 +1,6 @@
package fr.iut.sciencequest.sae.dto.partie; package fr.iut.sciencequest.sae.dto.partie;
import fr.iut.sciencequest.sae.dto.difficulte.DifficulteSimpleDTO;
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.dto.thematique.ThematiqueSimpleDTO;
@ -29,4 +30,6 @@ public class PartieDTO extends RepresentationModel<PartieDTO> {
private JeuDTO jeu; private JeuDTO jeu;
@NotEmpty @NotEmpty
private List<ThematiqueSimpleDTO> thematiques; private List<ThematiqueSimpleDTO> thematiques;
@NotNull
private DifficulteSimpleDTO difficulte;
} }

@ -44,5 +44,9 @@ public class Partie {
joinColumns = @JoinColumn(name = "idpartie"), joinColumns = @JoinColumn(name = "idpartie"),
inverseJoinColumns = @JoinColumn(name="idthematique") inverseJoinColumns = @JoinColumn(name="idthematique")
) )
List<Thematique> thematiques; private List<Thematique> thematiques;
@ManyToOne
@JoinColumn(name="iddifficulte", nullable = false)
private Difficulte difficulte;
} }

@ -1,6 +1,9 @@
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.Difficulte;
import fr.iut.sciencequest.sae.entities.Thematique;
import fr.iut.sciencequest.sae.exceptions.notFound.DifficulteNotFoundException;
import fr.iut.sciencequest.sae.exceptions.notFound.ThematiqueNotFoundException;
import fr.iut.sciencequest.sae.repositories.DifficulteRepository; import fr.iut.sciencequest.sae.repositories.DifficulteRepository;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
@ -17,4 +20,10 @@ public class DifficulteService {
public Page<Difficulte> findAll(Pageable p){ public Page<Difficulte> findAll(Pageable p){
return this.difficulteRepository.findAll(p); return this.difficulteRepository.findAll(p);
} }
public Difficulte findById(int id) {
return this.difficulteRepository.findById(id).orElseThrow(() ->
new DifficulteNotFoundException(id)
);
}
} }

@ -114,6 +114,7 @@ CREATE TABLE Partie(
id SERIAL PRIMARY KEY, id SERIAL PRIMARY KEY,
codeInvitation varchar(5) UNIQUE DEFAULT make_uid(), codeInvitation varchar(5) UNIQUE DEFAULT make_uid(),
idJeu integer REFERENCES Jeu(id), idJeu integer REFERENCES Jeu(id),
idDifficulte integer REFERENCES Difficulte(id),
status varchar(128) DEFAULT 'pending', status varchar(128) DEFAULT 'pending',
dateCreation timestamp DEFAULT CURRENT_TIMESTAMP dateCreation timestamp DEFAULT CURRENT_TIMESTAMP
); );

Loading…
Cancel
Save