From aa0f4751b327ea493b7f019dbbd186e4cebb18da Mon Sep 17 00:00:00 2001
From: btalhaoui <9967432+btalhaoui@users.noreply.github.com>
Date: Sat, 10 Feb 2018 03:16:50 +0100
Subject: [PATCH] Added reboot status on dashboard

---
 Web/app/Http/Controllers/HomeController.php    | 18 +++++++++++++-----
 .../Controllers/OrganizationController.php     |  2 +-
 Web/app/Models/Organizations.php               |  1 +
 Web/app/Models/Sensors.php                     |  2 +-
 Web/app/Models/Server.php                      | 18 ++++++++++++++++--
 Web/resources/views/home.blade.php             | 16 ++++++++++++++++
 Web/resources/views/org/detail.blade.php       | 15 ++++++++++++++-
 7 files changed, 62 insertions(+), 10 deletions(-)

diff --git a/Web/app/Http/Controllers/HomeController.php b/Web/app/Http/Controllers/HomeController.php
index a434dda..8003d45 100644
--- a/Web/app/Http/Controllers/HomeController.php
+++ b/Web/app/Http/Controllers/HomeController.php
@@ -2,8 +2,10 @@
 
 namespace App\Http\Controllers;
 
+use App\Models\Organizations;
+use App\Models\Server;
 use App\Models\Sensors;
-use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
 
 class HomeController extends Controller
 {
@@ -12,11 +14,9 @@ class HomeController extends Controller
      *
      * @return void
      */
-    public $model;
-    public function __construct(Sensors $sensor)
+    public function __construct()
     {
         $this->middleware('auth');
-        $this->model = $sensor;
     }
 
     /**
@@ -26,6 +26,14 @@ class HomeController extends Controller
      */
     public function index()
     {
-        return view("home",['sensor' => Sensors::all()]);
+        $organization =  Auth::user()->organizations()->get();
+        foreach($organization as $org){
+            $servers = $org->servers()->get();
+            foreach($servers as $server){
+                $server->lastState = $server->getLastState();
+            }
+            $org->servers = $servers;
+        }
+        return view("home",['organization' => $organization]);
     }
 }
diff --git a/Web/app/Http/Controllers/OrganizationController.php b/Web/app/Http/Controllers/OrganizationController.php
index dd3d226..8fe0644 100644
--- a/Web/app/Http/Controllers/OrganizationController.php
+++ b/Web/app/Http/Controllers/OrganizationController.php
@@ -23,7 +23,7 @@ class OrganizationController extends Controller
         if($org==null)abort(404);
         $servers = $org->servers()->get();
         foreach($servers as $server){
-            $server->sensors($server->id);
+            $server->sensors();
         }
        return view("org/detail",['organization' => $org , 'servers' => $servers]);
     }
diff --git a/Web/app/Models/Organizations.php b/Web/app/Models/Organizations.php
index ab53925..0f8a324 100644
--- a/Web/app/Models/Organizations.php
+++ b/Web/app/Models/Organizations.php
@@ -17,4 +17,5 @@ class Organizations extends Model
     {
         return $this->hasMany('App\Models\Server', 'organization_id');
     }
+    
 }
diff --git a/Web/app/Models/Sensors.php b/Web/app/Models/Sensors.php
index bdee213..ce635c4 100644
--- a/Web/app/Models/Sensors.php
+++ b/Web/app/Models/Sensors.php
@@ -13,6 +13,6 @@ class Sensors extends Moloquent
 
     public function server($id)
     {
-        $server = Server::find($id);
+        $this->server = Server::find($id);
     }
 }
\ No newline at end of file
diff --git a/Web/app/Models/Server.php b/Web/app/Models/Server.php
index 24bd5c9..bc2f939 100644
--- a/Web/app/Models/Server.php
+++ b/Web/app/Models/Server.php
@@ -8,12 +8,26 @@ class Server extends Model
 {
     protected $fillable = ['name'];
     public $sensors;
+    protected $primaryKey = 'id';
+    public $lastState;
     public function organization()
     {
         return $this->belongsTo('App\Models\Organizations');
     }
-    public function sensors($id)
+
+    public function sensors()
+    {
+        $sensors = Sensors::where("server_id","".$this->getKey())->get();
+        foreach($sensors as $sensor){
+            $sensor["content"] = json_decode($sensor["content"]);
+        }
+        return $this->sensors = $sensors;
+    }
+    public function getLastState()
     {
-        $this->sensors = json_encode(Sensors::where("server_id","".$id)->get());
+        $sensor = Sensors::where("server_id","".$this->getKey())->orderBy('created_at', 'desc')->first();
+        $sensor["content"] = json_decode($sensor["content"]);
+
+        return $this->lastState = $sensor;
     }
 }
diff --git a/Web/resources/views/home.blade.php b/Web/resources/views/home.blade.php
index e545ba7..f97e288 100644
--- a/Web/resources/views/home.blade.php
+++ b/Web/resources/views/home.blade.php
@@ -16,7 +16,23 @@
             Look at your organizations : <a href="org">
                             Organizations
                         </a>
+                    @foreach($organization as $org)
+                         <p> Organization : {{ $org->name }}</p>
+                            @foreach ($org->servers as $server)
+                                <p> Server : {{ $server->name }}</p>
+                                @if ($server->lastState["content"] != null)
 
+                                    <p> Last updated state:</p>
+
+                                    @if($server->lastState["content"]->{"Reboot"})
+                                        <p> ok</p>
+                                    @else
+                                        <p>not ok</p>
+                                    @endif
+
+                                @endif
+                            @endforeach
+                     @endforeach
                 </div>
             </div>
         </div>
diff --git a/Web/resources/views/org/detail.blade.php b/Web/resources/views/org/detail.blade.php
index 81f503b..a54421f 100644
--- a/Web/resources/views/org/detail.blade.php
+++ b/Web/resources/views/org/detail.blade.php
@@ -8,7 +8,20 @@
                 <div class="panel-heading">Organization : {{ $organization->name }}</div>
                 @foreach ($servers as $server)
                     <p> Server : {{ $server->name }}</p>
-                    <p> Sensors : {{ $server->sensors }}</p>
+                    @if ($server->sensors !=null)
+                        <p> Sensors :}</p>
+                        @foreach($server->sensors as $sensor){
+                        <p> {{$sensor["content"]->{"TCP"} }}</p>
+                        <p> {{$sensor["content"]->{"UDP"} }}</p>
+                        <p> {{$sensor["content"]->{"Network"} }}</p>
+                        <p> {{$sensor["content"]->{"Inodes"} }}</p>
+                        @if($sensor["content"]->{"Reboot"})
+                             <p> ok</p>
+                        @else
+                            <p>not ok</p>
+                        @endif
+                        @endforeach
+                    @endif
                 @endforeach
             </div>
         </div>
-- 
GitLab