<?php

namespace App\Filament\Pages;

use App\Models\Tenant;
use Filament\Pages\Page;
use Filament\Notifications\Notification;

class TenantSwitcher extends Page
{
    protected static ?string $navigationLabel = null;

    protected static ?string $title = null;

    protected static ?int $navigationSort = 99;

    protected string $view = 'filament.pages.tenant-switcher';

    public ?int $selectedTenantId = null;

    public static function canAccess(): bool
    {
        return auth()->user()?->is_system_admin ?? false;
    }

    public function mount(): void
    {
        $this->selectedTenantId = session('super_admin_viewing_tenant_id');
    }

    public function switchTenant(?int $tenantId): void
    {
        $this->selectedTenantId = $tenantId;

        if ($tenantId) {
            session(['super_admin_viewing_tenant_id' => $tenantId]);
            
            $tenant = Tenant::find($tenantId);
            
            Notification::make()
                ->success()
                ->title(__('filament/admin/tenant_switcher.تمالتبديلبنجاح'))
                ->body("تعرض الآن بيانات: {$tenant->name}")
                ->send();
        } else {
            session()->forget('super_admin_viewing_tenant_id');
            
            Notification::make()
                ->info()
                ->title(__('filament/admin/tenant_switcher.تمإلغاءالتحديد'))
                ->body('تعرض الآن جميع المؤسسات')
                ->send();
        }

        $this->redirect('/admin');
    }

    public function clearSelection(): void
    {
        session()->forget('super_admin_viewing_tenant_id');
        $this->selectedTenantId = null;

        Notification::make()
            ->info()
            ->title(__('filament/admin/tenant_switcher.تمإعادةالتعيين'))
            ->body('تعرض الآن جميع المؤسسات')
            ->send();

        $this->redirect('/admin');
    }
    public function getTitle(): string
    {
        return __('filament/admin/tenant_switcher.title');
    }
    public static function getNavigationLabel(): string
    {
        return __('filament/admin/tenant_switcher.navigation_label');
    }


}
