From db5576ed7287341b70c90aeb3b839aaa9aad0ff7 Mon Sep 17 00:00:00 2001
From: Thibault Debatty <thibault.debatty@gmail.com>
Date: Fri, 20 Jul 2018 12:26:46 +0200
Subject: [PATCH] Basic server view

---
 web/app/Server.php                        | 16 +++++++
 web/resources/views/server/show.blade.php | 52 ++++++++++++++---------
 2 files changed, 48 insertions(+), 20 deletions(-)

diff --git a/web/app/Server.php b/web/app/Server.php
index 604b0c5..b9d5e77 100644
--- a/web/app/Server.php
+++ b/web/app/Server.php
@@ -2,6 +2,7 @@
 
 namespace App;
 
+use MongoDB\Client as Mongo;
 use Illuminate\Database\Eloquent\Model;
 
 class Server extends Model
@@ -17,4 +18,19 @@ class Server extends Model
     public function organization() {
         return $this->belongsTo("App\Organization");
     }
+
+    public function lastRecord() {
+        $collection = (new Mongo)->monitoring->records;
+        return $collection->findOne(
+                ["server_id" => $this->id],
+                ["sort" => ["_id" => -1]]);
+    }
+
+    public function lastRecordTime() {
+        return $this->lastRecord()->time;
+    }
+
+    public function clientVersion() {
+        return $this->lastRecord()->version;
+    }
 }
diff --git a/web/resources/views/server/show.blade.php b/web/resources/views/server/show.blade.php
index 0f4873c..2544ab6 100644
--- a/web/resources/views/server/show.blade.php
+++ b/web/resources/views/server/show.blade.php
@@ -2,33 +2,45 @@
 
 @section('content')
 <div class="container">
-    <div class="row justify-content-center">
-        <div class="col-md-8">
+    <div class="row">
+        <div class="col-md-4">
             <div class="card">
-                <div class="card-header">{{ $server->name }}</div>
-
                 <div class="card-body">
-                    <p>Name: {{ $server->name }}</p>
+                    <p>Last heartbeet:<br>
+                    {{ Carbon\Carbon::createFromTimestamp($server->lastRecordTime())->toDateTimeString() }}</p>
 
-                    <div>
-                        <a class="btn btn-primary"
-                           href="{{ action('ServerController@edit', ['Server' => $server]) }}">
-                            <i class="fa fa-pencil" aria-hidden="true"></i> Edit
-                        </a>
+                    <p>Client version: {{ $server->clientVersion() }}</p>
+                </div>
+            </div>
 
-                        <form method="POST"
-                              action="{{ action('ServerController@destroy', ['Server' => $server]) }}"
-                              style="display: inline-block">
-                            {{ csrf_field() }}
-                            {{ method_field("DELETE") }}
-                            <button class="btn btn-danger">
-                                <i class="fa fa-times-circle" aria-hidden="true"></i> Delete
-                            </button>
-                        </form>
-                    </div>
+            <div class="card">
+                <div class="card-header">
+                    <h4>Danger zone</h4>
+                </div>
+
+                <div class="card-body">
+                    <a class="btn btn-primary"
+                       href="{{ action('ServerController@edit', ['Server' => $server]) }}">
+                        <i class="fa fa-pencil" aria-hidden="true"></i> Edit
+                    </a>
+
+                    <form method="POST"
+                          action="{{ action('ServerController@destroy', ['Server' => $server]) }}"
+                          style="display: inline-block">
+                        {{ csrf_field() }}
+                        {{ method_field("DELETE") }}
+                        <button class="btn btn-danger">
+                            <i class="fa fa-times-circle" aria-hidden="true"></i> Delete
+                        </button>
+                    </form>
                 </div>
             </div>
         </div>
+
+        <div class="col-md-8">
+            <h1>{{ $server->name }}</h1>
+        </div>
+
     </div>
 </div>
 @endsection
-- 
GitLab