From 928d645fea3cdc03324855566bf8f8ef2a635944 Mon Sep 17 00:00:00 2001 From: iyanfdezz Date: Thu, 22 Feb 2024 17:03:23 +0100 Subject: [PATCH 1/2] Now average time per question is also calculated --- webapp/src/pages/Clasico/Clasico.js | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/webapp/src/pages/Clasico/Clasico.js b/webapp/src/pages/Clasico/Clasico.js index b78fe044..ca29f8fc 100644 --- a/webapp/src/pages/Clasico/Clasico.js +++ b/webapp/src/pages/Clasico/Clasico.js @@ -18,8 +18,11 @@ const JuegoPreguntas = () => { const [preguntaActual, setPreguntaActual] = useState(""); const navigate = useNavigate(); - var preguntasCorrectas=0; - var preguntasFalladas=0; + //Used for user stats + var [preguntasCorrectas, setPreguntasCorrectas] = useState(0); + var [preguntasFalladas, setPreguntasFalladas] = useState(0); + var [tiempoTotal, setTiempoTotal] = useState(0); + var [tiempoMedio, setTiempoMedio] = useState(0); useEffect(() => { fetch("http://localhost:8003/questions?tematica=all&n=10") @@ -81,20 +84,27 @@ const JuegoPreguntas = () => { }; const handleSiguientePregunta = () => { - if (respuestaSeleccionada === preguntaActual.correcta) { + if (respuestaSeleccionada === preguntaActual.respuestaCorrecta) { setPuntuacion(puntuacion + 1); - preguntasCorrectas++; - }else{ - preguntasFalladas++; + setPreguntasCorrectas(preguntasCorrectas + 1); + } else { + setPreguntasFalladas(preguntasFalladas + 1); } + + setTiempoTotal(tiempoTotal+10-tiempoRestante); + + setRespuestaSeleccionada(null); setTiempoRestante(10); if (indicePregunta + 1 < preguntas.length) { setIndicePregunta(indicePregunta + 1); setPreguntaActual(preguntas[indicePregunta]); } else { + //TODO: Introducir puntos, preguntas correctas, tiempo y preguntas falladas en la BD + if (preguntasCorrectas + preguntasFalladas > 0) { + setTiempoMedio(tiempoTotal/(preguntasCorrectas+preguntasFalladas)); + } - //TODO: Introducir puntos, preguntas correctas y preguntas falladas en la BD setJuegoTerminado(true); } }; From 8828bd190830ed3541424de43d81473d4477ecd0 Mon Sep 17 00:00:00 2001 From: iyanfdezz Date: Thu, 22 Feb 2024 20:32:41 +0100 Subject: [PATCH 2/2] =?UTF-8?q?Now=20the=20game=20saves=20on=20the=20users?= =?UTF-8?q?=20database=20(no=20s=C3=A9=20si=20funciona)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- users/authservice/auth-service.js | 3 +++ users/userservice/game-model.js | 4 +++ webapp/src/pages/Clasico/Clasico.js | 42 +++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+) diff --git a/users/authservice/auth-service.js b/users/authservice/auth-service.js index edfdd026..20943611 100644 --- a/users/authservice/auth-service.js +++ b/users/authservice/auth-service.js @@ -40,6 +40,9 @@ app.post('/login', async (req, res) => { const token = jwt.sign({ userId: user._id }, 'your-secret-key', { expiresIn: '1h' }); //Almacenamos el token del usuario para su autentificación sessionStorage.setItem('token', token); + + sessionStorage.setItem('username', username); + // Respond with the token and user information res.json({ token: token, username: username, createdAt: user.createdAt }); } else { diff --git a/users/userservice/game-model.js b/users/userservice/game-model.js index 73311be0..04a2aba2 100644 --- a/users/userservice/game-model.js +++ b/users/userservice/game-model.js @@ -14,6 +14,10 @@ const gameSchema = new mongoose.Schema({ type: Number, default: 0 }, + avgTime: { + type: Number, + default: 0 + } }); const Game = mongoose.model('Game', gameSchema); diff --git a/webapp/src/pages/Clasico/Clasico.js b/webapp/src/pages/Clasico/Clasico.js index ca29f8fc..e6b00ff0 100644 --- a/webapp/src/pages/Clasico/Clasico.js +++ b/webapp/src/pages/Clasico/Clasico.js @@ -105,6 +105,48 @@ const JuegoPreguntas = () => { setTiempoMedio(tiempoTotal/(preguntasCorrectas+preguntasFalladas)); } + //Now we store the game in the user's DB + const username = sessionStorage.getItem('username'); + + const newGame = new Game({ + correctAnswers: preguntasCorrectas, + incorrectAnswers: preguntasFalladas, + points: puntuacion, + avgTime: tiempoMedio, + }); + + //SAVING THE GAME ON THE USERS DATABASE + + // Encontrar el usuario en la base de datos + User.findOne({ username }, (err, user) => { + if (err) { + console.error('Error al encontrar el usuario:', err); + // TODO : hacer la UI para el manejo de errores + } else { + + newGame.save((err, game) => { + + if (err) { + + console.error('Error al guardar el juego:', err); + // TODO : hacer la UI para el manejo de errores + } + else { + + user.games.push(game._id); + + user.save((err) => { + if (err) { + console.error('Error al guardar el usuario actualizado:', err); + // TODO : hacer la UI para el manejo de errores + } + }); + } + }); + + } + }); + setJuegoTerminado(true); } };