diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/PartieKahootController.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/PartieKahootController.java index cfc869a..82528fd 100644 --- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/PartieKahootController.java +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/controllers/PartieKahootController.java @@ -8,6 +8,7 @@ import fr.iut.sciencequest.sae.dto.partieKahoot.PartieKahootQuestionDTO; import fr.iut.sciencequest.sae.dto.partieKahoot.PartieKahootStatusDTO; import fr.iut.sciencequest.sae.dto.reponse.ReponseValideDTO; import fr.iut.sciencequest.sae.entities.*; +import fr.iut.sciencequest.sae.exceptions.notFound.ScorePartieKahootJoueurNotFound; import fr.iut.sciencequest.sae.exceptions.partie.*; import fr.iut.sciencequest.sae.repositories.QuestionPartieKahootRepository; import fr.iut.sciencequest.sae.repositories.ReponsePartieKahootRepository; @@ -170,6 +171,13 @@ public class PartieKahootController { reponsePartie.setJoueur(joueur); this.reponsePartieKahootRepository.save(reponsePartie); + ScorePartieKahootJoueur scorePartieKahootJoueur = partieKahoot.getScores().stream().filter(socre -> socre.getJoueur().getId() == joueur.getId()) + .findFirst() + .orElseThrow(() -> new ScorePartieKahootJoueurNotFound(joueur.getId())); + + scorePartieKahootJoueur.setScore(scorePartieKahootJoueur.getScore() + this.partieKahootService.getScore(partieKahoot.getTempsLimiteReponse(), reponse)); + this.scorePartieKahootJoueurRepository.save(scorePartieKahootJoueur); + return this.modelMapper.map(reponse, ReponseValideDTO.class); } diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/exceptions/notFound/ScorePartieKahootJoueurNotFound.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/exceptions/notFound/ScorePartieKahootJoueurNotFound.java new file mode 100644 index 0000000..a7ac5c4 --- /dev/null +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/exceptions/notFound/ScorePartieKahootJoueurNotFound.java @@ -0,0 +1,7 @@ +package fr.iut.sciencequest.sae.exceptions.notFound; + +public class ScorePartieKahootJoueurNotFound extends EntityNotFoundException{ + public ScorePartieKahootJoueurNotFound(int id) { + super("ScorePartieKahootJoueur", id); + } +} diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/PartieKahootService.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/PartieKahootService.java index 34c5cb3..80820d0 100644 --- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/PartieKahootService.java +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/PartieKahootService.java @@ -1,9 +1,6 @@ package fr.iut.sciencequest.sae.services; -import fr.iut.sciencequest.sae.entities.PartieKahoot; -import fr.iut.sciencequest.sae.entities.Question; -import fr.iut.sciencequest.sae.entities.QuestionPartieKahoot; -import fr.iut.sciencequest.sae.entities.Status; +import fr.iut.sciencequest.sae.entities.*; import fr.iut.sciencequest.sae.exceptions.DuplicatedIdException; import fr.iut.sciencequest.sae.exceptions.notFound.PartieKahootNotFoundException; import fr.iut.sciencequest.sae.exceptions.partie.PartyNotStartedException; @@ -11,6 +8,8 @@ import fr.iut.sciencequest.sae.repositories.*; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; +import java.time.Duration; +import java.time.temporal.ChronoUnit; import java.util.Calendar; import java.util.Date; import java.util.Objects; @@ -102,4 +101,12 @@ public class PartieKahootService { return partieKahoot; } + public int getScore(Calendar tempsLimiteReponse,Reponse reponse){ + if(!reponse.getEstValide()) return 0; + Calendar actualDate = Calendar.getInstance(); + actualDate.setTime(new Date()); + long secondsPourRepondre = ChronoUnit.SECONDS.between(actualDate.toInstant(), tempsLimiteReponse.toInstant()); + return Math.round(1f/secondsPourRepondre*PartieKahootService.TEMPS_REPONSE_QUESTION); + } + }