<?php

declare(strict_types=1);

namespace App\Filament\Resources\Producers\Schemas;

use App\Filament\Support\SelectOptionLabels;

use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\FileUpload;
use Filament\Schemas\Components\Group;
use Filament\Schemas\Components\Section;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
use Filament\Schemas\Schema;

class ProducerForm
{
    public static function configure(Schema $schema): Schema
    {
        return $schema->components([
            Group::make()
                ->schema([
                    Section::make('اطلاعات اصلی')
                        ->schema([
                            \App\Filament\Components\Form\UserSelect::create()
                                ->label('کاربر')
                                ->required(),
                            
                            TextInput::make('brand_name')
                                ->label('نام برند')
                                ->maxLength(255)
                                ->columnSpan(6),
                            
                            TextInput::make('work_email')
                                ->label('ایمیل کاری')
                                ->email()
                                ->maxLength(255)
                                ->columnSpan(6),
                            
                            TextInput::make('work_phone')
                                ->label('تلفن کاری')
                                ->maxLength(255)
                                ->columnSpan(6),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                    
                    Section::make('فعالیت')
                        ->schema([
                            TextInput::make('activity_main_category')
                                ->label('دسته اصلی فعالیت')
                                ->required()
                                ->maxLength(255)
                                ->columnSpan(6),
                            
                            TextInput::make('activity_sub_category')
                                ->label('زیردسته فعالیت')
                                ->maxLength(255)
                                ->columnSpan(6),
                            
                            TextInput::make('activity_product')
                                ->label('محصول فعالیت')
                                ->maxLength(255)
                                ->columnSpan(12),
                            
                            TextInput::make('unit_capacity')
                                ->label('ظرفیت واحد')
                                ->numeric()
                                ->columnSpan(6),
                            
                            TextInput::make('unit_area')
                                ->label('مساحت واحد')
                                ->numeric()
                                ->columnSpan(6),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                    
                    Section::make('آدرس محل کار')
                        ->schema([
                            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(3)
                                ->columnSpan(12),
                            
                            \App\Filament\Components\Form\PostalCodeTextInput::create()
                                ->name('work_postal_code')
                                ->label('کد پستی')
                                ->columnSpan(6),
                            
                            \App\Filament\Components\Form\LatitudeTextInput::create()
                                ->name('work_latitude')
                                ->label('عرض جغرافیایی')
                                ->required()
                                ->columnSpan(3),
                            
                            \App\Filament\Components\Form\LongitudeTextInput::create()
                                ->name('work_longitude')
                                ->label('طول جغرافیایی')
                                ->columnSpan(3),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                    
                    Section::make('مستندات')
                        ->schema([
                            FileUpload::make('business_license')
                                ->label('پروانه کسب')
                                ->multiple()
                                ->directory('files/producers/business_license')
                                ->columnSpan(12),
                            
                            FileUpload::make('education_certificates')
                                ->label('گواهینامه‌های تحصیلی')
                                ->multiple()
                                ->directory('files/producers/education_certificates')
                                ->columnSpan(12),
                            
                            FileUpload::make('skill_certificates')
                                ->label('گواهینامه‌های مهارتی')
                                ->multiple()
                                ->directory('files/producers/skill_certificates')
                                ->columnSpan(12),
                            
                            FileUpload::make('work_experience')
                                ->label('سوابق کاری')
                                ->multiple()
                                ->directory('files/producers/work_experience')
                                ->columnSpan(12),
                            
                            TextInput::make('ownership_document')
                                ->label('سند مالکیت')
                                ->maxLength(255)
                                ->columnSpan(12),
                            
                            DatePicker::make('lease_start_date')
                                ->label('تاریخ شروع اجاره')
                                ->jalali()
                                ->columnSpan(6),
                            
                            DatePicker::make('lease_end_date')
                                ->label('تاریخ پایان اجاره')
                                ->jalali()
                                ->columnSpan(6),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                    
                    Section::make('رسانه‌ها')
                        ->schema([
                            FileUpload::make('unit_images')
                                ->label('تصاویر واحد')
                                ->multiple()
                                ->directory('files/producers/unit_images')
                                ->image()
                                ->columnSpan(12),
                            
                            FileUpload::make('unit_videos')
                                ->label('ویدیوهای واحد')
                                ->multiple()
                                ->directory('files/producers/unit_videos')
                                ->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);
    }
}

