Skip to content

Commit

Permalink
Arreglo de Temporizador y cambios en Stats
Browse files Browse the repository at this point in the history
  • Loading branch information
uo276026 committed Mar 30, 2024
1 parent e20ba35 commit ce78913
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 6 deletions.
13 changes: 13 additions & 0 deletions gatewayservice/gateway-service.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,19 @@ app.get('/updateIncorrectAnswers', async (req, res) => {
}
});

app.get('/updateCompletedGames', async (req, res) => {
console.log(req.query)
const { username } = req.query;
try{
const updateStatsResponse = await axios.get(userServiceUrl+ `/updateCompletedGames?username=${username}`)
res.json(updateStatsResponse.data);
}catch(error){
res.status(error.response.status).json({error: error.response.data.error});
}
});



app.get('/getUserData', async (req, res) => {
console.log(req.query)
const { username } = req.query;
Expand Down
23 changes: 22 additions & 1 deletion userservice/userservice/user-service.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ app.get('/updateIncorrectAnswers', async (req,res) => {
if (!user) {
return res.status(404).json({ success: false, message: 'Usuario no encontrado' });
}
// Incrementa las respuestas correctas del usuario
// Incrementa las respuestas incorrectas del usuario
user.incorrectAnswers += 1;
await user.save();
return res.status(200).json({ success: true, message: 'Respuesta incorrecta actualizada con éxito' });
Expand All @@ -80,6 +80,27 @@ app.get('/updateIncorrectAnswers', async (req,res) => {
return res.status(500).json({ success: false, message: 'Error al actualizar la respuesta incorrecta' });
}
})


app.get('/updateCompletedGames', async (req,res) => {
console.log(req.query)
const { username } = req.query;
try {
const user = await User.findOne({ username });
if (!user) {
return res.status(404).json({ success: false, message: 'Usuario no encontrado' });
}
user.completedGames += 1;
await user.save();
return res.status(200).json({ success: true, message: 'Juegos completados actualizado con éxito' });
} catch (error) {
console.error('Error al actualizar Juegos completados:', error);
return res.status(500).json({ success: false, message: 'Error al actualizar Juegos completados' });
}
})



const server = app.listen(port, () => {
console.log(`User Service listening at http://localhost:${port}`);
});
Expand Down
1 change: 0 additions & 1 deletion webapp/src/App.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ function App() {

return (
<>

<Router>
<Layout isLogged={isLogged} setIsLogged={setIsLogged} />
<Routes>
Expand Down
25 changes: 23 additions & 2 deletions webapp/src/components/Pages/Juego.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ const Juego = ({isLogged, username, numPreguntas}) => {
const [victoria, setVictoria] = useState(false)
//Para saber si el temporizador se ha parado al haber respondido una respuesta
const [pausarTemporizador, setPausarTemporizador] = useState(false)
const [restartTemporizador, setRestartTemporizador] = useState(false)

const [firstRender, setFirstRender] = useState(false);

Expand All @@ -27,6 +28,8 @@ const Juego = ({isLogged, username, numPreguntas}) => {
const [numPreguntaActual, setNumPreguntaActual] = useState(0)

const [arPreg, setArPreg] = useState([])




//Variables para la obtencion y modificacion de estadisticas del usuario
Expand Down Expand Up @@ -62,6 +65,15 @@ const Juego = ({isLogged, username, numPreguntas}) => {
console.error('Error al actualizar la respuesta incorrecta:', error);
}
};

const updateCompletedGames = async () => {
try {
const response = await axios.get(`${apiEndpoint}/updateCompletedGames?username=${username}`);
console.log('Juegos completados actualizado con éxito:', response.data);
} catch (error) {
console.error('Error al actualizar Juegos completados:', error);
}
};
////

//Función que genera un numero de preguntas determinado
Expand Down Expand Up @@ -98,6 +110,8 @@ const Juego = ({isLogged, username, numPreguntas}) => {
setPregunta(arPreg[numPreguntaActual].pregunta)
setResCorr(arPreg[numPreguntaActual].resCorr)
setResFalse(arPreg[numPreguntaActual].resFalse)
//Poner temporizador a 20 de nuevo
setRestartTemporizador(false);
}


Expand Down Expand Up @@ -192,6 +206,7 @@ const Juego = ({isLogged, username, numPreguntas}) => {

//Función que finaliza la partida (redirigir/mostrar stats...)
function finishGame(){
updateCompletedGames();
//TODO
}

Expand All @@ -207,14 +222,20 @@ const Juego = ({isLogged, username, numPreguntas}) => {
setNumPreguntaActual(numPreguntaActual+1)
console.log(numPreguntaActual)
updateGame();

//Recargar a 20 el temporizador
setRestartTemporizador(true);
setPausarTemporizador(false);
}

const handleRestart = () => {
setRestartTemporizador(false); // Cambia el estado de restart a false, se llama aqui desde Temporizador.js
};


return (
<Container component="main" maxWidth="xs" sx={{ marginTop: 4 }}>
<div className="numPregunta"> <p> {numPreguntaActual} / {numPreguntas} </p> </div>
<Temporizador tiempoInicial={20} tiempoAcabado={cambiarColorBotones} pausa={pausarTemporizador}/>
<Temporizador restart={restartTemporizador} tiempoInicial={20} tiempoAcabado={cambiarColorBotones} pausa={pausarTemporizador} handleRestart={handleRestart}/>
<h2> {pregunta} </h2>
<div className="button-container">
<button id="boton1" className="button" onClick={() => botonRespuesta(resFalse[1])}> {resFalse[1]}</button>
Expand Down
16 changes: 14 additions & 2 deletions webapp/src/components/Temporizador.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,25 @@
import React, { useState, useEffect } from 'react';

const Temporizador =({tiempoInicial, tiempoAcabado, pausa})=> {
const Temporizador =({restart, tiempoInicial, tiempoAcabado, pausa, handleRestart})=> {

//Constante que va restando segundos
const [tiempoSegundos, setTiempoSegundos] = useState(tiempoInicial);


useEffect(() => {
let intervalID;
console.log("recargado efectivamente")
console.log(restart)
if(restart){
setTiempoSegundos(tiempoInicial);
pausa=false;
handleRestart();
}

console.log(restart);
console.log(tiempoInicial);
console.log(tiempoSegundos);
console.log(pausa);


if (tiempoSegundos > 0 && !pausa) {
intervalID = setInterval(() => {
Expand Down

0 comments on commit ce78913

Please sign in to comment.