where('external_id', '!=', self::PLATFORM_TENANT_EXTERNAL_ID); } public function isAllowed(Tenant $tenant): bool { return (string) $tenant->external_id !== self::PLATFORM_TENANT_EXTERNAL_ID; } public function ensureAllowed(Tenant $tenant): void { if ($this->isAllowed($tenant)) { return; } throw ValidationException::withMessages([ 'tenant_id' => 'This tenant is not eligible for System runbooks.', ]); } public function resolveAllowed(int|string|null $tenantId): ?Tenant { if (! is_numeric($tenantId)) { return null; } $tenant = Tenant::query()->whereKey((int) $tenantId)->first(); if (! $tenant instanceof Tenant) { return null; } $this->ensureAllowed($tenant); return $tenant; } public function resolveAllowedOrFail(int|string|null $tenantId): Tenant { if (! is_numeric($tenantId) || (int) $tenantId <= 0) { throw ValidationException::withMessages([ 'tenant_id' => 'Select a tenant.', ]); } $tenant = Tenant::query()->whereKey((int) $tenantId)->first(); if (! $tenant instanceof Tenant) { throw ValidationException::withMessages([ 'tenant_id' => 'Select a valid tenant.', ]); } $this->ensureAllowed($tenant); return $tenant; } }