From d0cac2e80585ac3d301d01e18d99bad737c44726 Mon Sep 17 00:00:00 2001
From: Eliah REBSTOCK <eliah.rebstock@ensiie.fr>
Date: Mon, 25 Apr 2016 21:36:50 +0200
Subject: [PATCH] suite Classe Partie

---
 app/controller/PartieController.php |  9 ++++++++
 app/kernel/Router.php               | 15 ++++++++++++-
 app/model/Partie.php                | 14 +++++++-----
 app/view/partie/displayForm.html    | 34 +++++++++++++++++++++++++++++
 app/view/partie/displayValid.html   | 10 +++++++++
 5 files changed, 76 insertions(+), 6 deletions(-)
 create mode 100644 app/view/partie/displayForm.html
 create mode 100644 app/view/partie/displayValid.html

diff --git a/app/controller/PartieController.php b/app/controller/PartieController.php
index bb22262..b4f0d74 100644
--- a/app/controller/PartieController.php
+++ b/app/controller/PartieController.php
@@ -8,5 +8,14 @@
  */
 class PartieController extends Controller
 {
+    public function displayForm(){
+        $this->view->liste = Jeu::getList();
+        $this->view->listej = Profil::getList();
+        $this->view->display();
+    }
+
+    public function displayValid(){
+        $this->view->display();
+    }
 
 }
\ No newline at end of file
diff --git a/app/kernel/Router.php b/app/kernel/Router.php
index 46e5b23..8f657f0 100644
--- a/app/kernel/Router.php
+++ b/app/kernel/Router.php
@@ -88,7 +88,20 @@ class Router { // classe PHP permettant l'analyse de l'URL des requêtes
 				$result["controller"] = "Register"; 
 				$result["action"] = "verify"; // "verify" pour appeler la méthode de vérification
 			}
-			
+
+			/*** Ajout de partie ***/
+			else if($parts[0] == "add_partie" && count($parts) == 1){ // formulaire d'ajout de partie
+				$result["controller"] = "Partie";
+				$result["action"] = "displayForm"; // "displayForm" pour afficher le formulaire
+			}
+            else if($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "valid"){ // Page d'ajout réussie
+                $result["controller"] = "Partie";
+                $result["action"] = "displayValid"; // "displayForm" pour afficher le formulaire
+            }
+            else if($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "verify"){ // Page d'ajout réussie
+                $result["controller"] = "Partie";
+                $result["action"] = "verify"; // "displayForm" pour afficher le formulaire
+            }
 			
 			// à chaque fois qu'on crée une nouvelle page, il faut rajouter un cas à cet endroit !
 			
diff --git a/app/model/Partie.php b/app/model/Partie.php
index 003512a..be577c2 100644
--- a/app/model/Partie.php
+++ b/app/model/Partie.php
@@ -27,17 +27,17 @@ class Partie extends Model
         return $stmt->fetchAll();
     }
 
-    public static function checkExists($slug_partie) { // méthode permettant de vérifier si un jeu existe dans la BDD
+    public static function checkExists($slug_partie) { // méthode permettant de vérifier si une partie existe dans la BDD
         $db = Database::getInstance(); // on récupère la connexion à la BDD
         $sql = "SELECT * FROM R_partie WHERE slug = :slug";
         $req = $db->prepare($sql); // on prépare la requête
         $req->execute(array(":slug" => $slug_partie)); // on remplace les variables dans la requête
 
         if ($result = $req->fetch()) { // on récupère l'enregistrement, s'il existe
-            return 1;
+            return true;
         }
 
-      return 0; // on aurait pu mettre deux return (un dans le if et un ici), mais bon...
+      return false; // on aurait pu mettre deux return (un dans le if et un ici), mais bon...
     }
 
     private static function calcul_classement($R){
@@ -60,7 +60,7 @@ class Partie extends Model
         $sql3 = "SELECT score FROM R_joueur_jeu WHERE joueur = :id_joueur AND jeu = :id_jeu;";
         $sql4 = "INSERT INTO R_joueur_partie (partie, joueur, classement, score)
                 VALUES ((:id_jeu, :date), :id_joueur, :classement, :score);";
-        $sql5 = "UPDATE INTO R_joueur_jeu (score) VALUES (:new_score);";
+        $sql5 = "UPDATE R_joueur_jeu SET score = :new_score WHERE joueur = :id_joueur AND jeu = :id_jeu;";
         $stmt0 = $db->prepare($sql0);
         $stmt1 = $db->prepare($sql1);
         $stmt2 = $db->prepare($sql2);
@@ -71,6 +71,9 @@ class Partie extends Model
         if($stmt0->execute(array(":nom_jeu" => $nom_jeu))) {
             if($row = $stmt0->fetch()) {
                 $id_jeu = $row[0];
+                if(!Jeu::checkExists($id_jeu))
+                    throw new UnexpectedValueException;
+
                 if($stmt1->execute(array(":id_jeu" => $id_jeu, ":date" => $date)))
                 {
                     $m = count($joueurs);
@@ -87,7 +90,8 @@ class Partie extends Model
                                         if($stmt4->execute(array(":id_jeu" => $id_jeu, ":date" => $date,
                                             ":id_joueur" => $id_joueur,
                                             ":classement" => $classement, ":score" => $old_score))){
-                                            if($stmt5->execute(array(":new_score"=> $old_score + $diff_scores[$j])))
+                                            if($stmt5->execute(array(":new_score"=> $old_score + $diff_scores[$j],
+                                                ":id_jeu" => $id_jeu,":id_joueur" => $id_joueur )))
                                             {
                                                 //C'est dans la boite
                                             }
diff --git a/app/view/partie/displayForm.html b/app/view/partie/displayForm.html
new file mode 100644
index 0000000..15310c8
--- /dev/null
+++ b/app/view/partie/displayForm.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html lang="fr">
+<head>
+    <meta charset="UTF-8">
+    <title>Formulaire d'ajout de partie</title>
+</head>
+<body>
+<header>
+    <h1>Formulaire d'ajout de partie</h1>
+</header>
+
+<form method="post" action="add_partie/verify">
+    <label for="jeu">Jeu : </label>
+    <select name="jeu" id="jeu">
+    <?php foreach($this->liste as $jeu){ ?>
+        <option><?php echo $jeu->nom; ?></option>
+    <?php } ?>
+    </select>
+    <label for="joueurs">Joueurs :</label>
+    <select name="joueurs" id="joueurs" multiple="multiple" size="5">
+        <?php foreach($this->listej as $joueur){ ?>
+        <option><?php echo $joueur->nom; ?></option>
+        <?php } ?>
+    </select>
+    <br/>
+    <label for="scores">Scores :</label><input type="text" name="scores" id="scores" /><br/>
+    <input type="submit" value="Ajouter" />
+</form>
+
+<footer>
+    <p>Le pied de page</p>
+</footer>
+</body>
+</html>
\ No newline at end of file
diff --git a/app/view/partie/displayValid.html b/app/view/partie/displayValid.html
new file mode 100644
index 0000000..566549b
--- /dev/null
+++ b/app/view/partie/displayValid.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+
+</body>
+</html>
\ No newline at end of file
-- 
GitLab