From 1fe5a0e2d6063d64881753d7d822bbf087cb4dbd Mon Sep 17 00:00:00 2001
From: Eliah REBSTOCK <eliah.rebstock@ensiie.fr>
Date: Mon, 25 Apr 2016 18:08:40 +0200
Subject: [PATCH] =?UTF-8?q?D=C3=A9but=20de=20classe=20Partie=20avec=20conc?=
 =?UTF-8?q?eption=20du=20mod=C3=A8le?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app/controller/PartieController.php |  12 +++
 app/model/Partie.php                | 109 ++++++++++++++++++++++++++++
 app/view/partie/display.html        |  17 +++++
 3 files changed, 138 insertions(+)
 create mode 100644 app/controller/PartieController.php
 create mode 100644 app/model/Partie.php
 create mode 100644 app/view/partie/display.html

diff --git a/app/controller/PartieController.php b/app/controller/PartieController.php
new file mode 100644
index 0000000..bb22262
--- /dev/null
+++ b/app/controller/PartieController.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * Created by PhpStorm.
+ * User: phoenix
+ * Date: 25/04/16
+ * Time: 15:27
+ */
+class PartieController extends Controller
+{
+
+}
\ No newline at end of file
diff --git a/app/model/Partie.php b/app/model/Partie.php
new file mode 100644
index 0000000..003512a
--- /dev/null
+++ b/app/model/Partie.php
@@ -0,0 +1,109 @@
+<?php
+
+/**
+ * Created by PhpStorm.
+ * User: phoenix
+ * Date: 25/04/16
+ * Time: 15:27
+ */
+class Partie extends Model
+{
+    public $joueurs, $scores, $lejeu, $date, $slug;
+
+    public static function getFromSlug($slug_partie) {
+        $db = Database::getInstance();
+        $sql = "SELECT * FROM R_partie WHERE slug = :slug";
+        $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));
+        return $stmt->fetch();
+    }
+
+    public static function getList() {
+        $db = Database::getInstance();
+        $sql = "SELECT * FROM R_partie";
+        $stmt = $db->query($sql);
+        $stmt->setFetchMode(PDO::FETCH_CLASS, "Partie");
+        return $stmt->fetchAll();
+    }
+
+    public static function checkExists($slug_partie) { // méthode permettant de vérifier si un jeu 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 0; // on aurait pu mettre deux return (un dans le if et un ici), mais bon...
+    }
+
+    private static function calcul_classement($R){
+        $m = count($R);
+
+        $R_classement = array_fill(0, $m, 0);
+        asort($R);
+        $i = 1;
+        foreach ($R as $k => $val){
+            $R_classement[$k] = $i;
+            $i++;
+        }
+        return $R_classement;
+    }
+    public static function addPartie($date, $joueurs, $diff_scores, $nom_jeu, $slug_partie) {
+        $db = Database::getInstance();
+        $sql0 = "SELECT id_jeu FROM R_jeu WHERE :nom_jeu;";
+        $sql1 = "INSERT INTO R_partie (id_jeu, date) VALUES (:id_jeu, :date);";
+        $sql2 = "SELECT slug FROM R_joueur WHERE pseudo = :joueur;";
+        $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);";
+        $stmt0 = $db->prepare($sql0);
+        $stmt1 = $db->prepare($sql1);
+        $stmt2 = $db->prepare($sql2);
+        $stmt3 = $db->prepare($sql3);
+        $stmt4 = $db->prepare($sql4);
+        $stmt5 = $db->prepare($sql5);
+
+        if($stmt0->execute(array(":nom_jeu" => $nom_jeu))) {
+            if($row = $stmt0->fetch()) {
+                $id_jeu = $row[0];
+                if($stmt1->execute(array(":id_jeu" => $id_jeu, ":date" => $date)))
+                {
+                    $m = count($joueurs);
+                    for($j = 0; $j<$m; $j++){
+                        if($stmt2->execute(array(":joueur" => $joueurs[$j])))
+                        {
+                            if($row = $stmt2->fetch()) {
+                                $id_joueur = $row[0];
+                                $classement = self::calcul_classement($diff_scores);
+                                if ($stmt3->execute(array(":id_joueur" => $id_joueur, ":id_jeu" => $id_jeu)))
+                                {
+                                    if($row = $stmt3->fetch()) {
+                                        $old_score = $row[0];
+                                        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])))
+                                            {
+                                                //C'est dans la boite
+                                            }
+                                        }
+                                    }
+
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        else {
+            echo "Arise, ça marche pas..."; die();
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/app/view/partie/display.html b/app/view/partie/display.html
new file mode 100644
index 0000000..c415045
--- /dev/null
+++ b/app/view/partie/display.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8"/>
+    <title>Ajout de partie</title>
+</head>
+<body>
+<header>
+    <h1>Page permettant d'ajouter une partie, par rapport à un jeu donné.</h1>
+</header>
+<h2>On mettra ici le nom du jeu</h2>
+
+<footer>
+    <p>Le pied de page</p>
+</footer>
+</body>
+</html>
-- 
GitLab