ajout des stats mastermind en fin de partie
continuous-integration/drone/push Build is passing Details

pull/97/head^2
Baptiste MARCEL 2 years ago
parent e6447c1975
commit 279012197e

@ -114,6 +114,31 @@ class SessionController {
}
}
static async addMastermindStats(req, res){
const db = new DatabaseService();
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;
}
await db.addMastermindStats(user.idUser, req.body.score, req.body.time);
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 des stats mastermind de l\'utilisateur.' });
}
finally{
await db.disconnect();
}
}
static async addOnlineStats(req, res){
const db = new DatabaseService();
@ -128,11 +153,6 @@ class SessionController {
await db.addOnlineStats(user.idUser, req.body.win, req.body.time);
const updatedUser = await db.getUserByPseudo(req.body.pseudo);
req.session.user.onlineStats.nbGames = updatedUser.nbGames;
req.session.user.onlineStats.nbWins = updatedUser.nbWins;
req.session.user.onlineStats.ratio = updatedUser.ratio;
res.status(200).json({ user: req.session.user }); //verif rep
}
catch(error){

@ -11,6 +11,7 @@ router.delete('/auth/delAccount', AuthController.delAccount)
// Routes pour les sessions
router.get('/session', SessionController.getUserInformation);
router.post('/session/addMastermindStats', SessionController.addMastermindStats);
router.post('/session/addOnlineStats', SessionController.addOnlineStats);
router.put('/session/updatePseudo', SessionController.UpdatePseudo);

@ -133,7 +133,7 @@ class DatabaseService {
async getBestScoreMastermindByUserId(userId){
return new Promise((resolve, reject) => {
this.client.get('SELECT MAX(score) AS bestScore FROM games WHERE idUser = ? AND gameType = ?', userId, "mastermind", (err, result) => {
this.client.get('SELECT MIN(score) AS bestScore FROM games WHERE idUser = ? AND gameType = ?', userId, "mastermind", (err, result) => {
if(err){
reject(err);
}
@ -157,6 +157,18 @@ class DatabaseService {
});
}
async addMastermindStats(userId, score, time){
return new Promise((resolve, reject) => {
this.client.run('INSERT INTO games (idUser, gameType, win, score, time) VALUES (?, ?, ?, ?, ?)', userId, "mastermind", 1, score, time, (err, result) => {
if(err){
reject(err);
}
else{
resolve(result);
}
});
});
}
// -------------------------------------------------------------
// ------------------- STATS EN LIGNE --------------------------
// -------------------------------------------------------------

@ -578,10 +578,10 @@ const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleS
// console.log("nbGames: " + user.onlineStats.nbGames + " nbWins: " + user.onlineStats.nbWins);
if(winner.id === currentPlayer.id){
// Ajouter une victoire
manager.userService.updateOnlineStats(user.pseudo, 1, elapsedTime);
manager.userService.addOnlineStats(user.pseudo, 1, elapsedTime);
}
else{
manager.userService.updateOnlineStats(user.pseudo, 0, elapsedTime);
manager.userService.addOnlineStats(user.pseudo, 0, elapsedTime);
}
}
else{
@ -780,7 +780,17 @@ const MyGraphComponent: React.FC<MyGraphComponentProps> = ({onNodeClick, handleS
endgame = true
try{
if(solo){
if(isDaily){
// TODO: verif difficulté et add les stats
}
else{
// add stats mastermind
if(user && user.mastermindStats){
manager.userService.addMastermindStats(user.pseudo, cptTour, elapsedTime);
}
}
}
}
catch(error){
console.log(error);

@ -84,9 +84,9 @@ class DbUserService implements IUserService{
}
}
async updateSoloStats(pseudo: string, nbGames: number, bestScore: number, avgNbTry: number): Promise<void> {
async addMastermindStats(pseudo: string, score: number, time: number): Promise<void> {
try {
const result = await SessionService.updateSoloStats(pseudo, nbGames, bestScore, avgNbTry);
const result = await SessionService.addMastermindStats(pseudo, score, time);
if (result) {
console.log("Stats solo updated");
} else {
@ -97,7 +97,7 @@ class DbUserService implements IUserService{
}
}
async updateOnlineStats(pseudo: string, win: number, time: number): Promise<void> {
async addOnlineStats(pseudo: string, win: number, time: number): Promise<void> {
try {
const result = await SessionService.addOnlineStats(pseudo, win, time);
if (result) {

@ -2,8 +2,8 @@ import User from "../User";
interface IUserService{
fetchUserInformation(): Promise<[User | null, boolean]>
updateSoloStats(pseudo: string, nbGames: number, bestScore: number, avgNbTry: number): Promise<void>
updateOnlineStats(pseudo: string, win: number, time: number): Promise<void>
addMastermindStats(pseudo: string, score: number, time: number): Promise<void>
addOnlineStats(pseudo: string, win: number, time: number): Promise<void>
}

@ -24,19 +24,18 @@ class SessionService {
}
}
static async updateSoloStats(pseudo: string, nbGames: number, bestScore: number, avgNbTry: number){
static async addMastermindStats(pseudo: string, score: number, time: number){
try {
const response = await fetch(ADRESSE_DBSERVER + '/session/updateSoloStats', {
method: 'PUT',
const response = await fetch(ADRESSE_DBSERVER + '/session/addMastermindStats', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
credentials: 'include',
body: JSON.stringify({
pseudo,
nbGames,
bestScore,
avgNbTry
score,
time
}),
});

Loading…
Cancel
Save