From d253de992e54ecf23f95a210a694b0a5f89a3a79 Mon Sep 17 00:00:00 2001
From: Thibault Debatty <thibault.debatty@gmail.com>
Date: Thu, 11 Apr 2019 14:03:26 +0200
Subject: [PATCH] Add organization dashboard

---
 .../Controllers/OrganizationController.php    |  5 +++
 web/app/Http/Controllers/ServerController.php |  2 +-
 .../views/organization/dashboard.blade.php    | 36 +++++++++++++++++++
 web/routes/web.php                            |  3 +-
 4 files changed, 44 insertions(+), 2 deletions(-)
 create mode 100644 web/resources/views/organization/dashboard.blade.php

diff --git a/web/app/Http/Controllers/OrganizationController.php b/web/app/Http/Controllers/OrganizationController.php
index 77a8b12..d712506 100644
--- a/web/app/Http/Controllers/OrganizationController.php
+++ b/web/app/Http/Controllers/OrganizationController.php
@@ -78,6 +78,11 @@ class OrganizationController extends Controller
         return view("organization.show", array("organization" => $organization));
     }
 
+    public function dashboard(Organization $organization)
+    {
+        return view("organization.dashboard", array("organization" => $organization));
+    }
+
     /**
      * Show the form for editing the specified resource.
      *
diff --git a/web/app/Http/Controllers/ServerController.php b/web/app/Http/Controllers/ServerController.php
index 8fbfe6c..0e8219b 100644
--- a/web/app/Http/Controllers/ServerController.php
+++ b/web/app/Http/Controllers/ServerController.php
@@ -24,7 +24,7 @@ class ServerController extends Controller
     protected function validator(array $data)
     {
         return Validator::make($data, [
-            'name' => 'required|string|regex:/^[a-zA-Z0-9\s-\.]+$/|max:255'
+            'name' => 'required|string|regex:/^[a-zA-Z0-9\s\-\.]+$/|max:255'
         ]);
     }
 
diff --git a/web/resources/views/organization/dashboard.blade.php b/web/resources/views/organization/dashboard.blade.php
new file mode 100644
index 0000000..59fe349
--- /dev/null
+++ b/web/resources/views/organization/dashboard.blade.php
@@ -0,0 +1,36 @@
+@extends('layouts.app')
+
+@section('content')
+<div class="container-fluid">
+
+    <h1>{{ $organization->name }}</h1>
+
+    <div class="row">
+        @foreach($organization->servers()->orderBy("name")->get() as $server)
+        <div class="col-md-3">
+            <div class="card">
+                <div class="card-header">
+                    <h5 class="card-title">
+                        {{ $server->name }}
+                    </h5>
+                </div>
+
+                <div class="card-body">
+                    {!! $server->getBadge() !!}
+                    <p>
+                        {{ $server->lastRecordTime()->diffForHumans() }}
+                    </p>
+                </div>
+
+                <div class="card-footer">
+                    <a class="btn btn-primary btn-sm"
+                       href="{{ action("ServerController@show", ["server" => $server]) }}">
+                        View
+                    </a>
+                </div>
+            </div>
+        </div>
+        @endforeach
+    </div>
+</div>
+@endsection
diff --git a/web/routes/web.php b/web/routes/web.php
index 1958018..37d4193 100644
--- a/web/routes/web.php
+++ b/web/routes/web.php
@@ -22,10 +22,11 @@ Route::get("home", function() {
 });
 
 Route::get('app/dashboard', function() {
-    //return view("dashboard");
     return redirect(action("OrganizationController@index"));
 })->name('dashboard');
 
+Route::get('app/organizations/{organization}/dashboard', 'OrganizationController@dashboard');
+
 Route::resource('app/organizations', 'OrganizationController');
 Route::resource("app/organizations.user", "OrganizationUserController");
 Route::resource('app/servers', 'ServerController');
\ No newline at end of file
-- 
GitLab