<?php

declare(strict_types=1);

namespace App\Filament\Resources\Products\Schemas;

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\Forms\Components\Toggle;
use Filament\Schemas\Schema;

class ProductForm
{
    public static function configure(Schema $schema): Schema
    {
        return $schema->components([
            Group::make()
                ->schema([
                    // اطلاعات اصلی
                    Section::make('اطلاعات اصلی')
                        ->schema([
                            TextInput::make('name')
                                ->label('نام محصول')
                                ->required()
                                ->maxLength(255)
                                ->columnSpan(12),
                            
                            Textarea::make('excerpt')
                                ->label('خلاصه')
                                ->rows(3)
                                ->columnSpan(12),
                            
                            \App\Filament\Components\Form\DescTextarea::create()
                                ->label('توضیحات کامل'),
                            
                            \App\Filament\Components\Form\CategorySelect::create()
                                ->label('دسته اصلی'),
                            
                            \App\Filament\Components\Form\SubCategorySelect::create(),
                            
                            \App\Filament\Components\Form\ProductTypeSelect::create(),
                            
                            \App\Filament\Components\Form\ProducerSelect::create(),
                            
                            \App\Filament\Components\Form\UserSelect::create()
                                ->label('کاربر')
                                ->columnSpan(6),
                            
                            \App\Filament\Components\Form\BreedSelect::create(),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                    
                    // اطلاعات فیزیکی
                    Section::make('اطلاعات فیزیکی')
                        ->schema([
                            TextInput::make('weight')
                                ->label('وزن')
                                ->numeric()
                                ->columnSpan(4),
                            
                            TextInput::make('weight_unit')
                                ->label('واحد وزن')
                                ->maxLength(50)
                                ->columnSpan(4),
                            
                            TextInput::make('age')
                                ->label('سن')
                                ->numeric()
                                ->columnSpan(4),
                            
                            TextInput::make('color')
                                ->label('رنگ')
                                ->maxLength(255)
                                ->columnSpan(6),
                            
                            \App\Filament\Components\Form\GenderSelect::create(),
                            
                            TextInput::make('count')
                                ->label('تعداد')
                                ->numeric()
                                ->columnSpan(6),
                            
                            TextInput::make('unit')
                                ->label('واحد')
                                ->maxLength(50)
                                ->columnSpan(6),
                            
                            TextInput::make('father_info')
                                ->label('اطلاعات پدر')
                                ->maxLength(255)
                                ->columnSpan(6),
                            
                            TextInput::make('mother_info')
                                ->label('اطلاعات مادر')
                                ->maxLength(255)
                                ->columnSpan(6),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                    
                    // قیمت
                    Section::make('اطلاعات قیمت')
                        ->schema([
                            \App\Filament\Components\Form\PriceTextInput::create()
                                ->label('قیمت')
                                ->columnSpan(6),
                            
                            DatePicker::make('price_active_date')
                                ->label('تاریخ اعتبار قیمت')
                                ->jalali()
                                ->columnSpan(6),
                            
                            \App\Filament\Components\Form\TotalPriceTextInput::create()
                                ->label('قیمت کل')
                                ->columnSpan(6),
                            
                            TextInput::make('price_per_unit')
                                ->label('قیمت به ازای واحد')
                                ->numeric()
                                ->columnSpan(6),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                    
                    // موقعیت
                    Section::make('موقعیت جغرافیایی')
                        ->schema([
                            \App\Filament\Components\Form\ProvinceSelect::create(),
                            
                            \App\Filament\Components\Form\CountySelect::create(),
                            
                            \App\Filament\Components\Form\AddressTextInput::create()
                                ->label('آدرس'),
                            
                            \App\Filament\Components\Form\PostalCodeTextInput::create(),
                            
                            \App\Filament\Components\Form\LatitudeTextInput::create()
                                ->label('عرض جغرافیایی')
                                ->columnSpan(4),
                            
                            \App\Filament\Components\Form\LongitudeTextInput::create()
                                ->label('طول جغرافیایی')
                                ->columnSpan(4),
                            
                            TextInput::make('gps_location')
                                ->label('موقعیت GPS')
                                ->maxLength(255)
                                ->columnSpan(4),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                    
                    // تماس
                    Section::make('اطلاعات تماس')
                        ->schema([
                            \App\Filament\Components\Form\PhoneTextInput::create()
                                ->label('تلفن')
                                ->columnSpan(4),
                            
                            \App\Filament\Components\Form\CellphoneTextInput::create()
                                ->label('موبایل')
                                ->columnSpan(4),
                            
                            \App\Filament\Components\Form\EmailTextInput::create()
                                ->label('ایمیل')
                                ->columnSpan(4),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                    
                    // رسانه
                    Section::make('رسانه‌ها')
                        ->schema([
                            \App\Filament\Components\Form\ImageFileUpload::create()
                                ->label('تصویر اصلی'),
                            
                            FileUpload::make('gallery')
                                ->label('گالری تصاویر')
                                ->multiple()
                                ->directory('files/products/gallery')
                                ->image()
                                ->columnSpan(12),
                            
                            \App\Filament\Components\Form\VideoFileUpload::create()
                                ->label('ویدیو'),
                            
                            FileUpload::make('gallery_videos')
                                ->label('گالری ویدیوها')
                                ->multiple()
                                ->directory('files/products/videos')
                                ->columnSpan(12),
                            
                            FileUpload::make('documents')
                                ->label('اسناد')
                                ->multiple()
                                ->directory('files/products/documents')
                                ->columnSpan(12),
                            
                            FileUpload::make('certificates')
                                ->label('گواهینامه‌ها')
                                ->multiple()
                                ->directory('files/products/certificates')
                                ->columnSpan(12),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                ])
                ->columns(12)
                ->columnSpan(8),
            
            Group::make()
                ->schema([
                    // وضعیت
                    Section::make('وضعیت')
                        ->schema([
                            \App\Filament\Components\Form\StatusSelect::create(),
                            
                            Toggle::make('is_active')
                                ->label('فعال')
                                ->default(true)
                                ->columnSpan(6),
                            
                            Toggle::make('is_featured')
                                ->label('ویژه')
                                ->default(false)
                                ->columnSpan(6),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                    
                    // آمار
                    Section::make('آمار')
                        ->schema([
                            TextInput::make('view_count')
                                ->label('تعداد بازدید')
                                ->numeric()
                                ->default(0)
                                ->disabled()
                                ->columnSpan(6),
                            
                            TextInput::make('click_count')
                                ->label('تعداد کلیک')
                                ->numeric()
                                ->default(0)
                                ->disabled()
                                ->columnSpan(6),
                            
                            TextInput::make('request_count')
                                ->label('تعداد درخواست')
                                ->numeric()
                                ->default(0)
                                ->disabled()
                                ->columnSpan(6),
                            
                            TextInput::make('order_count')
                                ->label('تعداد سفارش')
                                ->numeric()
                                ->default(0)
                                ->disabled()
                                ->columnSpan(6),
                            
                            TextInput::make('offer_count')
                                ->label('تعداد پیشنهاد')
                                ->numeric()
                                ->default(0)
                                ->disabled()
                                ->columnSpan(6),
                            
                            TextInput::make('message_count')
                                ->label('تعداد پیام')
                                ->numeric()
                                ->default(0)
                                ->disabled()
                                ->columnSpan(6),
                            
                            TextInput::make('comment_count')
                                ->label('تعداد نظر')
                                ->numeric()
                                ->default(0)
                                ->disabled()
                                ->columnSpan(6),
                            
                            TextInput::make('rating_average')
                                ->label('میانگین امتیاز')
                                ->numeric()
                                ->step(0.01)
                                ->disabled()
                                ->columnSpan(6),
                            
                            TextInput::make('rating_count')
                                ->label('تعداد امتیاز')
                                ->numeric()
                                ->default(0)
                                ->disabled()
                                ->columnSpan(6),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                    
                    // اطلاعات سیستم
                    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);
    }
}

