You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
4.9 KiB
146 lines
4.9 KiB
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; |