From e207e0a1d8dbae5c8e185d1add3239931459888e Mon Sep 17 00:00:00 2001 From: Deon George Date: Thu, 24 Jun 2021 23:09:09 +1000 Subject: [PATCH] Show ZC/RC name instead of system name, tweak FTN sort order --- app/Models/Address.php | 17 +++++++++++++++++ app/Models/System.php | 26 ++++++++++++++++++++++++++ resources/views/domain/view.blade.php | 6 +++--- 3 files changed, 46 insertions(+), 3 deletions(-) diff --git a/app/Models/Address.php b/app/Models/Address.php index 887c250..1adfaa4 100644 --- a/app/Models/Address.php +++ b/app/Models/Address.php @@ -12,6 +12,17 @@ class Address extends Model { use ScopeActive; + /* SCOPES */ + + public function scopeFTNOrder($query) + { + return $query + ->orderBy('region_id') + ->orderByRaw('host_id NULLS FIRST') + ->orderBy('node_id') + ->orderBy('point_id'); + } + /* RELATIONS */ public function system() @@ -101,6 +112,12 @@ class Address extends Model return ($o && $o->system->active) ? $o : NULL; } + /** + * Retrieve the address session details/passwords + * + * @param string $type + * @return string|null + */ public function session(string $type): ?string { static $session = NULL; diff --git a/app/Models/System.php b/app/Models/System.php index 130911c..527618d 100644 --- a/app/Models/System.php +++ b/app/Models/System.php @@ -5,6 +5,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use App\Http\Controllers\DomainController; use App\Traits\ScopeActive; class System extends Model @@ -21,4 +22,29 @@ class System extends Model ->orderBy('node_id') ->orderBy('point_id'); } + + /* GENERAL METHODS */ + + /** + * Return the system name, or role name for the zone + * + * @param Address $o + * @return string + */ + public function name(Address $o): string + { + switch ($o->attributes['role']) { + case DomainController::NODE_ZC; + return sprintf('ZC-%s-%05d',$o->zone->domain->name,$o->zone->zone_id); + + case DomainController::NODE_RC; + return sprintf('RC-%s-%05d',$o->zone->domain->name,$o->region_id); + + case DomainController::NODE_NC; + case DomainController::NODE_HC; + case NULL: + default: + return $this->name; + } + } } \ No newline at end of file diff --git a/resources/views/domain/view.blade.php b/resources/views/domain/view.blade.php index aa532bc..aa01a2a 100644 --- a/resources/views/domain/view.blade.php +++ b/resources/views/domain/view.blade.php @@ -71,7 +71,7 @@ @foreach ($o->zones as $oz) - {{ $oz->system->name }} + {{ sprintf('ZC-%s-%05d',$oz->domain->name,$oz->zone_id) }} {{ $oz->system->sysop }} {{ $oz->system->location }} Zone @@ -80,9 +80,9 @@ - @foreach ($oz->addresses()->orderBy('region_id')->orderBy('host_id','desc')->orderBy('node_id')->orderBy('point_id')->with(['system','zone.domain'])->get() as $ao) + @foreach ($oz->addresses()->FTNorder()->with(['system','zone.domain'])->get() as $ao) - {{ $ao->system->name }} + {{ $ao->system->name($ao) }} {{ $ao->system->sysop }} {{ $ao->system->location }} {{ $ao->role }}