<?php

declare(strict_types=1);

namespace App\Filament\Resources\Experts\Schemas;

use App\Filament\Support\SelectOptionLabels;

use App\Models\Expert;
use Filament\Forms\Components\Checkbox;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\Repeater;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
use Filament\Schemas\Components\Group;
use Filament\Schemas\Components\Section;
use Filament\Schemas\Schema;

class ExpertForm
{
    public static function configure(Schema $schema): Schema
    {
        return $schema->components([
            Group::make()
                ->schema([
                    Section::make('اطلاعات اصلی')
                        ->schema([
                            \App\Filament\Components\Form\UserSelect::create()
                                ->label('کاربر مرتبط'),
                            TextInput::make('brand_name')
                                ->label('نام خدمات‌دهنده')
                                ->maxLength(255)
                                ->columnSpan(6),
                            TextInput::make('position')
                                ->label('سمت/مقام')
                                ->maxLength(100)
                                ->columnSpan(6),
                            TextInput::make('workplace')
                                ->label('محل فعالیت (شرکت/موسسه)')
                                ->maxLength(255)
                                ->columnSpan(12),
                            TextInput::make('main_category')
                                ->label('حوزه فعالیت')
                                ->maxLength(255)
                                ->columnSpan(6),
                            TextInput::make('sub_category')
                                ->label('زیرحوزه')
                                ->maxLength(255)
                                ->columnSpan(6),
                            TextInput::make('work_phone')
                                ->label('شماره تماس')
                                ->tel()
                                ->maxLength(50)
                                ->columnSpan(6),
                            TextInput::make('work_email')
                                ->label('ایمیل')
                                ->email()
                                ->maxLength(255)
                                ->columnSpan(6),
                            Select::make('work_province_id')
                                ->label('استان')
                                ->relationship('province', 'name')
                                ->getOptionLabelFromRecordUsing(fn ($record) => SelectOptionLabels::generic($record, 'name', 'استان'))
                                ->searchable()
                                ->preload()
                                ->columnSpan(6),
                            Select::make('work_county_id')
                                ->label('شهرستان')
                                ->relationship('county', 'name')
                                ->getOptionLabelFromRecordUsing(fn ($record) => SelectOptionLabels::generic($record, 'name', 'شهر'))
                                ->searchable()
                                ->preload()
                                ->columnSpan(6),
                            Textarea::make('work_address')
                                ->label('آدرس')
                                ->rows(2)
                                ->columnSpan(12),
                            Select::make('status')
                                ->label('وضعیت حساب')
                                ->options(Expert::statusOptions())
                                ->default(Expert::STATUS_PENDING)
                                ->required()
                                ->columnSpan(6),
                        ])
                        ->columns(12)
                        ->columnSpan(12),

                    Section::make('مدارک تحصیلی')
                        ->schema([
                            Repeater::make('educationItems')
                                ->relationship()
                                ->schema([
                                    TextInput::make('title')->label('عنوان مدرک')->required()->columnSpan(4),
                                    TextInput::make('institution')->label('موسسه')->columnSpan(3),
                                    TextInput::make('year')->label('سال')->columnSpan(2),
                                    FileUpload::make('document_path')
                                        ->label('فایل مدرک')
                                        ->directory('files/experts/education')
                                        ->columnSpan(3),
                                ])
                                ->columns(12)
                                ->addActionLabel('افزودن مدرک')
                                ->collapsible()
                                ->deletable(true)
                                ->columnSpan(12),
                        ])
                        ->columns(12)
                        ->columnSpan(12),

                    Section::make('گواهینامه‌ها / مجوزها')
                        ->schema([
                            Repeater::make('certificates')
                                ->relationship()
                                ->schema([
                                    TextInput::make('name')->label('نام گواهینامه/مجوز')->required()->columnSpan(4),
                                    FileUpload::make('document_path')
                                        ->label('فایل')
                                        ->directory('files/experts/certificates')
                                        ->columnSpan(4),
                                    Checkbox::make('verified')
                                        ->label('تایید ادمین')
                                        ->default(false)
                                        ->columnSpan(2),
                                ])
                                ->columns(12)
                                ->addActionLabel('افزودن گواهینامه')
                                ->collapsible()
                                ->deletable(true)
                                ->columnSpan(12),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                ])
                ->columns(12)
                ->columnSpan(8),

            Group::make()
                ->schema([
                    Section::make('اطلاعات سیستم')
                        ->schema([
                            \App\Filament\Components\Form\CreatedBySelect::create()->required(),
                            \App\Filament\Components\Form\UpdatedBySelect::create(),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                ])
                ->columns(12)
                ->columnSpan(4),
        ])
        ->columns(12);
    }
}
