diff --git a/src/main/java/com/uniovi/services/InsertSampleDataService.java b/src/main/java/com/uniovi/services/InsertSampleDataService.java index c9dac71f..072d9c69 100644 --- a/src/main/java/com/uniovi/services/InsertSampleDataService.java +++ b/src/main/java/com/uniovi/services/InsertSampleDataService.java @@ -25,30 +25,39 @@ public class InsertSampleDataService { private final QuestionService questionService; private final CategoryService categoryService; private final QuestionRepository questionRepository; + private final GameSessionRepository gameSessionRepository; public InsertSampleDataService(PlayerService playerService, QuestionService questionService, - CategoryService categoryService, QuestionRepository questionRepository) { + CategoryService categoryService, QuestionRepository questionRepository, + GameSessionRepository gameSessionRepository) { this.playerService = playerService; this.questionService = questionService; this.categoryService = categoryService; this.questionRepository = questionRepository; + this.gameSessionRepository = gameSessionRepository; } - @PostConstruct - public void init() { - if (playerService.getUserByEmail("test@test.com").isPresent()) - return; - - PlayerDto player = new PlayerDto(); - player.setEmail("test@test.com"); - player.setUsername("test"); - player.setPassword("test"); - player.setRoles(new String[]{"ROLE_USER"}); - playerService.generateApiKey(playerService.addNewPlayer(player)); - } - + @Transactional @EventListener(ApplicationReadyEvent.class) // Uncomment this line to insert sample data on startup public void insertSampleQuestions() { + if (!playerService.getUserByEmail("test@test.com").isPresent()) { + PlayerDto player = new PlayerDto(); + player.setEmail("test@test.com"); + player.setUsername("test"); + player.setPassword("test"); + player.setRoles(new String[]{"ROLE_USER"}); + playerService.generateApiKey(playerService.addNewPlayer(player)); + } + + GameSession gameSession = new GameSession(); + gameSession.setFinishTime(LocalDateTime.now().plusMinutes(5)); + gameSession.setCreatedAt(LocalDateTime.now()); + gameSession.setTotalQuestions(40); + gameSession.setCorrectQuestions(10); + gameSession.setPlayer(playerService.getUserByEmail("test@test.com").get()); + playerService.getUserByEmail("test@test.com").get().getGameSessions().add(gameSession); + gameSessionRepository.save(gameSession); + questionRepository.deleteAll(); QuestionGenerator border = new BorderQuestionGenerator(categoryService); diff --git a/src/main/resources/messages.properties b/src/main/resources/messages.properties index 59f22b3f..037fdbbd 100644 --- a/src/main/resources/messages.properties +++ b/src/main/resources/messages.properties @@ -59,3 +59,26 @@ signup.passwordConfirm.placeholder=Repita la contraseña signup.submit=Registrarse signup.title=Regístrate +# -------------------Statements for the apiHome.html file--------------------- +api.doc.title=Documentación de la API +api.doc.description=Esta es la documentación de la API de WIQ. Aquí puedes encontrar información sobre los recursos disponibles, los parámetros que aceptan y los ejemplos de uso. +api.doc.table.parameters=Parámetros +api.doc.table.description=Descripción +api.doc.table.example=Ejemplo +api.doc.endpoints.players.title=Extremo /api/players +api.doc.endpoints.players.description=Devuelve una lista de jugadores filtrada por los criterios especificados. +api.doc.endpoints.questions.title=Extremo /api/questions +api.doc.endpoints.questions.description=Devuelve una lista de preguntas filtrada por los criterios especificados. +api.doc.exampleRequest=Ejemplo de petición +api.doc.exampleResponse=Ejemplo de respuesta +api.doc.apikey=Clave de la API (obligatorio) + +api.doc.player.username=Nombre de usuario (opcional) +api.doc.player.email=Correo electrónico (opcional) +api.doc.player.id=ID del jugador en el sistema (opcional) +api.doc.player.usernames=Nombre de usuario, separados por comas (opcional) +api.doc.player.emails=Correos electrónicos, separados por comas (opcional) + +api.doc.question.category=Categorña (opcional). Nombre o ID de la categoría. +api.doc.question.id=ID de la pregunta (opcional) +api.doc.question.statement=Enunciado de la pregunta (opcional). Texto que debe contener el enunciado de la pregunta. diff --git a/src/main/resources/messages_en.properties b/src/main/resources/messages_en.properties index 1d11ec42..6b915010 100644 --- a/src/main/resources/messages_en.properties +++ b/src/main/resources/messages_en.properties @@ -5,7 +5,7 @@ navbar.play=Play navbar.game1=Game 1 navbar.game2=Game 2 navbar.history=History -navbar.changeLanguage=Idiom +navbar.changeLanguage=Language navbar.toEnglish=English navbar.toSpanish=Spanish @@ -57,6 +57,31 @@ signup.passwordConfirm.placeholder=Confirm your password signup.submit=Sign up signup.title=Sign up +# -------------------Statements for the apiHome.html file--------------------- +api.doc.title=API Documentation +api.doc.description=This document describes the REST API endpoints. +api.doc.table.parameters=Parameters +api.doc.table.description=Description +api.doc.table.example=Example +api.doc.endpoints.players.title=/api/players Endpoint +api.doc.endpoints.players.description=Retrieves a list of players based on the given parameters. +api.doc.endpoints.questions.title=/api/questions Endpoint +api.doc.endpoints.questions.description=Fetches a list of questions filtered by the specified criteria. +api.doc.exampleRequest=Example Request +api.doc.exampleResponse=Example Response +api.doc.apikey=Your API Key (required) + +api.doc.player.username=Username (optional) +api.doc.player.email=Email (optional) +api.doc.player.id=Player ID in the system (optional) +api.doc.player.usernames=Usernames, comma separated (optional) +api.doc.player.emails=Emails, comma separated (optional) + +api.doc.question.category=Category (optional). Category ID or name. +api.doc.question.id=Question ID in the system (optional) +api.doc.question.statement=Statement (optional). Text to search in the question statement. + + diff --git a/src/main/resources/messages_es.properties b/src/main/resources/messages_es.properties index 30eeeb9f..aa2431e4 100644 --- a/src/main/resources/messages_es.properties +++ b/src/main/resources/messages_es.properties @@ -58,4 +58,26 @@ signup.passwordConfirm.placeholder=Repita la contraseña signup.submit=Registrarse signup.title=Regístrate +# -------------------Statements for the apiHome.html file--------------------- +api.doc.title=Documentación de la API +api.doc.description=Esta es la documentación de la API de WIQ. Aquí puedes encontrar información sobre los recursos disponibles, los parámetros que aceptan y los ejemplos de uso. +api.doc.table.parameters=Parámetros +api.doc.table.description=Descripción +api.doc.table.example=Ejemplo +api.doc.endpoints.players.title=Extremo /api/players +api.doc.endpoints.players.description=Devuelve una lista de jugadores filtrada por los criterios especificados. +api.doc.endpoints.questions.title=Extremo /api/questions +api.doc.endpoints.questions.description=Devuelve una lista de preguntas filtrada por los criterios especificados. +api.doc.exampleRequest=Ejemplo de petición +api.doc.exampleResponse=Ejemplo de respuesta +api.doc.apikey=Clave de la API (obligatorio) +api.doc.player.username=Nombre de usuario (opcional) +api.doc.player.email=Correo electrónico (opcional) +api.doc.player.id=ID del jugador en el sistema (opcional) +api.doc.player.usernames=Nombre de usuario, separados por comas (opcional) +api.doc.player.emails=Correos electrónicos, separados por comas (opcional) + +api.doc.question.category=Categorña (opcional). Nombre o ID de la categoría. +api.doc.question.id=ID de la pregunta (opcional) +api.doc.question.statement=Enunciado de la pregunta (opcional). Texto que debe contener el enunciado de la pregunta. \ No newline at end of file diff --git a/src/main/resources/templates/api/apiHome.html b/src/main/resources/templates/api/apiHome.html index 566549bd..4cdf878d 100644 --- a/src/main/resources/templates/api/apiHome.html +++ b/src/main/resources/templates/api/apiHome.html @@ -1,10 +1,204 @@ - - - - Title - + + + + +
+
+ + + + +
+
+ +
+

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
apiKey4640gdfsj4654-hi54egs
usernamestudent1
emailstudent1@example.com
id1
usernamesstudent1,student2
emailsstudent1@example.com,student2@example.com
+ +
+

+ GET /api/players?apiKey={api_key}&username=student1 +

+
+ {
+    "players":[
+       {
+          "id":1,
+          "username":"student1",
+          "email":"student1@example.com",
+          "roles":[
+             "ROLE_USER"
+          ],
+          "gameSessions":[
+             {
+                "id":1,
+                "player":1,
+                "correctQuestions":10,
+                "totalQuestions":40,
+                "createdAt":"2024-03-04T22:44:41.067901",
+                "finishTime":"2024-03-04T22:49:41.067901",
+                "score":0
+             }
+          ]
+       }
+    ]
+ }
+
+
+ + +
+

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
apiKey4640gdfsj4654-hi54egs
categoryGeography
id1
statementcapital
+ +
+

+ GET /api/questions?apiKey={api_key}&category=Geography +

+
+ {
+   "questions":[
+      {
+         "id":11802,
+         "statement":"Which countries share a border with Solomon Islands?",
+         "category":{
+            "id":1,
+            "name":"Geography",
+            "description":"Questions about geography"
+         },
+         "options":[
+            {
+               "id":46252,
+               "text":"Papua New Guinea",
+               "correct":true,
+               "question":11802
+            },
+            {
+               "id":46253,
+               "text":"Venezuela",
+               "correct":false,
+               "question":11802
+            },
+            {
+               "id":46254,
+               "text":"Austria",
+               "correct":false,
+               "question":11802
+            },
+            {
+               "id":46255,
+               "text":"United States of America",
+               "correct":false,
+               "question":11802
+            }
+         ]
+      }
+   ]
+}
+
+
+
+
+
+ +
+
+ + - \ No newline at end of file +