<?php

declare(strict_types=1);

namespace App\Filament\Resources\Offers\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 OfferForm
{
    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),
                            
                            \App\Filament\Components\Form\DescTextarea::create()
                                ->label('توضیحات')
                                ->name('description'),
                            
                            \App\Filament\Components\Form\UserSelect::create()
                                ->label('پیشنهاددهنده')
                                ->required(),
                            
                            Select::make('offer_to')
                                ->label('پیشنهاد به')
                                ->relationship('offerTo', 'name')
                                ->searchable(['name', 'cellphone'])
                                ->getOptionLabelFromRecordUsing(fn ($record) => SelectOptionLabels::user($record))
                                ->preload()
                                ->columnSpan(6),
                            
                            \App\Filament\Components\Form\ProductSelect::create()
                                ->label('محصول'),
                            
                            \App\Filament\Components\Form\ProjectSelect::create()
                                ->label('پروژه'),
                            
                            Select::make('offer_type')
                                ->label('نوع پیشنهاد')
                                ->options([
                                    'دمآرد' => 'دم‌آورد',
                                    'هنیزه' => 'هنیزه',
                                ])
                                ->columnSpan(6),
                            
                            Select::make('contract_type')
                                ->label('نوع قرارداد')
                                ->options([
                                    'ناموت' => 'ناموت',
                                    'other' => 'سایر',
                                ])
                                ->columnSpan(6),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                    
                    Section::make('جزئیات پیشنهاد')
                        ->schema([
                            \App\Filament\Components\Form\PriceTextInput::create()
                                ->label('قیمت')
                                ->columnSpan(6),
                            
                            \App\Filament\Components\Form\QuantityTextInput::create()
                                ->label('تعداد')
                                ->columnSpan(6),
                            
                            TextInput::make('unit')
                                ->label('واحد')
                                ->maxLength(50)
                                ->columnSpan(12),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                    
                    Section::make('زمان‌بندی')
                        ->schema([
                            DatePicker::make('offer_date')
                                ->label('تاریخ پیشنهاد')
                                ->required()
                                ->default(now())
                                ->jalali()
                                ->columnSpan(6),
                            
                            DatePicker::make('expiry_date')
                                ->label('تاریخ انقضا')
                                ->jalali()
                                ->columnSpan(6),
                            
                            DatePicker::make('contract_start_date')
                                ->label('تاریخ شروع قرارداد')
                                ->jalali()
                                ->columnSpan(6),
                            
                            DatePicker::make('contract_end_date')
                                ->label('تاریخ پایان قرارداد')
                                ->jalali()
                                ->columnSpan(6),
                            
                            TextInput::make('duration_days')
                                ->label('مدت زمان (روز)')
                                ->numeric()
                                ->columnSpan(12),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                    
                    Section::make('وضعیت')
                        ->schema([
                            Select::make('status')
                                ->label('وضعیت')
                                ->options([
                                    'pending' => 'در انتظار',
                                    'accepted' => 'پذیرفته شده',
                                    'rejected' => 'رد شده',
                                    'expired' => 'منقضی شده',
                                    'cancelled' => 'لغو شده',
                                ])
                                ->default('pending')
                                ->columnSpan(12),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                    
                    Section::make('مستندات')
                        ->schema([
                            FileUpload::make('specifications')
                                ->label('مشخصات')
                                ->multiple()
                                ->directory('files/offers/specifications')
                                ->columnSpan(12),
                            
                            Textarea::make('notes')
                                ->label('یادداشت‌ها')
                                ->rows(4)
                                ->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);
    }
}

