diff --git a/Controller/UserController.php b/Controller/UserController.php index 4953aad7..67178928 100644 --- a/Controller/UserController.php +++ b/Controller/UserController.php @@ -76,8 +76,11 @@ class UserController case "goToDashboard": $this->goToDashboard(); break; - case "getPlayersPseudo": - $this->getPlayersPseudo(); + case "getPlayers": + $this->getPlayers(); + break; + case "getPlayerScore": + $this->getPlayerScore(); break; default: $error = "Action non valide"; @@ -443,13 +446,12 @@ class UserController require($rep . $vues['erreur']); } } - public function getPlayersPseudo(){ + public function getPlayers(){ try { global $rep, $vues, $error; $model = new UserModel(); $idPartie = $_SESSION['idPartie']; - $utilisateur = $_SESSION['utilisateur']; - $lesJoueurs = $model->getPlayersPseudo($idPartie); + $lesJoueurs = $model->getPlayers($idPartie); $lesJoueurs = json_encode($lesJoueurs); echo $lesJoueurs; } @@ -458,4 +460,19 @@ class UserController require($rep . $vues['erreur']); } } + public function getPlayerScore(){ + try { + global $rep, $vues, $error; + $model = new UserModel(); + $idPartie = $_SESSION['idPartie']; + $joueur = $_POST['joueur']; + $score = $model->getPlayerScore($joueur, $idPartie); + $score = json_encode($score); + echo $score; + } + catch (Exception $e) { + $error = $e->getMessage(); + require($rep . $vues['erreur']); + } + } } \ No newline at end of file diff --git a/Model/UserModel.php b/Model/UserModel.php index f6d3471a..60784b14 100644 --- a/Model/UserModel.php +++ b/Model/UserModel.php @@ -286,12 +286,36 @@ class UserModel } $this->partie_gateway->quitGame($mailUtilisateur, $idPartie); } - public function getPlayersPseudo(int $idPartie) : array{ - $this->partie_gateway->getLesMailJoueurs($idPartie); - $lesPseudos = array(); - foreach ($this->partie_gateway->getLesMailJoueurs($idPartie) as $mail){ - $lesPseudos[] = $this->utilisateur_gateway->getPseudoByEmail($mail); + public function getPlayers(int $idPartie) : array{ + $lesJoueurs = $this->getLesJoueurs($idPartie); + $lesPseudo = array(); + foreach ($lesJoueurs as $joueur){ + $lesPseudo[] = $this->utilisateur_gateway->getPseudoByEmail($joueur); + } + return array($lesJoueurs, $lesPseudo); + } + public function getPlayerScore(string $mailUtilisateur,int $idPartie) : array{ + global $playerNumberPerGame; + $score = array(); + $result = $this->resoudre_gateway->getAllByPartieAndUtilisateur($mailUtilisateur, $idPartie); + foreach ($result as $row){ + $points = 0; + if ($row['temps'] == 0){ + $score[] = 0; + } + else if ($row['classement'] == 1){ + $score[] = $this->enigme_gateway->findById($row['enigme'])[0]->getPoints(); + } + else if ($row['classement'] == 2){ + $score[] = $this->enigme_gateway->findById($row['enigme'])[0]->getPoints() * 0.75; + } + else if ($row['classement'] == 3){ + $score[] = $this->enigme_gateway->findById($row['enigme'])[0]->getPoints() * 0.5; + } + else{ + $score[] = $this->enigme_gateway->findById($row['enigme'])[0]->getPoints() * 0.25; + } } - return $lesPseudos; + return $score; } } \ No newline at end of file diff --git a/View/src/JS/dashboard.js b/View/src/JS/dashboard.js index baa3219d..9ce50b23 100644 --- a/View/src/JS/dashboard.js +++ b/View/src/JS/dashboard.js @@ -1,4 +1,4 @@ -window.onload = function () { +function dashboard () { var xhr = new XMLHttpRequest(); xhr.open('POST', 'http://82.165.180.114/Scripted/index.php?action=getPlayersPseudo', true); xhr.responseType = 'text'; @@ -9,45 +9,83 @@ window.onload = function () { xhr.send(null); data = []; - if (players[0] != null) { - v = {} - v.type="line"; - v.xValueFormatString=players[0]; - v.dataPoints=[]; - data.push(v); + if (players[1][0] != null) { + v1 = {} + v1.type="line"; + v1.xValueFormatString=players[1][0]; + v1.dataPoints=[]; + var xhr = new XMLHttpRequest(); + xhr.open('POST', 'http://82.165.180.114/Scripted/index.php?action=getPlayerScore&joueur='. players[0][0], true); + xhr.responseType = 'text'; + xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + var score = xhr.onload = function () { + return JSON.parse(xhr.responseText); + }; + xhr.send(null); + for (i = 0; i < score.length; i++) { + v1.dataPoints.push({x:i+1,y:score[i]}); + } + data.push(v1); } // v.dataPoints.push({x:0,y:0}); // v.dataPoints.push({x:0.5,y:300}); - if (players[1] != null) { - v = {} - v.type="line"; - v.xValueFormatString=players[1]; - v.dataPoints=[]; - data.push(v); + if (players[1][1] != null) { + v2 = {} + v2.type="line"; + v2.xValueFormatString=players[1][1]; + v2.dataPoints=[]; + var xhr = new XMLHttpRequest(); + xhr.open('POST', 'http://82.165.180.114/Scripted/index.php?action=getPlayerScore&joueur='. players[0][1], true); + xhr.responseType = 'text'; + xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + var score = xhr.onload = function () { + return JSON.parse(xhr.responseText); + }; + xhr.send(null); + for (i = 0; i < score.length; i++) { + v2.dataPoints.push({x:i+1,y:score[i]}); + } + data.push(v2); } - // v.dataPoints.push({x:0,y:0}); - // v.dataPoints.push({x:0.5,y:300}); - if (players[2] != null) { - v = {} - v.type="line"; - v.xValueFormatString=players[2]; - v.dataPoints=[]; - data.push(v); + if (players[1][2] != null) { + v3 = {} + v3.type="line"; + v3.xValueFormatString=players[1][2]; + v3.dataPoints=[]; + var xhr = new XMLHttpRequest(); + xhr.open('POST', 'http://82.165.180.114/Scripted/index.php?action=getPlayerScore&joueur='. players[0][2], true); + xhr.responseType = 'text'; + xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + var score = xhr.onload = function () { + return JSON.parse(xhr.responseText); + }; + xhr.send(null); + for (i = 0; i < score.length; i++) { + v3.dataPoints.push({x:i+1,y:score[i]}); + } + data.push(v3); } - // v.dataPoints.push({x:0,y:0}); - // v.dataPoints.push({x:0.5,y:300}); - if (players[3] != null) { - v = {} - v.type="line"; - v.xValueFormatString=players[3]; - v.dataPoints=[]; - data.push(v); + if (players[1][3] != null) { + v4 = {} + v4.type="line"; + v4.xValueFormatString=players[1][3]; + v4.dataPoints=[]; + var xhr = new XMLHttpRequest(); + xhr.open('POST', 'http://82.165.180.114/Scripted/index.php?action=getPlayerScore&joueur='. players[0][3], true); + xhr.responseType = 'text'; + xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + var score = xhr.onload = function () { + return JSON.parse(xhr.responseText); + }; + xhr.send(null); + for (i = 0; i < score.length; i++) { + v3.dataPoints.push({x:i+1,y:score[i]}); + } + data.push(v4); } - // v.dataPoints.push({x:0,y:0}); - // v.dataPoints.push({x:0.5,y:300}); console.log(data); @@ -77,4 +115,10 @@ window.onload = function () { data }); chart.render(); - } \ No newline at end of file +} + +window.addEventListener("load", start); +function start(){ + setInterval('dashboard()', 1000); + +} \ No newline at end of file