From 9dbbede524650a4ea70641d92418faaca1eee4a3 Mon Sep 17 00:00:00 2001
From: Table <romain.drouin@ensiie.fr>
Date: Sun, 8 May 2016 21:45:53 +0200
Subject: [PATCH] debut de la mise en place de la gestion des parties

---
 app/controller/AdminController.php           | 391 ++++++++++++++++++-
 app/kernel/Router.php                        |  77 ++++
 app/model/Admin.php                          |  80 ++++
 app/model/Partie.php                         |   6 +-
 app/view/Admin/display.html                  |   2 +-
 app/view/Admin/displayListPartie.html        |  41 ++
 app/view/Admin/displayModifPartieStep1.html  |  51 +++
 app/view/Admin/displayModifPartieStep2.html  |  47 +++
 app/view/Admin/displayModifPartieStepe1.html |  65 +++
 app/view/Admin/displayModifPartieStepe2.html |  49 +++
 10 files changed, 804 insertions(+), 5 deletions(-)
 create mode 100644 app/view/Admin/displayListPartie.html
 create mode 100644 app/view/Admin/displayModifPartieStep1.html
 create mode 100644 app/view/Admin/displayModifPartieStep2.html
 create mode 100644 app/view/Admin/displayModifPartieStepe1.html
 create mode 100644 app/view/Admin/displayModifPartieStepe2.html

diff --git a/app/controller/AdminController.php b/app/controller/AdminController.php
index bc3d236..f75758e 100644
--- a/app/controller/AdminController.php
+++ b/app/controller/AdminController.php
@@ -74,7 +74,7 @@ class AdminController extends Controller {
         if(isset($_FILES['image'])) {
             list($err, $image) = getImage($_FILES['image'], 512, 512);
             if ($err == 0) {
-                saveImage($image, ROOT . "/www/images/jeu/" . $data['slug_jeu'] . ".jpg");
+                saveImage($image, ROOT . "/www/images/jeu/" . $_POST['slug_jeu'] . ".jpg");
             } elseif($err == 2) {
                 $_SESSION["addRequestErrCode"] = $err; // on stocke le code d'erreur
                 header('Location:../modif'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne)
@@ -105,4 +105,393 @@ class AdminController extends Controller {
     public function displaySupprimeJoueurOK() {
         $this->view->display();
     }
+    
+    public function displayListPartie() {
+        $this->view->listPartie = Admin::getListPartie();
+        $this->view->display();        
+    }
+    
+    public function initModifPartie()  {
+        session_start();
+        $id = $this->route["params"]["slug"];
+        $partie = Partie::getFromId($id);
+        $jeuactuel = Jeu::getFromSlug($partie->jeu);
+        if($jeuactuel->type == "equipes"){
+            $_SESSION['equipes'] = Admin::getEquipes($id);
+            $_SESSION['jeu_select'] = $jeuactuel;
+            header("location:modif/stepe1");
+        } else {
+            $_SESSION['joueurs_select'] = Admin::getListeJoueur($id);
+            $_SESSION['jeu_select'] = $jeuactuel;
+            header("location:modif/step1");
+        }
+    }
+    
+    public function displayModifPartieStepe1()
+    {
+        session_start();
+        if (!isset($_SESSION['jeu_select']) || !isset($_SESSION['equipes'])) {
+            header("Location:../add_partie");
+            die();
+        }
+        if(isset($_SESSION['errMsg'])){
+            $this->view->errMsg = $_SESSION['errMsg'];
+            unset($_SESSION['errMsg']);
+        }
+        if (is_null($_SESSION['jeu_select']->max_joueurs)) {
+            $this->view->maxj = "plus de";
+        }
+        else {
+            $this->view->maxj = $_SESSION['jeu_select']->max_joueurs;
+        }
+        if (is_null($_SESSION['jeu_select']->max_equipes)) {
+            $this->view->maxe = "plus d'";
+        }
+        else{
+            $this->view->maxe = $_SESSION['jeu_select']->max_equipes." ";
+        }
+        $this->view->jeuactuel = $_SESSION['jeu_select'];
+        $this->view->listej = Profil::getList();
+        $this->view->equipes = $_SESSION['equipes'];
+        $this->view->display();
+    }
+
+    public function displayModifPartieStep1()
+    {
+        session_start();
+        if (!isset($_SESSION['jeu_select'])) {
+            header("Location:../add_partie");
+			die();
+		}
+        if(isset($_SESSION['errMsg'])){
+            $this->view->errMsg = $_SESSION['errMsg'];
+            unset($_SESSION['errMsg']);
+        }
+
+        if ($_SESSION['jeu_select']->max_joueurs === "")
+            $this->view->max = "plus";
+        else
+            $this->view->max = $_SESSION['jeu_select']->max_joueurs;
+
+        $this->view->jeuactuel = $_SESSION['jeu_select'];
+        $this->view->listej = Profil::getList();
+        $this->view->display();
+    }
+
+    private static function error($errstr, $step){
+        session_start();
+        $_SESSION['errMsg'] = $errstr;
+        if($step == "step0") {
+            header("Location:../add_partie");
+            die();
+        }
+        else if($step == "step1") {
+            header("Location:step1");
+            die();
+        }
+        else if($step == "step2") {
+            header("Location:step2");
+            die();
+        }
+        else if($step == "stepe1") {
+            header("Location:stepe1");
+            die();
+        }
+        else if($step == "stepe2") {
+            header("Location:stepe2");
+            die();
+        }
+        else {
+            header("Location:../add_partie");
+            die();
+        }
+    }
+
+    public static function ModifPartieaddjoueurs1()
+    {
+        session_start();
+        if (!isset($_SESSION['jeu_select'])) {
+            header("Location:../add_partie");
+            die();
+        }
+
+        $jeu = $_SESSION['jeu_select'];
+
+        if (!isset($_POST["joueur"])) {
+            if ($jeu->type == 'equipes') {
+                self::error("<h1>Erreur : pas de joueur entré.</h1>", "stepe1");
+                die();
+            }
+            else {
+                self::error("<h1>Erreur : pas de joueur entré.</h1>", "step1");
+                die();
+            }
+        }
+
+        $joueur = $_POST["joueur"];
+
+        if (Profil::checkExists($joueur)) {
+            $joueur_objet = Profil::getFromSlug($joueur);
+        }
+        else {
+            if ($jeu->type == 'equipes') {
+                self::error("<h1>Erreur : le joueur est introuvable dans la base de données.</h1>", "stepe1");
+                die();
+            }
+            else {
+                self::error("<h1>Erreur : le joueur est introuvable dans la base de données.</h1>", "step1");
+                die();
+            }
+        }
+
+        if ($jeu->type == 'equipes') {
+            $ke = $_POST['equipejadd'];
+            foreach ($_SESSION['equipes'] as $equipe) {
+                if (in_array($joueur_objet, $equipe)) {
+                    self::error("<h1>Erreur : le joueur a déjà été inscrit pour cette partie.</h1>", "stepe1");
+                    die();
+                }
+            }
+            array_push($_SESSION['equipes'][$ke], $joueur_objet);
+            header("Location:stepe1");
+            die();
+        }
+        else {
+            if (!isset($_SESSION['joueurs_select'])) {
+                $_SESSION['joueurs_select'] = array($joueur_objet);
+                header("Location:step1");
+                die();
+            }
+
+            if (!in_array($joueur_objet, $_SESSION['joueurs_select']))
+                array_push($_SESSION['joueurs_select'], $joueur_objet);
+            else {
+                self::error("<h1>Erreur : le joueur a déjà été inscrit pour cette partie.</h1>", "step1");
+                die();
+            }
+            header("Location:step1");
+            die();
+        }
+    }
+
+    public static function ModifPartieclearstep1()
+    {
+        session_start();
+        if (!isset($_SESSION['jeu_select'])) {
+            header("Location:../add_partie");
+            die();
+        }
+        $jeu_actuel = $_SESSION['jeu_select'];
+        if ($jeu_actuel->type == 'equipes') {
+            if (!isset($_SESSION['equipes'])) {
+                header("Location:stepe1");
+                die();
+            }
+            $_SESSION['equipes'] = array(array());
+            header("Location:stepe1");
+            die();
+        }
+        else {
+            if (!isset($_SESSION['joueurs_select'])) {
+                header("Location:step1");
+                die();
+            }
+            unset($_SESSION['joueurs_select']);
+            header("Location:step1");
+            die();
+        }
+    }
+
+    public static function ModifPartiedeljoueurs1()
+    {
+        session_start();
+        if (!isset($_SESSION['jeu_select'])) {
+            header("Location:../add_partie");
+            die();
+        }
+
+        if ($_SESSION['jeu_select']->type == 'duels') {
+            if (!isset($_SESSION['joueurs_select'])) {
+                header("Location:step1");
+                die();
+            }
+        }
+        if ($_SESSION['jeu_select']->type == 'equipes') {
+            if (!isset($_SESSION['equipes'])) {
+                header("Location:stepe1");
+                die();
+            }
+        }
+
+        if (!isset($_POST['joueurdel'])) {
+            if ($_SESSION['jeu_select']->type == 'equipes') {
+                self::error("<h1>Erreur : variables manquantes.</h1>", "stepe1");
+                die();
+            }
+            else {
+                self::error("<h1>Erreur : variables manquantes.</h1>", "step1");
+                die();
+            }
+        }
+
+        if ($_SESSION['jeu_select']->type == 'equipes') {
+            unset($_SESSION['equipes'][$_POST['equipejdel']][$_POST['joueurdel']]);
+            $equipe_tmp = array();
+            foreach ($_SESSION['equipes'][$_POST['equipejdel']] as $j) {
+                array_push($equipe_tmp, $j);
+            }
+            $_SESSION['equipes'][$_POST['equipejdel']] = $equipe_tmp;
+            header("Location:stepe1");
+            die();
+        }
+        else {
+            unset($_SESSION['joueurs_select'][$_POST['joueurdel']]);
+            $joueurs_tmp = array();
+            foreach ($_SESSION['joueurs_select'] as $j) {
+                array_push($joueurs_tmp, $j);
+            }
+            $_SESSION['joueurs_select'] = $joueurs_tmp;
+            header("Location:step1");
+            die();
+        }
+    }
+
+    public static function ModifPartiedelequipe()
+    {
+        session_start();
+        if (!isset($_SESSION['jeu_select'])) {
+            header("Location:../add_partie");
+            die();
+        }
+        if (!isset($_SESSION['equipes'])) {
+            header("Location:stepe1");
+            die();
+        }
+        if (count($_SESSION['equipes']) <= 1) {
+            self::error("<h1>Erreur : vous ne pouvez pas supprimer la seule équipe restante.</h1>", "stepe1");
+            die();
+        }
+
+        if (!isset($_POST['equipe'])) {
+            self::error("<h1>Erreur : variables manquantes.</h1>", "stepe1");
+            die();
+        }
+
+        unset($_SESSION['equipes'][$_POST['equipe']]);
+        $equipe_tmp = array();
+        foreach ($_SESSION['equipes'] as $e) {
+            array_push($equipe_tmp, $e);
+        }
+        $_SESSION['equipes'] = $equipe_tmp;
+        header("Location:stepe1");
+        die();
+    }
+
+    public static function ModifPartieaddequipe()
+    {
+        session_start();
+        if (!isset($_SESSION['jeu_select'])) {
+            header("Location:../add_partie");
+			die();
+		}
+        if (count($_SESSION['equipes']) == $_SESSION['jeu_select']->max_equipes) {
+            self::error("<h1>Erreur : vous ne pouvez pas créer d'équipe supplémentaire.</h1>", "stepe1");
+			die();
+        }
+
+        array_push($_SESSION['equipes'], array());
+        header("Location:stepe1");
+		die();
+    }
+
+    public static function verifyModifPartieStep1()
+    {
+        session_start();
+        if (!isset($_SESSION['jeu_select'])) {
+            header("Location:../add_partie");
+            die();
+        }
+        $jeu_actuel = $_SESSION['jeu_select'];
+        if ($jeu_actuel->type == 'equipes') {
+            if (!isset($_SESSION['equipes'])) {
+                header("Location:stepe1");
+                die();
+            }
+            $equipes = $_SESSION['equipes'];
+            if (count($equipes) < $jeu_actuel->min_equipes) {
+                self::error("<h1>Erreur : il n'y a pas assez d'équipes.</h1>", "stepe1");
+                die();
+            }
+            if (count($equipes) > $jeu_actuel->max_equipes) {
+                self::error("<h1>Erreur : il y a trop d'équipes.</h1>", "stepe1");
+                die();
+            }
+
+            foreach ($equipes as $ke => $e) {
+                if (count($e) < $jeu_actuel->min_joueurs) {
+                    $ke = $ke + 1;
+                    self::error("<h1>Erreur : il n'y a pas assez de joueurs dans l'équipe $ke.</h1>", "stepe1");
+                    die();
+                }
+                if (!is_null($jeu_actuel->max_joueurs)) {
+                    if (count($e) > $jeu_actuel->max_joueurs) {
+                        $ke = $ke + 1;
+                        self::error("<h1>Erreur : il y a trop de joueurs dans l'équipe $ke.</h1>", "stepe1");
+                        die();
+                    }
+                }
+            }
+
+            header("Location:stepe2");
+            die();
+        }
+        else {
+            if (!isset($_SESSION['joueurs_select'])) {
+                header("Location:step1");
+                die();
+            }
+            $joueurs = $_SESSION['joueurs_select'];
+            if (count($joueurs) < $jeu_actuel->min_joueurs) {
+                self::error("<h1>Erreur : il n'y a pas assez de joueurs.</h1>", "step1");
+                die();
+            }
+            if (count($joueurs) > $jeu_actuel->max_joueurs) {
+                self::error("<h1>Erreur : il y a trop de joueurs.</h1>", "step1");
+                die();
+            }
+            header('Location:step2');
+            die();
+        }
+    }
+
+
+
+    public function displayModifPartieStep2()
+    {
+        session_start();
+        $id = $this->route["params"]["slug"];
+        if (!isset($_SESSION['jeu_select'])) {
+            header("Location:../add_partie");
+            die();
+        }
+        if (!isset($_SESSION['joueurs_select'])) {
+            header("Location:../add_partie/step1");
+            die();
+        }
+        if(isset($_SESSION['errMsg'])){
+            $this->view->errMsg = $_SESSION['errMsg'];
+            unset($_SESSION['errMsg']);
+        }
+
+
+        $this->view->jeuactuel = $_SESSION['jeu_select'];
+        $this->view->listejactuel = $_SESSION['joueurs_select'];
+        if($this->view->jeuactuel->type_scores == "scores") {
+            $this->view->scorePartie = Admin::getListeScorePartie($id);
+        } else {
+            $this->view->classement = Admin::getListeClassement($id);
+        }
+        $this->view->display();
+    }
+
 }
diff --git a/app/kernel/Router.php b/app/kernel/Router.php
index 78ccafe..70f8405 100644
--- a/app/kernel/Router.php
+++ b/app/kernel/Router.php
@@ -264,6 +264,83 @@ class Router
 				$result["params"]["slug"] = $parts[2];
 			}
 
+			else if($parts[0] == "admin" && count($parts) == 2 && $parts[1] == 'partie') {
+				$result["controller"] = 'Admin';
+				$result['action'] = "displayListPartie";
+			}
+
+			else if($parts[0] == "admin" && count($parts) == 4 && $parts[1] == 'partie' && $parts[3] == 'modifinit') {
+				$result["controller"] = 'Admin';
+				$result['action'] = "initModifPartie";
+				$result["params"]["slug"] = $parts[2];
+			}
+
+			else if($parts[0] == "admin" && count($parts) == 4 && $parts[1] == 'partie' && $parts[3] == 'modif') {
+				$result["controller"] = 'Admin';
+				$result['action'] = "initModifPartie";
+				$result["params"]["slug"] = $parts[2];
+			}
+
+			else if($parts[0] == "admin" && count($parts) == 5 && $parts[1] == 'partie' && $parts[3] == 'modif' && $parts[4] == 'stepe1') {
+				$result["controller"] = 'Admin';
+				$result['action'] = "displayModifPartieStepe1";
+				$result["params"]["slug"] = $parts[2];
+			}
+
+			else if($parts[0] == "admin" && count($parts) == 5 && $parts[1] == 'partie' && $parts[3] == 'modif' && $parts[4] == 'step1') {
+				$result["controller"] = 'Admin';
+				$result['action'] = "displayModifPartieStep1";
+				$result["params"]["slug"] = $parts[2];
+			}
+
+			else if($parts[0] == "admin" && count($parts) == 5 && $parts[1] == 'partie' && $parts[3] == 'modif' && $parts[4] == 'addjoueurs1') {
+				$result["controller"] = 'Admin';
+				$result['action'] = "ModifPartieaddjoueurs1";
+				$result["params"]["slug"] = $parts[2];
+			}
+
+			else if ($parts[0] == "admin" && count($parts) == 5 && $parts[1] == 'partie' && $parts[3] == 'modif' && $parts[4] == "clearstep1") {
+				$result["controller"] = "Admin";
+				$result["action"] = "ModifPartieclearstep1";
+				$result["params"]["slug"] = $parts[2];
+			}
+
+			else if($parts[0] == "admin" && count($parts) == 5 && $parts[1] == 'partie' && $parts[3] == 'modif' && $parts[4] == 'deljoueurs1') {
+				$result["controller"] = 'Admin';
+				$result['action'] = "ModifPartiedeljoueurs1";
+				$result["params"]["slug"] = $parts[2];
+			}
+
+			else if($parts[0] == "admin" && count($parts) == 5 && $parts[1] == 'partie' && $parts[3] == 'modif' && $parts[4] == 'delequipe') {
+				$result["controller"] = 'Admin';
+				$result['action'] = "ModifPartiedelequipe";
+				$result["params"]["slug"] = $parts[2];
+			}
+
+			else if($parts[0] == "admin" && count($parts) == 5 && $parts[1] == 'partie' && $parts[3] == 'modif' && $parts[4] == 'addequipe') {
+				$result["controller"] = 'Admin';
+				$result['action'] = "ModifPartieaddequipe";
+				$result["params"]["slug"] = $parts[2];
+			}
+
+			else if($parts[0] == "admin" && count($parts) == 5 && $parts[1] == 'partie' && $parts[3] == 'modif' && $parts[4] == 'verifystep1') {
+				$result["controller"] = 'Admin';
+				$result['action'] = "verifyModifPartieStep1";
+				$result["params"]["slug"] = $parts[2];
+			}
+
+			else if($parts[0] == "admin" && count($parts) == 5 && $parts[1] == 'partie' && $parts[3] == 'modif' && $parts[4] == 'step2') {
+				$result["controller"] = 'Admin';
+				$result['action'] = "displayModifPartieStep2";
+				$result["params"]["slug"] = $parts[2];
+			}
+
+			else if($parts[0] == "admin" && count($parts) == 5 && $parts[1] == 'partie' && $parts[3] == 'modif' && $parts[4] == 'stepe2') {
+				$result["controller"] = 'Admin';
+				$result['action'] = "displayModifPartieStepe2";
+				$result["params"]["slug"] = $parts[2];
+			}
+
             else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "addjoueurs1") {
                 $result["controller"] = "Partie";
                 $result["action"] = "addjoueurs1";
diff --git a/app/model/Admin.php b/app/model/Admin.php
index 73df4e4..3a6a101 100644
--- a/app/model/Admin.php
+++ b/app/model/Admin.php
@@ -97,4 +97,84 @@ class Admin extends Model {
         $req = $db->prepare($sql);
         $req->execute(array(':slug' => $slug));
     }
+
+    public static function getListPartie() {
+        $db = Database::getInstance(); // on récupère la connexion à la BDD
+        $sql = "SELECT * FROM R_partie JOIN R_jeu ON R_partie.jeu = R_jeu.slug ORDER BY date"; // on définit la requête qu'on enverra (on considère que le slug contient jeu/nomDuJeu pour le classement par jeu. Donc il faudrait encore faire un explode() sur le slug.
+        $req = $db->prepare($sql); // on prépare la requête (c'est là que la mémthode __call() est utile dans la classe Database d'ailleurs)
+        $req->execute();
+        $res = array();
+        while($ligne = $req->fetch(PDO::FETCH_ASSOC)) { // parcours toute la liste
+            $res[] = $ligne;
+        }
+        return $res;
+    }
+
+    public static function getEquipes($id) {
+        $db = Database::getInstance(); // on récupère la connexion à la BDD
+        $sql = "SELECT * FROM R_joueur_partie WHERE partie = :id ORDER BY classement"; // on définit la requête qu'on enverra (on considère que le slug contient jeu/nomDuJeu pour le classement par jeu. Donc il faudrait encore faire un explode() sur le slug.
+        $req = $db->prepare($sql); // on prépare la requête (c'est là que la mémthode __call() est utile dans la classe Database d'ailleurs)
+        $req->execute(array(':id' => $id));
+        $res = array();
+        $i = -1;
+        $classement_old = 0;
+        while($ligne = $req->fetch(PDO::FETCH_ASSOC)) {
+            if($classement_old != $ligne['classement']) {
+                $i = $i +1;
+                $classement_old = $ligne['classement'];
+                $res[$i] = array();
+            }
+            $res[$i][] = Profil::getFromSlug($ligne['joueur']);
+        }
+        return $res;
+    }
+
+    public static function getListeJoueur($id) {
+        $db = Database::getInstance(); // on récupère la connexion à la BDD
+        $sql = "SELECT * FROM R_joueur_partie WHERE partie = :id ORDER BY classement"; // on définit la requête qu'on enverra (on considère que le slug contient jeu/nomDuJeu pour le classement par jeu. Donc il faudrait encore faire un explode() sur le slug.
+        $req = $db->prepare($sql); // on prépare la requête (c'est là que la mémthode __call() est utile dans la classe Database d'ailleurs)
+        $req->execute(array(':id' => $id));
+        $res = array();
+        while($ligne = $req->fetch(PDO::FETCH_ASSOC)) { // parcours toute la liste
+            $res[] = Profil::getFromSlug($ligne['joueur']);
+        }
+        return $res;
+    }
+
+    public static function getListeScore($id) {
+        $db = Database::getInstance(); // on récupère la connexion à la BDD
+        $sql = "SELECT * FROM R_joueur_partie WHERE partie = :id ORDER BY classement"; // on définit la requête qu'on enverra (on considère que le slug contient jeu/nomDuJeu pour le classement par jeu. Donc il faudrait encore faire un explode() sur le slug.
+        $req = $db->prepare($sql); // on prépare la requête (c'est là que la mémthode __call() est utile dans la classe Database d'ailleurs)
+        $req->execute(array(':id' => $id));
+        $res = array();
+        while($ligne = $req->fetch(PDO::FETCH_ASSOC)) { // parcours toute la liste
+            $res[$ligne['joueur']] = $ligne['score'];
+        }
+        return $res;
+    }
+
+    public static function getListeScorePartie($id) {
+        $db = Database::getInstance(); // on récupère la connexion à la BDD
+        $sql = "SELECT * FROM R_joueur_partie WHERE partie = :id ORDER BY classement"; // on définit la requête qu'on enverra (on considère que le slug contient jeu/nomDuJeu pour le classement par jeu. Donc il faudrait encore faire un explode() sur le slug.
+        $req = $db->prepare($sql); // on prépare la requête (c'est là que la mémthode __call() est utile dans la classe Database d'ailleurs)
+        $req->execute(array(':id' => $id));
+        $res = array();
+        while($ligne = $req->fetch(PDO::FETCH_ASSOC)) { // parcours toute la liste
+            $res[$ligne['joueur']] = $ligne['score_partie'];
+        }
+        return $res;
+    }
+
+    public static function getListeClassement($id) {
+        $db = Database::getInstance(); // on récupère la connexion à la BDD
+        $sql = "SELECT * FROM R_joueur_partie WHERE partie = :id ORDER BY classement"; // on définit la requête qu'on enverra (on considère que le slug contient jeu/nomDuJeu pour le classement par jeu. Donc il faudrait encore faire un explode() sur le slug.
+        $req = $db->prepare($sql); // on prépare la requête (c'est là que la mémthode __call() est utile dans la classe Database d'ailleurs)
+        $req->execute(array(':id' => $id));
+        $res = array();
+        while($ligne = $req->fetch(PDO::FETCH_ASSOC)) { // parcours toute la liste
+            $res[$ligne['joueur']] = $ligne['classement'];
+        }
+        return $res;
+    }
+
 }
\ No newline at end of file
diff --git a/app/model/Partie.php b/app/model/Partie.php
index 8401ccb..c60355a 100644
--- a/app/model/Partie.php
+++ b/app/model/Partie.php
@@ -11,13 +11,13 @@ class Partie extends Model
 {
     public $joueurs, $scores, $lejeu, $date, $slug;
 
-    public static function getFromSlug($slug_partie)
+    public static function getFromId($id)
     {
         $db = Database::getInstance();
-        $sql = "SELECT * FROM R_partie WHERE slug = :slug";
+        $sql = "SELECT * FROM R_partie WHERE id = :id";
         $stmt = $db->prepare($sql);
         $stmt->setFetchMode(PDO::FETCH_CLASS, "Partie"); // règle le type dans lequel on doit mettre les données (PDO va chercher les attributs de la classe de même nom que ses colonnes de BDD et mettre dedans les valeurs correspondantes)
-        $stmt->execute(array(":slug" => $slug_partie));
+        $stmt->execute(array(":id" => $id));
         return $stmt->fetch();
     }
 
diff --git a/app/view/Admin/display.html b/app/view/Admin/display.html
index ad92559..8c349c8 100644
--- a/app/view/Admin/display.html
+++ b/app/view/Admin/display.html
@@ -13,7 +13,7 @@ include(ROOT."/app/view/Includes/header.include.html");
             <a href="admin/joueur">Gestion des Joueurs</a>
         </h3>
         <h3>
-            Gestion des Parties
+            <a href="admin/partie">Gestion des Parties</a>
         </h3>
     </article>
 
diff --git a/app/view/Admin/displayListPartie.html b/app/view/Admin/displayListPartie.html
new file mode 100644
index 0000000..2017444
--- /dev/null
+++ b/app/view/Admin/displayListPartie.html
@@ -0,0 +1,41 @@
+<?php
+	$page_title = "Page d'administration";
+include(ROOT."/app/view/Includes/header.include.html");
+?>
+
+<?php if(isset($_SESSION['user']) && Admin::estAdmin($_SESSION['user']->slug)) { ?>
+
+<article>
+    <h3 class="stat-title">Listes des parties</h3>
+    <table class="jeux-preferes">
+        <tr>
+            <th>Image</th>
+            <th>Jeu</th>
+            <th>Date</th>
+        </tr>
+        <?php
+            foreach($this->listPartie as $ligne) {
+        print "
+        <tr>
+            <td><a href=\"".BASE_URL."/jeu/".$ligne['slug']."\"> <img src=\"".BASE_URL."/images/jeu/".$ligne['slug'].".jpg\" alt=\"image de ".$ligne['jeu']."\" /></a></td>
+            <td><a href=\"".BASE_URL."/jeu/".$ligne['slug']."\">".$ligne['nom']."</a></td>
+            <td><a href=\"".BASE_URL."/admin/partie/".$ligne['slug']."\">".$ligne['date']."</a></td>
+            <td><a href=\"partie/".$ligne['id']."/modifinit\"><img src=\"".BASE_URL."/images/modif.svg\" alt=\"Modifier\"//></a></td>
+        </tr>
+        ";
+        }
+        ?>
+    </table>
+</article>
+
+
+
+
+
+<?php } else { ?>
+
+<article class="msg-erreur">Vous n'êtes pas connecté comme administrateur</article>'
+
+<?php } ?>
+
+<?php include(ROOT."/app/view/Includes/footer.include.html"); ?>
\ No newline at end of file
diff --git a/app/view/Admin/displayModifPartieStep1.html b/app/view/Admin/displayModifPartieStep1.html
new file mode 100644
index 0000000..5a76afa
--- /dev/null
+++ b/app/view/Admin/displayModifPartieStep1.html
@@ -0,0 +1,51 @@
+<?php 
+	$page_title = "Formulaire d'ajout de partie"; 
+	include(ROOT."/app/view/Includes/header.include.html");
+?>
+<?php $jeuactuel = $this->jeuactuel ?>
+<?php	if (!is_null($this->errMsg)){ ?>
+<article class="msg-erreur"><?php echo $this->errMsg;?></article>
+<?php } ?>
+<article>
+    <h2>Formulaire d'ajout de partie</h2>
+    <h3>Sélection des joueurs</h3>
+    <div class="addjeu-form">
+
+        <h4>Jeu : <?php echo $jeuactuel->nom; ?></h4>
+        <h4>De <?php echo $jeuactuel->min_joueurs; ?> à <?php echo $this->max; ?> joueurs</h4>
+        <form method="post" action="addjoueurs1">
+            <label for="joueur">Ajouter un joueur (pseudo) :</label>
+            <input type="text" id="joueur" name="joueur"/>
+            <input type="submit" name="submit" value="ajouter un joueur"/>
+        </form>
+        <?php if (isset($_SESSION['joueurs_select'])) { ?>
+        <h5>Joueurs actuellement sélectionnés :</h5>
+        <ul>
+            <?php foreach($_SESSION['joueurs_select'] as $k => $j){ ?>
+            <li>
+                <?php echo $j->pseudo; ?>
+
+
+                <form method="post" action="deljoueurs1">
+                    <input type="hidden" value="<?php echo $k;?>" name="joueurdel">
+                    <input type="submit" name="submit" value="supprimer ce joueur"/>
+                </form>
+            </li>
+            <?php } ?>
+            <?php } ?>
+        </ul>
+        <div class="submit">
+            <form method="post" action="clearstep1">
+                <input type="submit" name="submit" value="Remise à zéro"/>
+            </form>
+            <form method="post" action="../modif">
+                <input type="submit" name="submit" value="Réinitialiser"/>
+            </form>
+            <form method="post" action="verifystep1">
+                <input type="submit" name="submit" value="Étape suivante"/>
+            </form>
+        </div>
+    </div>
+</article>
+
+<?php include(ROOT."/app/view/Includes/footer.include.html"); ?>
diff --git a/app/view/Admin/displayModifPartieStep2.html b/app/view/Admin/displayModifPartieStep2.html
new file mode 100644
index 0000000..7ec88e8
--- /dev/null
+++ b/app/view/Admin/displayModifPartieStep2.html
@@ -0,0 +1,47 @@
+<?php 
+	$page_title = "Formulaire d'ajout de partie"; 
+	include(ROOT."/app/view/Includes/header.include.html"); 
+?>
+<?php $jeuactuel = $this->jeuactuel ?>
+<?php	if (!is_null($this->errMsg)){ ?>
+<article class="msg-erreur"><?php echo $this->errMsg;?></article>
+<?php } ?>
+<article>
+    <h2>Formulaire d'ajout de partie</h2>
+    <h3>Entrée des scores</h3>
+    <div class="addjeu-form">
+        <form method="post" action="verifystep2">
+            Jeu : <?php echo $jeuactuel->nom; ?><br/>
+            Joueurs :
+            <ul>
+                <?php foreach($this->listejactuel as $joueur){ ?>
+                <li><?php echo $joueur->pseudo; ?>
+                    <?php if($jeuactuel->type_scores == 'scores'){ ?>
+                    Score obtenu : <input type="text" title="score" required="" name="scores[]" value="<?php echo isset($this->scorePartie[$joueur->slug]) ? $this->scorePartie[$joueur->slug] : "" ; ?>"/>
+                    <?php } else { ?>
+                    Classement obtenu : <select title="score" required="" name="scores[]">
+                        <?php for ($j=1;$j<=count($this->listejactuel);$j++){ ?>
+                        <option value="<?php echo count($this->listejactuel)-$j;?>" <?php echo ((isset($this->classement[$joueur->slug]) && $this->classement[$joueur->slug] == $j)? "selected" : "") ?>><?php echo $j;?></option>
+
+                        <?php } ?>
+                    </select>
+                    <?php } ?>
+                </li>
+                <?php } ?>
+            </ul>
+            <br/>
+            <div class="submit">
+
+                <input type="reset" name="reset" value="Réinitialiser"/>
+                <input type="submit" name="submit" value="Modifier"/>
+            </div>
+        </form>
+        <div class="submit">
+            <form action="step1">
+                <input type="submit" name="submit" value="Étape précédente"/>
+            </form>
+        </div>
+    </div>
+</article>
+
+<?php include(ROOT."/app/view/Includes/footer.include.html"); ?>
diff --git a/app/view/Admin/displayModifPartieStepe1.html b/app/view/Admin/displayModifPartieStepe1.html
new file mode 100644
index 0000000..dbcea70
--- /dev/null
+++ b/app/view/Admin/displayModifPartieStepe1.html
@@ -0,0 +1,65 @@
+<?php 
+	$page_title = "Formulaire de Modification de partie";
+	include(ROOT."/app/view/Includes/header.include.html");
+?>
+<?php $jeuactuel = $this->jeuactuel ?>
+<?php	if (!is_null($this->errMsg)){ ?>
+<article class="msg-erreur"><?php echo $this->errMsg;?></article>
+<?php } ?>
+<article>
+    <h2>Formulaire de Modifaction de partie</h2>
+    <h3>Sélection des joueurs</h3>
+    <div class="addjeu-form">
+
+        <h4>Jeu : <?php echo $jeuactuel->nom; ?></h4>
+        <h4>De <?php echo $jeuactuel->min_equipes; ?> à <?php echo $this->maxe; ?>équipes (de <?php echo $jeuactuel->min_joueurs; ?> à <?php echo $this->maxj; ?> joueurs)</h4>
+
+        <?php foreach($this->equipes as $ke => $e) { ?>
+        <h5>Équipe <?php echo $ke+1; ?> </h5>
+        <ul>
+            <?php
+            foreach($e as $k => $j){ ?>
+            <li>
+                <?php echo $j->pseudo; ?>
+                <form method="post" action="deljoueurs1">
+                    <input type="hidden" value="<?php echo $k;?>" name="joueurdel"/>
+                    <input type="hidden" value="<?php echo $ke;?>" name="equipejdel"/>
+                    <input type="submit" name="submit" value="supprimer ce joueur"/>
+                </form>
+
+            </li>
+            <?php } ?>
+            <form method="post" action="addjoueurs1">
+                <label for="joueur">Ajouter un joueur à l'équipe <?php echo $ke+1;?> :</label>
+                <input type="text" id="joueur" name="joueur"/>
+                <input type="hidden" value="<?php echo $ke;?>" name="equipejadd" id="equipejadd"/>
+                <input type="submit" name="submit" value="Ajouter un joueur"/>
+            </form>
+            <form method="post" action="delequipe">
+                <input type="hidden" value="<?php echo $ke;?>" name="equipe"/>
+                <input type="submit" name="submit" value="Supprimer l'équipe <?php echo $ke+1;?>"/>
+            </form>
+        </ul>
+        <?php } ?>
+        <div class="submit">
+            <form method="post" action="addequipe">
+                <input type="submit" name="submit" value="Ajouter une équipe"/>
+            </form>
+
+            <form method="post" action="clearstep1">
+                <input type="submit" name="submit" value="Mise à zéro"/>
+            </form>
+            <form method="post" action="../modif">
+                <input type="submit" name="submit" value="Réinitialisation"/>
+            </form>
+            <form method="post" action="verifystep1">
+
+
+                <input type="submit" name="submit" value="Étape suivante"/>
+
+            </form>
+        </div>
+    </div>
+</article>
+
+<?php include(ROOT."/app/view/Includes/footer.include.html"); ?>
diff --git a/app/view/Admin/displayModifPartieStepe2.html b/app/view/Admin/displayModifPartieStepe2.html
new file mode 100644
index 0000000..ecf8b2a
--- /dev/null
+++ b/app/view/Admin/displayModifPartieStepe2.html
@@ -0,0 +1,49 @@
+<?php 
+	$page_title = "Formulaire d'ajout de partie"; 
+	include(ROOT."/app/view/Includes/header.include.html"); 
+?>
+<?php $jeuactuel = $this->jeuactuel ?>
+<?php	if (!is_null($this->errMsg)){ ?>
+<article class="msg-erreur"><?php echo $this->errMsg;?></article>
+<?php } ?>
+<article>
+    <h2>Formulaire d'ajout de partie</h2>
+    <h3>Entrée des scores</h3>
+    <div class="addjeu-form">
+        <form method="post" action="verifystep2">
+            Jeu : <?php echo $jeuactuel->nom; ?><br/>
+            Équipes :<br/>
+            <?php foreach($this->equipes as $ke => $e) { ?>
+            <h4>Équipe <?php echo $ke+1; ?> </h4>
+            <ul>
+                <?php
+                    foreach($e as $k => $j){ ?>
+                <li>
+                    <?php echo $j->pseudo; ?>
+                </li>
+                <?php } ?>
+            </ul>
+            <?php if($jeuactuel->type_scores == 'scores'){ ?>
+            Score obtenu : <input type="text" title="score" required="" name="scores[]"/>
+            <?php } else { ?>
+            Classement obtenu : <select title="score" required="" name="scores[]">
+            <?php for ($j=1;$j<= count($this->equipes);$j++){ ?>
+            <option value="<?php echo count($this->equipes)-$j;?>"><?php echo $j;?></option>
+            <?php } ?>
+        </select>
+            <?php } ?>
+            <?php } ?>
+            <div class="submit">
+                <input type="reset" name="reset" value="Réinitialiser"/>
+                <input type="submit" name="submit" value="Demander l'ajout"/>
+            </div>
+        </form>
+        <div class="submit">
+            <form action="../add_partie/stepe1">
+                <input type="submit" name="submit" value="Étape précédente"/>
+            </form>
+        </div>
+    </div>
+</article>
+
+<?php include(ROOT."/app/view/Includes/footer.include.html"); ?>
-- 
GitLab