<?php

declare(strict_types=1);

namespace App\Services\System;

use App\Models\Tenant;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Validation\ValidationException;

class AllowedTenantUniverse
{
    public const PLATFORM_TENANT_EXTERNAL_ID = 'platform';

    public function query(): Builder
    {
        return Tenant::query()
            ->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.',
        ]);
    }
}
