ajout des stats facile medium et hard en BDD + Persistance
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
b380f7d927
commit
f7532890a6
@ -0,0 +1,118 @@
|
||||
const path = require('path');
|
||||
const DatabaseService = require(path.resolve(__dirname, '../services/DatabaseService'));
|
||||
|
||||
class SessionController {
|
||||
static async getUserInformation(req, res) {
|
||||
const ENIGME_FACILE = "enigme_facile";
|
||||
const ENIGME_MOYEN = "enigme_moyenne";
|
||||
const ENIGME_DIFFICILE = "enigme_difficile";
|
||||
|
||||
const db = new DatabaseService();
|
||||
const date = new Date();
|
||||
const hour = date.getHours();
|
||||
const minutes = date.getMinutes();
|
||||
|
||||
try{
|
||||
await db.connect();
|
||||
|
||||
if (!req.session.user) {
|
||||
res.status(200).json({ error: "true", message: 'User not found' });
|
||||
return;
|
||||
}
|
||||
|
||||
// Récupérer les stats mastermind de l'utilisateur
|
||||
const nbGamesMM = await db.getNbGamesMastermindByUserId(req.session.user.idUser) || 0;
|
||||
const bestScoreMM = await db.getBestScoreMastermindByUserId(req.session.user.idUser) || 0;
|
||||
const avgNbTryMM = await db.getAvgNbTryMastermindByUserId(req.session.user.idUser) || 0;
|
||||
req.session.user.mastermindStats = {nbGames: nbGamesMM.nbGames,
|
||||
bestScore: bestScoreMM.bestScore,
|
||||
avgNbTry: avgNbTryMM.avgNbTry};
|
||||
|
||||
// Récupérer les stats enigme facile
|
||||
const nbGamesEF = await db.getNbGamesEnigmeByUserId(req.session.user.idUser, ENIGME_FACILE) || 0;
|
||||
const nbWinsEF = await db.getNbWinsEnigmeByUserId(req.session.user.idUser, ENIGME_FACILE) || 0;
|
||||
const ratioEF = (nbWinsEF.nbWins / nbGamesEF.nbGames) * 100 || 0;
|
||||
const bestTimeEF = await db.getBestTimeEnigmeByUserId(req.session.user.idUser, ENIGME_FACILE) || 0;
|
||||
const avgTimeEF = await db.getAvgTimeEnigmeByUserId(req.session.user.idUser, ENIGME_FACILE) || 0;
|
||||
|
||||
req.session.user.easyEnigmaStats = {nbGames: nbGamesEF.nbGames,
|
||||
nbWins: nbWinsEF.nbWins,
|
||||
ratio: ratioEF,
|
||||
bestTime: bestTimeEF.bestTime,
|
||||
avgTime: avgTimeEF.avgTime};
|
||||
|
||||
// Récupérer les stats enigme moyenne
|
||||
const nbGamesEM = await db.getNbGamesEnigmeByUserId(req.session.user.idUser, ENIGME_MOYEN) || 0;
|
||||
const bestScoreEM = await db.getBestScoreEnigmeByUserId(req.session.user.idUser, ENIGME_MOYEN) || 0;
|
||||
const avgNbTryEM = await db.getAvgScoreEnigmeByUserId(req.session.user.idUser, ENIGME_MOYEN) || 0;
|
||||
|
||||
req.session.user.mediumEnigmaStats = {nbGames: nbGamesEM.nbGames,
|
||||
bestScore: bestScoreEM.bestScore,
|
||||
avgNbTry: avgNbTryEM.avgScore};
|
||||
|
||||
// Récupérer les stats enigme difficile
|
||||
const nbGamesED = await db.getNbGamesEnigmeByUserId(req.session.user.idUser, ENIGME_DIFFICILE) || 0;
|
||||
const nbWinsED = await db.getNbWinsEnigmeByUserId(req.session.user.idUser, ENIGME_DIFFICILE) || 0;
|
||||
const ratioED = (nbWinsED.nbWins / nbGamesED.nbGames) * 100 || 0;
|
||||
const bestTimeED = await db.getBestTimeEnigmeByUserId(req.session.user.idUser, ENIGME_DIFFICILE) || 0;
|
||||
const avgTimeED = await db.getAvgTimeEnigmeByUserId(req.session.user.idUser, ENIGME_DIFFICILE) || 0;
|
||||
|
||||
req.session.user.hardEnigmaStats = {nbGames: nbGamesED.nbGames,
|
||||
nbWins: nbWinsED.nbWins,
|
||||
ratio: ratioED,
|
||||
bestTime: bestTimeED.bestTime,
|
||||
avgTime: avgTimeED.avgTime};
|
||||
|
||||
// Récupérer les stats en ligne de l'utilisateur
|
||||
const nbGamesOL = await db.getNbGamesOnlineByUserId(req.session.user.idUser) || 0;
|
||||
const nbWinsOL = await db.getNbWinsOnlineByUserId(req.session.user.idUser) || 0;
|
||||
const ratioOL = (nbWinsOL.nbWins / nbGamesOL.nbGames) * 100 || 0;
|
||||
req.session.user.onlineStats = {nbGames: nbGamesOL.nbGames,
|
||||
nbWins: nbWinsOL.nbWins,
|
||||
ratio: ratioOL};
|
||||
|
||||
|
||||
console.log("[" + hour + ":" + minutes + "] " + req.session.user.pseudo + " have a session.");
|
||||
res.status(200).json({ user: req.session.user });
|
||||
}
|
||||
catch(error){
|
||||
console.error(error);
|
||||
res.status(500).json({ error: 'Erreur lors de la récupération de l\'utilisateur.' });
|
||||
}
|
||||
finally{
|
||||
await db.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
static async UpdatePseudo(req, res){
|
||||
const db = new DatabaseService();
|
||||
|
||||
try{
|
||||
await db.connect();
|
||||
|
||||
const user = await db.getUserByPseudo(req.body.pseudo);
|
||||
console.log("utilisateur" + user.idUser + " pseudo" + user.pseudo)
|
||||
if (!user) {
|
||||
res.status(200).json({ error: "true", message: 'User not found' });
|
||||
return;
|
||||
}
|
||||
|
||||
await db.updatePseudo(user.idUser, req.body.newPseudo); //* update
|
||||
|
||||
const updatedUser = await db.getUserByPseudo(req.body.newPseudo);
|
||||
console.log("updaetdutilisateur" + updatedUser.idUser + " pseudo" + updatedUser.pseudo)
|
||||
req.session.user.pseudo = updatedUser.pseudo;
|
||||
console.log("req.session.user.pseudo" + req.session.user.pseudo)
|
||||
res.status(200).json({ user: req.session.user }); //verif rep
|
||||
}
|
||||
catch(error){
|
||||
console.error(error);
|
||||
res.status(500).json({ error: 'Erreur lors de la modification du pseudo de l\'utilisateur.' });
|
||||
}
|
||||
finally{
|
||||
await db.disconnect();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = SessionController;
|
@ -1,146 +0,0 @@
|
||||
const DatabaseService = require('../services/DatabaseService');
|
||||
|
||||
class SessionController {
|
||||
static async getUserInformation(req, res) {
|
||||
const db = new DatabaseService();
|
||||
const date = new Date();
|
||||
const hour = date.getHours();
|
||||
const minutes = date.getMinutes();
|
||||
|
||||
try{
|
||||
await db.connect();
|
||||
|
||||
if (!req.session.user) {
|
||||
res.status(200).json({ error: "true", message: 'User not found' });
|
||||
return;
|
||||
}
|
||||
|
||||
req.session.user.soloStats = await db.getSoloStatsByUserId(req.session.user.idUser);
|
||||
req.session.user.onlineStats = await db.getOnlineStatsByUserId(req.session.user.idUser);
|
||||
|
||||
console.log("[" + hour + ":" + minutes + "] " + req.session.user.pseudo + " have a session.");
|
||||
res.status(200).json({ user: req.session.user });
|
||||
}
|
||||
catch(error){
|
||||
console.error(error);
|
||||
res.status(500).json({ error: 'Erreur lors de la récupération de l\'utilisateur.' });
|
||||
}
|
||||
finally{
|
||||
await db.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
static async updateSoloStats(req, res) {
|
||||
const db = new DatabaseService();
|
||||
const date = new Date();
|
||||
const hour = date.getHours();
|
||||
const minutes = date.getMinutes();
|
||||
|
||||
try{
|
||||
await db.connect();
|
||||
|
||||
const user = await db.getUserByPseudo(req.body.pseudo);
|
||||
|
||||
if (!user) {
|
||||
res.status(200).json({ error: "true", message: 'User not found' });
|
||||
return;
|
||||
}
|
||||
|
||||
const soloStats = await db.getSoloStatsByUserId(user.idUser);
|
||||
|
||||
if (!soloStats) {
|
||||
res.status(200).json({ error: "true", message: 'Solo stats not found' });
|
||||
return;
|
||||
}
|
||||
|
||||
await db.updateSoloStats(user.idUser, req.body.nbGames, req.body.bestScore, req.body.avgNbTry);
|
||||
|
||||
const newSoloStats = await db.getSoloStatsByUserId(user.idUser);
|
||||
|
||||
req.session.user.soloStats = newSoloStats;
|
||||
|
||||
console.log("[" + hour + ":" + minutes + "] " + req.session.user.pseudo + "'s solot_stats are updated.");
|
||||
res.status(200).json({ user: req.session.user });
|
||||
}
|
||||
catch(error){
|
||||
console.error(error);
|
||||
res.status(500).json({ error: 'Erreur lors de la mise à jour des statistiques solo.' });
|
||||
}
|
||||
finally{
|
||||
await db.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
static async updateOnlineStats(req, res) {
|
||||
const db = new DatabaseService();
|
||||
const date = new Date();
|
||||
const hour = date.getHours();
|
||||
const minutes = date.getMinutes();
|
||||
|
||||
try{
|
||||
await db.connect();
|
||||
|
||||
const user = await db.getUserByPseudo(req.body.pseudo);
|
||||
|
||||
if (!user) {
|
||||
res.status(200).json({ error: "true", message: 'User not found' });
|
||||
return;
|
||||
}
|
||||
|
||||
const onlineStats = await db.getOnlineStatsByUserId(user.idUser);
|
||||
|
||||
if (!onlineStats) {
|
||||
res.status(200).json({ error: "true", message: 'Online stats not found' });
|
||||
return;
|
||||
}
|
||||
|
||||
await db.updateOnlineStats(user.idUser, req.body.nbGames, req.body.nbWins, req.body.ratio);
|
||||
|
||||
const newOnlineStats = await db.getOnlineStatsByUserId(user.idUser);
|
||||
|
||||
req.session.user.onlineStats = newOnlineStats;
|
||||
|
||||
console.log("[" + hour + ":" + minutes + "] " + req.session.user.pseudo + "'s online_stats are updated.");
|
||||
res.status(200).json({ user: req.session.user });
|
||||
}
|
||||
catch(error){
|
||||
console.error(error);
|
||||
res.status(500).json({ error: 'Erreur lors de la mise à jour des statistiques en ligne.' });
|
||||
}
|
||||
finally{
|
||||
await db.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
static async UpdatePseudo(req, res){
|
||||
const db = new DatabaseService();
|
||||
|
||||
try{
|
||||
await db.connect();
|
||||
|
||||
const user = await db.getUserByPseudo(req.body.pseudo);
|
||||
console.log("utilisateur" + user.idUser + " pseudo" + user.pseudo)
|
||||
if (!user) {
|
||||
res.status(200).json({ error: "true", message: 'User not found' });
|
||||
return;
|
||||
}
|
||||
|
||||
await db.updatePseudo(user.idUser, req.body.newPseudo); //* update
|
||||
|
||||
const updatedUser = await db.getUserByPseudo(req.body.newPseudo);
|
||||
console.log("updaetdutilisateur" + updatedUser.idUser + " pseudo" + updatedUser.pseudo)
|
||||
req.session.user.pseudo = updatedUser.pseudo;
|
||||
console.log("req.session.user.pseudo" + req.session.user.pseudo)
|
||||
res.status(200).json({ user: req.session.user }); //verif rep
|
||||
}
|
||||
catch(error){
|
||||
console.error(error);
|
||||
res.status(500).json({ error: 'Erreur lors de la modification du pseudo de l\'utilisateur.' });
|
||||
}
|
||||
finally{
|
||||
await db.disconnect();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = SessionController;
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -1 +0,0 @@
|
||||
{}
|
Loading…
Reference in new issue