<?php

namespace App\Filament\Resources\Tenants\Schemas;

use Illuminate\Support\Str;
use Filament\Schemas\Schema;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\Toggle;
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
use Filament\Schemas\Components\Section;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\ColorPicker;
use Filament\Forms\Components\DateTimePicker;

class TenantForm
{
    public static function configure(Schema $schema): Schema
    {
        return $schema
            ->columns(2)
            ->components([
                Section::make('معلومات أساسية')
                    ->description('المعلومات الأساسية للمؤسسة')
                    ->schema([
                        TextInput::make('name')
                            ->label(__('filament/admin/tenant_resource.name'))
                            ->required()
                            ->maxLength(255)
                            ->live(onBlur: true)
                            ->afterStateUpdated(fn ($state, callable $set) => $set('slug', Str::slug($state)))
                            ->columnSpan(1),
                        
                        TextInput::make('slug')
                            ->label(__('filament/admin/tenant_resource.slug'))
                            ->required()
                            ->maxLength(255)
                            ->unique(ignoreRecord: true)
                            ->helperText('سيتم استخدامه في الروابط')
                            ->columnSpan(1),
                        
                        TextInput::make('domain')
                            ->label(__('filament/admin/tenant_resource.domain'))
                            ->url()
                            ->placeholder('https://example.com')
                            ->helperText('اختياري: نطاق مخصص للمؤسسة')
                            ->columnSpan(2),
                        
                        Toggle::make('is_active')
                            ->label(__('filament/admin/tenant_resource.is_active'))
                            ->default(true)
                            ->helperText('تعطيل المؤسسة يمنع جميع المستخدمين من الوصول')
                            ->columnSpan(2),
                    ])
                    ->columns(2)
                    ->columnSpan(2),

                Section::make('معلومات الاشتراك')
                    ->description('الخطة والحدود')
                    ->schema([
                        Select::make('plan')
                            ->label(__('filament/admin/tenant_resource.plan'))
                            ->options(['trial' => __('filament/admin/tenant_resource.plan.trial'), 'basic' => __('filament/admin/tenant_resource.plan.basic'), 'pro' => __('filament/admin/tenant_resource.plan.pro'), 'enterprise' => __('filament/admin/tenant_resource.plan.enterprise')])
                            ->default('trial')
                            ->required()
                            ->columnSpan(1),
                        
                        DateTimePicker::make('trial_ends_at')
                            ->label(__('filament/admin/tenant_resource.trial_ends_at'))
                            ->helperText('للخطة التجريبية فقط')
                            ->columnSpan(1),
                        
                        TextInput::make('paddle_customer_id')
                            ->label(__('filament/admin/tenant_resource.paddle_customer_id'))
                            ->disabled()
                            ->dehydrated(false)
                            ->helperText('يتم ملؤه تلقائياً عند الاشتراك')
                            ->columnSpan(2),
                    ])
                    ->columns(2)
                    ->columnSpan(2),

                Section::make('حدود التخزين')
                    ->description('المساحة المستخدمة والمتاحة')
                    ->schema([
                        TextInput::make('storage_used')
                            ->label(__('filament/admin/tenant_resource.storage_used'))
                            ->numeric()
                            ->default(0)
                            ->disabled()
                            ->dehydrated(false)
                            ->columnSpan(1),
                        
                        TextInput::make('storage_limit')
                            ->label(__('filament/admin/tenant_resource.storage_limit'))
                            ->numeric()
                            ->helperText('-1 = غير محدود')
                            ->columnSpan(1),
                    ])
                    ->columns(2)
                    ->columnSpan(2),

                Section::make('العلامة التجارية المخصصة')
                    ->description('تخصيص الشكل والألوان')
                    ->schema([
                        Toggle::make('custom_branding_enabled')
                            ->label(__('filament/admin/tenant_resource.custom_branding_enabled'))
                            ->default(false)
                            ->live()
                            ->columnSpan(2),
                        
                        FileUpload::make('logo_url')
                            ->label(__('filament/admin/tenant_resource.logo_url'))
                            ->image()
                            ->directory('tenants/logos')
                            ->visible(fn ($get) => $get('custom_branding_enabled'))
                            ->columnSpan(2),
                        
                        ColorPicker::make('primary_color')
                            ->label(__('filament/admin/tenant_resource.primary_color'))
                            ->visible(fn ($get) => $get('custom_branding_enabled'))
                            ->columnSpan(1),
                        
                        ColorPicker::make('secondary_color')
                            ->label(__('filament/admin/tenant_resource.secondary_color'))
                            ->visible(fn ($get) => $get('custom_branding_enabled'))
                            ->columnSpan(1),
                        
                        ColorPicker::make('sidebar_color')
                            ->label(__('filament/admin/tenant_resource.sidebar_color'))
                            ->visible(fn ($get) => $get('custom_branding_enabled'))
                            ->columnSpan(2),
                    ])
                    ->columns(2)
                    ->columnSpan(2)
                    ->collapsible(),
            ]);
    }
}
