<?php

namespace App\Filament\Resources\OpeningBalances\Schemas;

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

class OpeningBalanceForm
{
    public static function configure(Schema $schema): Schema
    {
        return $schema
            ->components([
                Select::make('product_id')
                    ->label(__('filament/admin/opening_balance_resource.product_id'))
                    ->relationship('product', 'name')
                    ->required()
                    ->searchable()
                    ->preload()
                    ->live(),
                    
                Select::make('warehouse_id')
                    ->label(__('filament/admin/opening_balance_resource.warehouse_id'))
                    ->relationship('warehouse', 'name')
                    ->required()
                    ->searchable()
                    ->preload(),
                    
                DatePicker::make('date')
                    ->label(__('filament/admin/opening_balance_resource.date'))
                    ->required()
                    ->default(now())
                    ->native(false),
                    
                TextInput::make('quantity')
                    ->label(__('filament/admin/opening_balance_resource.quantity'))
                    ->helperText(function ($get) {
                        $product = \App\Models\Product::find($get('product_id'));
                        return $product ? 'بالوحدة الأساسية: ' . $product->baseUnit->name : 'حدد الصنف أولاً';
                    })
                    ->required()
                    ->numeric()
                    ->minValue(0)
                    ->step(1)
                    ->suffix(fn ($get) => \App\Models\Product::find($get('product_id'))?->baseUnit->name ?? '')
                    ->live(),

                DatePicker::make('expiry_date')
                    ->label(__('filament/admin/opening_balance_resource.expiry_date'))
                    ->helperText(__('filament/admin/opening_balance_resource.expiry_date_help'))
                    ->native(false)
                    ->visible(fn($get) => \App\Models\Product::find($get('product_id'))?->has_expiry_date)
                    ->required(fn($get) => \App\Models\Product::find($get('product_id'))?->has_expiry_date),

                Textarea::make('notes')
                    ->label(__('filament/admin/opening_balance_resource.notes'))
                    ->rows(3)
                    ->columnSpanFull(),
            ]);
    }
}
