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.exceptions.notFound.PartieNotFoundException;
import fr.iut.sciencequest.sae.exceptions.partie.PartyAlreadyStartedException;
import fr.iut.sciencequest.sae.services.JeuService;
import fr.iut.sciencequest.sae.services.JoueurService;
import fr.iut.sciencequest.sae.services.PartieService;
import fr.iut.sciencequest.sae.services.ThematiqueService;
import fr.iut.sciencequest.sae.services.*;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import org.modelmapper.ModelMapper;
@ -36,6 +33,7 @@ public class PartieController {
private final JoueurService joueurService;
private final JeuService jeuService;
private final ThematiqueService thematiqueService;
private final DifficulteService difficulteService;
private final ModelMapper modelMapper;
@RequestMapping(value = "/{codeInvitation}",method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@ -47,13 +45,18 @@ public class PartieController {
@ResponseStatus(HttpStatus.CREATED)
public PartieDTO createPartie(@RequestBody @Valid PartieRequest request) {
Partie partie = new Partie();
partie.setJeu(this.jeuService.findById(request.getIdJeu()));
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.setDifficulte(this.difficulteService.findById(request.getIdDifficulte()));
partie = this.partieService.create(partie);
return this.modelMapper.map(partie, PartieDTO.class);
}

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

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

@ -44,5 +44,9 @@ public class Partie {
joinColumns = @JoinColumn(name = "idpartie"),
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;
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 org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
@ -17,4 +20,10 @@ public class DifficulteService {
public Page<Difficulte> findAll(Pageable 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,
codeInvitation varchar(5) UNIQUE DEFAULT make_uid(),
idJeu integer REFERENCES Jeu(id),
idDifficulte integer REFERENCES Difficulte(id),
status varchar(128) DEFAULT 'pending',
dateCreation timestamp DEFAULT CURRENT_TIMESTAMP
);

Loading…
Cancel
Save