From c419ab47b2b62ebd1218efbcb91cac4ed1c1b51a Mon Sep 17 00:00:00 2001 From: Alix JEUDI--LEMOINE Date: Mon, 25 Mar 2024 19:38:53 +0100 Subject: [PATCH] Ajout service Invite (pas parfait encore, Utilisateurs pas pris en compte seulement Joueur) --- .../controllers/request/InviteRequest.java | 2 + .../sae/services/InviteService.java | 49 ++++++++++++++++++- 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/request/InviteRequest.java diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/request/InviteRequest.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/request/InviteRequest.java new file mode 100644 index 0000000..10a209b --- /dev/null +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/request/InviteRequest.java @@ -0,0 +1,2 @@ +package fr.iut.sciencequest.sae.controllers.request;public class InviteRequest { +} diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/InviteService.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/InviteService.java index ae31836..8eccc19 100644 --- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/InviteService.java +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/InviteService.java @@ -1,2 +1,49 @@ -package fr.iut.sciencequest.sae.services;public class InviteService { +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.exceptions.PartyAlreadyStartedException; +import fr.iut.sciencequest.sae.exceptions.notFound.InviteNotFoundException; +import fr.iut.sciencequest.sae.repositories.JoueurRepository; +import fr.iut.sciencequest.sae.repositories.PartieRepository; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.HashMap; + +@AllArgsConstructor +@Service +public class InviteService { + private final PartieRepository partieRepository; + private final JoueurRepository joueurRepository; + + @PersistenceContext + private EntityManager entityManager; + + @Transactional + public HashMap findByInvite(String invite, String pseudo) { + Partie partie = this.partieRepository.getPartieByCodeInvitation(invite).orElseThrow(() -> new InviteNotFoundException(invite)); + + if(!partie.getStatus().equals("pending")) throw new PartyAlreadyStartedException(); + + HashMap response = new HashMap<>(); + response.put("partieId", partie.getId()); + + Joueur joueur = new Joueur(); + joueur.setPseudo(pseudo); + + joueur = joueurRepository.save(joueur); + + entityManager.createNativeQuery("UPDATE joueur SET idpartie = ? WHERE id = ?") + .setParameter(1, partie.getId()) + .setParameter(2, joueur.getId()) + .executeUpdate(); + + response.put("joueurId", joueur.getId()); + + return response; + } }