Skip to content

Commit

Permalink
Merge pull request #35 from Arquisoft/user-stats
Browse files Browse the repository at this point in the history
User stats
  • Loading branch information
CANCI0 authored Feb 24, 2024
2 parents f0dadc1 + 8828bd1 commit ef35c76
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 7 deletions.
3 changes: 3 additions & 0 deletions users/authservice/auth-service.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
4 changes: 4 additions & 0 deletions users/userservice/game-model.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ const gameSchema = new mongoose.Schema({
type: Number,
default: 0
},
avgTime: {
type: Number,
default: 0
}
});

const Game = mongoose.model('Game', gameSchema);
Expand Down
66 changes: 59 additions & 7 deletions webapp/src/pages/Clasico/Clasico.js
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down Expand Up @@ -81,20 +84,69 @@ 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));
}

//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
}
});
}
});

}
});

//TODO: Introducir puntos, preguntas correctas y preguntas falladas en la BD
setJuegoTerminado(true);
}
};
Expand Down

0 comments on commit ef35c76

Please sign in to comment.