<?php

declare(strict_types=1);

namespace App\Filament\Resources\Projects\Schemas;

use App\Filament\Resources\Projects\Tables\ProjectsTable;
use App\Models\Project;
use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\DateTimePicker;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Toggle;
use Filament\Schemas\Components\Group;
use Filament\Schemas\Components\Section;
use Filament\Schemas\Schema;

class ProjectForm
{
    public static function configure(Schema $schema): Schema
    {
        return $schema->components([
            Group::make()
                ->schema([
                    Section::make('اطلاعات اصلی')
                        ->schema([
                            TextInput::make('name')
                                ->label('نام پروژه')
                                ->required()
                                ->maxLength(255)
                                ->columnSpan(6),
                            TextInput::make('code')
                                ->label('کد پروژه')
                                ->numeric()
                                ->disabled()
                                ->dehydrated(false)
                                ->placeholder('خودکار')
                                ->columnSpan(6),
                            Textarea::make('excerpt')
                                ->label('خلاصه')
                                ->rows(3)
                                ->columnSpan(12),
                            \App\Filament\Components\Form\DescTextarea::create(),
                            \App\Filament\Components\Form\CategorySelect::create()
                                ->label('نوع محصول / دسته'),
                            \App\Filament\Components\Form\BreedSelect::create()
                                ->label('نژاد'),
                            \App\Filament\Components\Form\ProductSelect::create()
                                ->label('محصول تولیدی'),
                            \App\Filament\Components\Form\ProducerSelect::create()
                                ->label('تولیدکننده')
                                ->searchable(['brand_name']),
                            \App\Filament\Components\Form\UserSelect::create()
                                ->label('کارفرما'),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                    Section::make('محصول و قیمت')
                        ->schema([
                            TextInput::make('quantity')
                                ->label('تعداد محصول')
                                ->numeric()
                                ->minValue(1)
                                ->columnSpan(4),
                            Select::make('unit')
                                ->label('واحد ثبتی')
                                ->options([
                                    Project::UNIT_HEAD => 'راس',
                                    Project::UNIT_COUNT => 'تعداد',
                                    Project::UNIT_WEIGHT => 'وزن',
                                ])
                                ->columnSpan(4),
                            \App\Filament\Components\Form\UnitPriceTextInput::create()
                                ->label('قیمت هر واحد (تومان)')
                                ->columnSpan(4),
                            FileUpload::make('images')
                                ->label('تصاویر پروژه')
                                ->image()
                                ->multiple()
                                ->directory('files/projects/images')
                                ->columnSpan(12),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                    Section::make('ثبت درخواست فروش')
                        ->schema([
                            Toggle::make('sale_registration_enabled')
                                ->label('فعال بودن ثبت درخواست فروش')
                                ->default(true)
                                ->columnSpan(12),
                            DateTimePicker::make('sale_deactivation_at')
                                ->label('تاریخ و زمان غیرفعال شدن (تایمر)')
                                ->jalali()
                                ->columnSpan(12),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                    Section::make('زمان‌بندی')
                        ->schema([
                            DatePicker::make('presale_start')
                                ->label('شروع پیش‌فروش')
                                ->jalali()
                                ->columnSpan(4),
                            DatePicker::make('presale_end')
                                ->label('پایان پیش‌فروش')
                                ->jalali()
                                ->columnSpan(4),
                            DatePicker::make('start_date')
                                ->label('تاریخ شروع پروژه')
                                ->jalali()
                                ->columnSpan(4),
                            DatePicker::make('end_date')
                                ->label('تاریخ پایان پروژه')
                                ->jalali()
                                ->columnSpan(4),
                            DatePicker::make('deadline')
                                ->label('مهلت')
                                ->jalali()
                                ->columnSpan(4),
                            Select::make('status')
                                ->label('وضعیت')
                                ->options(ProjectsTable::getStatusOptions())
                                ->default('pending')
                                ->columnSpan(4),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                    Section::make('بودجه و سود')
                        ->schema([
                            \App\Filament\Components\Form\BudgetTextInput::create()
                                ->label('بودجه')
                                ->columnSpan(6),
                            TextInput::make('estimated_profit')
                                ->label('تخمین سود پروژه (تومان)')
                                ->numeric()
                                ->columnSpan(6),
                            FileUpload::make('budgets')
                                ->label('بودجه‌های مختلف')
                                ->multiple()
                                ->directory('files/projects/budgets')
                                ->columnSpan(12),
                        ])
                        ->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(),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                    Section::make('قرارداد و مستندات')
                        ->schema([
                            Textarea::make('contract_text')
                                ->label('متن قرارداد')
                                ->rows(6)
                                ->columnSpan(12),
                            FileUpload::make('requirements')
                                ->label('نیازمندی‌ها')
                                ->multiple()
                                ->directory('files/projects/requirements')
                                ->columnSpan(12),
                            FileUpload::make('attachments')
                                ->label('پیوست‌ها')
                                ->multiple()
                                ->directory('files/projects/attachments')
                                ->columnSpan(12),
                            Textarea::make('notes')
                                ->label('یادداشت‌ها')
                                ->rows(4)
                                ->columnSpan(12),
                        ])
                        ->columns(12)
                        ->columnSpan(12),
                ])
                ->columns(12)
                ->columnSpan(8),
            Group::make()
                ->schema([
                    Section::make('آمار')
                        ->schema([
                            TextInput::make('view_count')
                                ->label('تعداد بازدید')
                                ->numeric()
                                ->default(0)
                                ->disabled()
                                ->columnSpan(12),
                            TextInput::make('request_count')
                                ->label('تعداد درخواست')
                                ->numeric()
                                ->default(0)
                                ->disabled()
                                ->columnSpan(12),
                        ])
                        ->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);
    }
}

