diff --git a/app/Http/Controllers/DomainController.php b/app/Http/Controllers/DomainController.php index 083ae1e..c0ea05e 100644 --- a/app/Http/Controllers/DomainController.php +++ b/app/Http/Controllers/DomainController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use Illuminate\Http\Request; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Gate; @@ -10,6 +11,18 @@ use App\Models\{Address,Domain,Zone}; class DomainController extends Controller { + /** + * Daily stats as shown on the about page + * + * @param Domain $o + * @return Collection + */ + public function api_daily_stats(Request $request): Collection + { + $do = Domain::where('name',$request->name)->firstOrFail(); + return $do->daily_area_stats(); + } + /** * Add or edit a domain */ diff --git a/app/Models/Domain.php b/app/Models/Domain.php index 98296b4..e648d6d 100644 --- a/app/Models/Domain.php +++ b/app/Models/Domain.php @@ -139,10 +139,16 @@ class Domain extends Model ->get(); } + public function isManaged(): bool + { + return our_address()->pluck('zone.domain')->pluck('id')->contains($this->id); + } + /** * Determine if this zone is managed by this host * * @return bool + * @deprecated use self::isManaged(); */ public function managed(): bool { diff --git a/app/Models/User.php b/app/Models/User.php index 0263cbd..abd6b94 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -84,7 +84,6 @@ class User extends Authenticatable implements MustVerifyEmail ->get(); } - /** * See if the user is already a member of the chosen network * @@ -103,6 +102,7 @@ class User extends Authenticatable implements MustVerifyEmail */ public function isZC(): bool { + $this->load(['systems.addresses']); return $this->zc()->count() > 0; } diff --git a/app/helpers.php b/app/helpers.php index 5698c92..6f4c7e0 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -91,16 +91,26 @@ if (! function_exists('hexstr')) { */ function our_address(Domain $do=NULL,Address $ao=NULL): Collection|Address|NULL { - $our = Setup::findOrFail(config('app.id'))->system->akas; + static $so = NULL; + static $our = NULL; + if (! $so) + $so = Setup::findOrFail(config('app.id')); + + if (! $our) { + $so->load(['system.akas.zone.domain']); + $our = $so->system->akas; + } + + $filter = $our; if ($do) - $our = $our->filter(function($item) use ($do) { return $item->zone->domain_id === $do->id; })->sortBy('role'); + $filter = $our->filter(function($item) use ($do) { return $item->zone->domain_id === $do->id; })->sortBy('role'); // If we are looking for a specific address, and there is only 1 result, return it, otherwise return what we have - if ($ao && config('fido.strict') && ($x=$our->filter(function($item) use ($ao) { return $item->role <= $ao->role; })->sortBy('role'))->count()) + if ($ao && config('fido.strict') && ($x=$filter->filter(function($item) use ($ao) { return $item->role <= $ao->role; })->sortBy('role'))->count()) $our = $x; - return $ao ? $our->last() : $our; + return $ao ? $our->last() : ($do ? $filter : $our); } /** diff --git a/resources/views/about.blade.php b/resources/views/about.blade.php index 44781bf..e2f4b48 100644 --- a/resources/views/about.blade.php +++ b/resources/views/about.blade.php @@ -125,7 +125,7 @@ @js('highcharts') @append \ No newline at end of file diff --git a/resources/views/layouts/partials/sidebar.blade.php b/resources/views/layouts/partials/sidebar.blade.php index 6f88931..33c0635 100644 --- a/resources/views/layouts/partials/sidebar.blade.php +++ b/resources/views/layouts/partials/sidebar.blade.php @@ -14,8 +14,9 @@
Explore Networks
@foreach (\App\Models\Domain::select(['id','name']) ->when(((! $user) || (! $user->isAdmin())),function($query) { return $query->public()->active(); }) - ->orderBy('name')->get() as $o) - @if ($o->managed()) + ->orderBy('name') + ->get() as $o) + @if ($o->isManaged())
{{ $o->name }}
@endif @endforeach diff --git a/routes/api.php b/routes/api.php index 85f2e44..9bf67e3 100644 --- a/routes/api.php +++ b/routes/api.php @@ -14,3 +14,5 @@ use App\Http\Controllers\{DomainController,SystemController,ZoneController}; | is assigned the "api" middleware group. Enjoy building your API! | */ + +Route::get('/domain/daily',[DomainController::class,'api_daily_stats']); \ No newline at end of file