From 4229a9e76afec25a865727364d997e016888ee59 Mon Sep 17 00:00:00 2001
From: SASSU Thomas <thomas.sassu5@etu.univ-lorraine.fr>
Date: Mon, 23 Mar 2020 20:18:15 +0100
Subject: [PATCH] Partie 5

---
 GamePedia/index.php                          |  9 ++-
 GamePedia/php/script_TD4a.php                | 73 +++++++++-----------
 GamePedia/src/controleurs/ControleurGame.php |  7 ++
 GamePedia/src/modeles/Comment.php            |  2 +-
 GamePedia/src/modeles/Game.php               |  2 +-
 GamePedia/src/vues/VueGame.php               | 15 +++-
 6 files changed, 64 insertions(+), 44 deletions(-)

diff --git a/GamePedia/index.php b/GamePedia/index.php
index 441dfb7..63bd77c 100644
--- a/GamePedia/index.php
+++ b/GamePedia/index.php
@@ -22,14 +22,19 @@ $app->get('/',function () use ($app) {
     $app->response->headers->set('Content-Type', 'text/html');
 });
 
+// Affiche un jeu au fromat JSON
 $app->get('/api/games/:id',function ($id) {
     $c = new ControleurGame();
     $c->getGame($id);
 });
-
+// Affiche tous les jeu paginé au format JSON
 $app->get('/api/games/',function () {
     $c = new ControleurGame();
     $c->getGames();
 })->name('getGame');
-
+// Affiche les commentaires d'un jeu
+$app->get('/api/games/:id/comments',function ($id) {
+    $c = new ControleurGame();
+    $c->getGameComments($id);
+});
 $app->run();
\ No newline at end of file
diff --git a/GamePedia/php/script_TD4a.php b/GamePedia/php/script_TD4a.php
index 89f8549..9b00b0d 100644
--- a/GamePedia/php/script_TD4a.php
+++ b/GamePedia/php/script_TD4a.php
@@ -6,7 +6,6 @@ use gp\modeles\Comment;
 use gp\modeles\Game;
 use gp\modeles\User;
 use Illuminate\Database\Capsule\Manager as DB;
-use Faker;
 
 $db = new DB();
 $db->addConnection(parse_ini_file('../conf/conf.ini'));
@@ -16,47 +15,43 @@ $db->bootEloquent();
 
 // use the factory to create a Faker\Generator instance
 $faker = Faker\Factory::create();
-if(User::first()== null){
-    //all users
-    for($i=0; $i<2; $i++) {
-        $insert = false;
-        while (!$insert) {
-            try {
-                //fake data
-                $tmp = explode(' ', $faker->name);
-                $user['fname'] = $tmp[0];
-                $user['name'] = $tmp[1];
-                $user['address'] = $faker->address;
-                $user['email'] = $faker->email;
-                $user['tel'] = $faker->e164PhoneNumber;
-                $user['date'] = $faker->date('Y-m-d', '2005-01-01');
-                //insert
-                User::create($user['fname'], $user['name'], $user['email'], $user['address'], $user['tel'], $user['date']);
-                $insert = true;
-            } catch (PDOException $Exception) {
-                echo("Duplicate data : recreating new fake");
-            }
+//all users
+for($i=0; $i<2; $i++) {
+    $insert = false;
+    while (!$insert) {
+        try {
+            //fake data
+            $tmp = explode(' ', $faker->name);
+            $user['fname'] = $tmp[0];
+            $user['name'] = $tmp[1];
+            $user['address'] = $faker->address;
+            $user['email'] = $faker->email;
+            $user['tel'] = $faker->e164PhoneNumber;
+            $user['date'] = $faker->date('Y-m-d', '2005-01-01');
+            //insert
+            User::create($user['fname'], $user['name'], $user['email'], $user['address'], $user['tel'], $user['date']);
+            $insert = true;
+        } catch (PDOException $Exception) {
+            echo("Duplicate data : recreating new fake");
         }
     }
 }
-if(Comment::first()== null){
-    //all comments
-    $users = User::get();
-    $game = Game::where('id', '=', 12342)->first();
-    foreach($users as $user){
-        $insert = false;
-        while (!$insert) {
-            try {
-                //fake data
-                $title = $faker->text(50);
-                $content = $faker->text(200);
-                $date = $faker->date('Y-m-d', '2015-02-01');
-                //insert comment
-                Comment::create($game->id, $user->email, $title, $content, $date);
-                $insert = true;
-            } catch (PDOException $Exception) {
-                echo("Duplicate data : recreating new fake");
-            }
+//all comments
+$users = User::get();
+$game = Game::where('id', '=', 12342)->first();
+foreach($users as $user){
+    $insert = false;
+    while (!$insert) {
+        try {
+            //fake data
+            $title = $faker->text(50);
+            $content = $faker->text(200);
+            $date = $faker->date('Y-m-d', '2015-02-01');
+            //insert comment
+            Comment::create($game->id, $user->email, $title, $content, $date);
+            $insert = true;
+        } catch (PDOException $Exception) {
+            echo("Duplicate data : recreating new fake");
         }
     }
 }
\ No newline at end of file
diff --git a/GamePedia/src/controleurs/ControleurGame.php b/GamePedia/src/controleurs/ControleurGame.php
index 4ea410f..e4080f1 100644
--- a/GamePedia/src/controleurs/ControleurGame.php
+++ b/GamePedia/src/controleurs/ControleurGame.php
@@ -29,4 +29,11 @@ class ControleurGame
         $v = new VueGame(json_encode($results));
         $v->render('getGames');
     }
+
+    public function getGameComments($id){
+        $game = Game::where('id', '=', $id)->first();
+        $comments = $game->comments()->get();
+        $v = new VueGame(json_encode($comments));
+        $v->render('getComments');
+    }
 }
\ No newline at end of file
diff --git a/GamePedia/src/modeles/Comment.php b/GamePedia/src/modeles/Comment.php
index 1e313fb..affabd4 100644
--- a/GamePedia/src/modeles/Comment.php
+++ b/GamePedia/src/modeles/Comment.php
@@ -20,7 +20,7 @@ class Comment extends \Illuminate\Database\Eloquent\Model
     }
 
     function game(){
-        return $this->BelongsTo('gp\modeles\Game','id_game');
+        return $this->BelongsTo('gp\modeles\Game','id');
     }
     function user(){
         return $this->BelongsTo('gp\modeles\User', 'email');
diff --git a/GamePedia/src/modeles/Game.php b/GamePedia/src/modeles/Game.php
index ddc463d..120feec 100644
--- a/GamePedia/src/modeles/Game.php
+++ b/GamePedia/src/modeles/Game.php
@@ -32,6 +32,6 @@ class Game extends \Illuminate\Database\Eloquent\Model
         return $this->belongsToMany('gp\modeles\Games', 'similar_games','game1');
     }
     public function comments(){
-        return $this->belongsToMany('gp\modeles\comment', 'game2comment','game_id');
+        return $this->hasMany('gp\modeles\Comment','id_game');
     }
 }
\ No newline at end of file
diff --git a/GamePedia/src/vues/VueGame.php b/GamePedia/src/vues/VueGame.php
index d871564..8b95670 100644
--- a/GamePedia/src/vues/VueGame.php
+++ b/GamePedia/src/vues/VueGame.php
@@ -18,7 +18,12 @@ class VueGame
 //                break;
 //            }
 //            case 'getGames' : {
-//                $json = $this->afficher_getGame();
+//                $json = $this->afficher_getGames();
+//                $cd = '';
+//                break;
+//            }
+//            case 'getComments' : {
+//                $json = $this->afficher_getComments();
 //                $cd = '';
 //                break;
 //            }
@@ -29,4 +34,12 @@ class VueGame
 //    private function afficher_getGame() {
 //        return $this->tab;
 //    }
+//
+//    private function afficher_getGames() {
+//        return $this->tab;
+//    }
+//
+//    private function afficher_getComments() {
+//        return $this->tab;
+//    }
 }
\ No newline at end of file
-- 
GitLab