From 41d36fe86db8bfb428bb0fd75528c62ca2ba33bd Mon Sep 17 00:00:00 2001 From: Deon George Date: Fri, 26 Nov 2021 17:19:55 +1100 Subject: [PATCH] User dashboard caching --- app/Http/Controllers/UserController.php | 7 ++++- app/Models/Domain.php | 34 ++++++++++++++----------- resources/views/dashboard.blade.php | 8 +++--- 3 files changed, 29 insertions(+), 20 deletions(-) diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index b2095cc..37eec72 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers; use Illuminate\Auth\Events\Registered; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; use App\Models\User; @@ -50,7 +51,11 @@ class UserController extends Controller public function dashboard() { - return view('dashboard'); + $user = Auth::user(); + $user->load('systems.addresses.zone.domain'); + + return view('dashboard') + ->with('user',$user); } public function home() diff --git a/app/Models/Domain.php b/app/Models/Domain.php index 106887e..f6fe153 100644 --- a/app/Models/Domain.php +++ b/app/Models/Domain.php @@ -61,7 +61,7 @@ class Domain extends Model if (! $this->echoareas->count()) return collect(); - $key = sprintf('%s_%d','daily_echoarea_stats',$this->id); + $key = sprintf('%s_%d','daily_area_stats',$this->id); return Cache::driver('redis')->remember($key,self::CACHE_TIME,function() { $where = ['echoarea_id'=>$this->echoareas->pluck('id')->toArray()]; @@ -99,24 +99,28 @@ class Domain extends Model if (! $this->echoareas->count()) return collect(); - $where = collect(['echoarea_id'=>$this->echoareas->pluck('id')->toArray()]); + $key = sprintf('%s_%d_%d','stats',$this->id,$o?->id); - if ($o) - $where->put('fftn_id',$o->addresses()->pluck('id')); + return Cache::driver('redis')->remember($key,self::CACHE_TIME,function() use ($o) { + $where = collect(['echoarea_id'=>$this->echoareas->pluck('id')->toArray()]); - $echostats = Echomail::countGroupBy(['echoarea_id'],$where->toArray()); + if ($o) + $where->put('fftn_id',$o->addresses()->pluck('id')); - return $this->echoareas->map(function($item) use ($echostats) { - $stats = $echostats->filter(function($x) use ($item) { - return $x->id->echoarea_id == $item->id; + $echostats = Echomail::countGroupBy(['echoarea_id'],$where->toArray()); + + return $this->echoareas->map(function($item) use ($echostats) { + $stats = $echostats->filter(function($x) use ($item) { + return $x->id->echoarea_id == $item->id; + }); + + $item->count = 0; + + foreach ($stats as $o) + $item->count += $o->count; + + return $item; }); - - $item->count = 0; - - foreach ($stats as $o) - $item->count += $o->count; - - return $item; }); } } \ No newline at end of file diff --git a/resources/views/dashboard.blade.php b/resources/views/dashboard.blade.php index 16ff935..bcbaa4c 100644 --- a/resources/views/dashboard.blade.php +++ b/resources/views/dashboard.blade.php @@ -161,7 +161,7 @@ name: 'Networks', colorByPoint: true, data: [ - @foreach($o->addresses->pluck('zone.domain')->sortBy('name') as $oo) + @foreach(($xx=$user->systems->pluck('addresses')->flatten()->pluck('zone.domain')->sortBy('name')) as $oo) @php($x = $oo->stats()) { name: '{{ $oo->name }}', @@ -176,7 +176,7 @@ colorByPoint: true, pointPlacement: 0.1, data: [ - @foreach($o->addresses->pluck('zone.domain')->sortBy('name') as $oo) + @foreach($xx as $oo) @php($x = $oo->stats($o)) { name: '{{ $oo->name }}', @@ -196,7 +196,7 @@ } }, series: [ - @foreach($o->addresses->pluck('zone.domain')->sortBy('name') as $oo) + @foreach($xx as $oo) @php($x = $oo->stats()) { name: '{{ $oo->name }}', @@ -205,7 +205,7 @@ }, @endforeach - @foreach($o->addresses->pluck('zone.domain')->sortBy('name') as $oo) + @foreach($xx as $oo) @php($x = $oo->stats($o)) { name: '{{ $oo->name }}',