From 1a0382e9d01a062cc281251a5fc5890f0a2eb9bd Mon Sep 17 00:00:00 2001 From: visoulier Date: Sun, 31 Mar 2024 14:09:15 +0200 Subject: [PATCH] ajout getQuestion pour PartieKahoot --- .../controllers/PartieKahootController.java | 12 ++++++++++ .../partieKahoot/PartieKahootQuestionDTO.java | 24 +++++++++++++++++++ .../sae/dto/question/QuestionDTO.java | 3 ++- .../partie/PartyNotStartedException.java | 12 ++++++++++ 4 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/partieKahoot/PartieKahootQuestionDTO.java create mode 100644 SpringBootProject/src/main/java/fr/iut/sciencequest/sae/exceptions/partie/PartyNotStartedException.java 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 d1f9351..8aed2b6 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 @@ -3,9 +3,11 @@ package fr.iut.sciencequest.sae.controllers; import fr.iut.sciencequest.sae.controllers.request.PartieAddJoueurRequest; import fr.iut.sciencequest.sae.controllers.request.PartieRequest; import fr.iut.sciencequest.sae.dto.partieKahoot.PartieKahootDTO; +import fr.iut.sciencequest.sae.dto.partieKahoot.PartieKahootQuestionDTO; import fr.iut.sciencequest.sae.dto.partieKahoot.PartieKahootStatusDTO; import fr.iut.sciencequest.sae.entities.*; import fr.iut.sciencequest.sae.exceptions.partie.PartyAlreadyStartedException; +import fr.iut.sciencequest.sae.exceptions.partie.PartyNotStartedException; import fr.iut.sciencequest.sae.repositories.QuestionPartieKahootRepository; import fr.iut.sciencequest.sae.repositories.ScorePartieKahootJoueurRepository; import fr.iut.sciencequest.sae.services.*; @@ -113,4 +115,14 @@ public class PartieKahootController { return this.modelMapper.map(partieKahoot, PartieKahootStatusDTO.class); } + @GetMapping(value = "/{codeInvitation}/question", produces = MediaType.APPLICATION_JSON_VALUE) + @ResponseStatus(HttpStatus.OK) + public PartieKahootQuestionDTO getQuestionActuel(@PathVariable String codeInvitation){ + PartieKahoot partieKahoot = this.partieKahootService.getPartieKahootByIdOrCodeInvitation(codeInvitation); + if(partieKahoot.getStatus() != Status.Started){ + throw new PartyNotStartedException(); + } + return this.modelMapper.map(partieKahoot, PartieKahootQuestionDTO.class); + } + } diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/partieKahoot/PartieKahootQuestionDTO.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/partieKahoot/PartieKahootQuestionDTO.java new file mode 100644 index 0000000..5a4b298 --- /dev/null +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/partieKahoot/PartieKahootQuestionDTO.java @@ -0,0 +1,24 @@ +package fr.iut.sciencequest.sae.dto.partieKahoot; + +import fr.iut.sciencequest.sae.dto.question.QuestionDTO; +import fr.iut.sciencequest.sae.dto.reponse.ReponseSimpleDTO; +import fr.iut.sciencequest.sae.dto.scorePartieJoueur.ScorePartieKahootJoueurDTO; +import fr.iut.sciencequest.sae.entities.Reponse; +import fr.iut.sciencequest.sae.entities.Status; +import jakarta.validation.constraints.NotNull; +import lombok.*; +import org.springframework.hateoas.RepresentationModel; + +import java.util.Calendar; +import java.util.List; + + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = false) +public class PartieKahootQuestionDTO extends RepresentationModel { + private QuestionDTO questionActuel; + private Calendar tempsLimiteReponse; +} diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/question/QuestionDTO.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/question/QuestionDTO.java index a31dd7a..f3038ec 100644 --- a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/question/QuestionDTO.java +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/dto/question/QuestionDTO.java @@ -8,6 +8,7 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import org.springframework.hateoas.RepresentationModel; +import java.util.List; @Data @@ -23,5 +24,5 @@ public class QuestionDTO extends RepresentationModel { private String question; @NotEmpty - private Iterable reponses; + private List reponses; } diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/exceptions/partie/PartyNotStartedException.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/exceptions/partie/PartyNotStartedException.java new file mode 100644 index 0000000..bb0c006 --- /dev/null +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/exceptions/partie/PartyNotStartedException.java @@ -0,0 +1,12 @@ +package fr.iut.sciencequest.sae.exceptions.partie; + + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ResponseStatus(HttpStatus.FORBIDDEN) +public class PartyNotStartedException extends RuntimeException { + public PartyNotStartedException() { + super("Party not started"); + } +}