forked from tom.biard/ScienceQuest
parent
e0ca2c700c
commit
491b9c740e
@ -1,39 +1,70 @@
|
|||||||
package fr.iut.sciencequest.sae.services;
|
package fr.iut.sciencequest.sae.services;
|
||||||
|
|
||||||
|
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.exceptions.MalformedPartyException;
|
||||||
|
import fr.iut.sciencequest.sae.exceptions.notFound.JeuNotFoundException;
|
||||||
import fr.iut.sciencequest.sae.exceptions.notFound.PartieNotFoundException;
|
import fr.iut.sciencequest.sae.exceptions.notFound.PartieNotFoundException;
|
||||||
import fr.iut.sciencequest.sae.repositories.PartieRepository;
|
import fr.iut.sciencequest.sae.repositories.*;
|
||||||
|
import jakarta.persistence.EntityManager;
|
||||||
|
import jakarta.persistence.PersistenceContext;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Service
|
@Service
|
||||||
public class PartieService {
|
public class PartieService {
|
||||||
private final PartieRepository partieRepository;
|
private final PartieRepository partieRepository;
|
||||||
/*private final JeuRepository jeuRepository;
|
private final JeuRepository jeuRepository;
|
||||||
|
private final JoueurRepository joueurRepository;
|
||||||
private final UtilisateurRepository utilisateurRepository;
|
private final UtilisateurRepository utilisateurRepository;
|
||||||
private final ThematiqueRepository thematiqueRepository;
|
private final ThematiqueRepository thematiqueRepository;
|
||||||
private final DifficulteRepository difficulteRepository;*/
|
private final DifficulteRepository difficulteRepository;
|
||||||
|
|
||||||
|
@PersistenceContext
|
||||||
|
private EntityManager entityManager;
|
||||||
|
|
||||||
public Partie findById(int id) {
|
public Partie findById(int id) {
|
||||||
return this.partieRepository.findById(id).orElseThrow(() ->
|
return this.partieRepository.findById(id).orElseThrow(() ->
|
||||||
new PartieNotFoundException("Partie", id)
|
new PartieNotFoundException("Partie", id)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
public Partie create(Integer idJeu, Integer idUtilisateur, List<Integer> thematiques, Integer idDifficulte) {
|
|
||||||
/*try {
|
@Transactional
|
||||||
Jeu jeu = jeuService.findById(idJeu);
|
public Partie create(Integer idJeu, String pseudo, List<Integer> thematiques, Integer idDifficulte) {
|
||||||
|
// Création du joueur
|
||||||
if(partie.getJeu().getNom() == null) {
|
Joueur joueur = new Joueur();
|
||||||
throw new MalformedPartyException("Party's game id is not given or is a false value");
|
joueur.setPseudo(pseudo);
|
||||||
}
|
|
||||||
|
// Sauvegarder le joueur
|
||||||
return this.partieRepository.save(partie);
|
joueur = joueurRepository.save(joueur);
|
||||||
} catch (DataIntegrityViolationException e) {
|
|
||||||
throw new DuplicatedFieldException("ERREUR : il existe déjà une partie : " + partie.getId() + " en base");
|
// Création de la partie
|
||||||
}*/
|
Partie partie = new Partie(
|
||||||
return new Partie();
|
0,
|
||||||
|
entityManager.createNativeQuery("SELECT make_uid()").getSingleResult().toString(),
|
||||||
|
List.of(joueur),
|
||||||
|
jeuRepository.findById(idJeu).orElseThrow(() -> new JeuNotFoundException(idJeu)),
|
||||||
|
"pending",
|
||||||
|
new Date()
|
||||||
|
);
|
||||||
|
|
||||||
|
// Sauvegarder la partie pour générer le codeInvitation
|
||||||
|
partie = partieRepository.save(partie);
|
||||||
|
|
||||||
|
// Modification du joueur pour ajouter la partie
|
||||||
|
entityManager.createNativeQuery("UPDATE joueur SET idpartie = ? WHERE id = ?")
|
||||||
|
.setParameter(1, partie.getId())
|
||||||
|
.setParameter(2, joueur.getId())
|
||||||
|
.executeUpdate();
|
||||||
|
|
||||||
|
// Récupérer la partie mise à jour avec le joueur
|
||||||
|
return partieRepository.findById(partie.getId())
|
||||||
|
.orElseThrow(MalformedPartyException::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in new issue