<?php

namespace App\Filament\Resources\FinancialOperations\Schemas;

use Filament\Forms\Components\Hidden;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
use Filament\Schemas\Components\Section;
use Filament\Schemas\Schema;
use Illuminate\Support\Facades\Auth;

class FinancialOperationForm
{
    public static function configure(Schema $schema): Schema
    {
        return $schema->components([
            Section::make('Datos de la operación')
                ->columns(2)
                ->columnSpanFull()
                ->schema([

                    Hidden::make('company_id')
                        ->default(fn () => Auth::user()->company_id),

                    Hidden::make('user_id')
                        ->default(fn () => Auth::id()),

                    Select::make('operation_type')
                        ->label('Tipo de operación')
                        ->options([
                            'credit_disbursement' => 'Desembolso de crédito',
                            'credit_extension' => 'Extensión de crédito',
                            'credit_refinance' => 'Refinanciación',
                            'credit_restructure' => 'Reestructuración',
                            'internal_adjustment' => 'Ajuste interno',
                        ])
                        ->required(),

                    Select::make('source_credit_id')
                        ->label('Crédito origen')
                        ->relationship('sourceCredit', 'id')
                        ->searchable()
                        ->nullable(),

                    Select::make('target_credit_id')
                        ->label('Crédito destino')
                        ->relationship('targetCredit', 'id')
                        ->searchable()
                        ->nullable(),

                    TextInput::make('credit_amount')
                        ->label('Monto del crédito')
                        ->numeric()
                        ->minValue(0)
                        ->required(),

                    TextInput::make('compensated_amount')
                        ->label('Monto compensado')
                        ->numeric()
                        ->minValue(0)
                        ->default(0),

                    TextInput::make('cash_out')
                        ->label('Salida real de caja')
                        ->numeric()
                        ->minValue(0)
                        ->required(),

                    TextInput::make('cash_in')
                        ->label('Entrada de caja')
                        ->numeric()
                        ->minValue(0)
                        ->default(0),

                    Textarea::make('notes')
                        ->label('Notas')
                        ->columnSpanFull(),
                ]),
        ]);
    }
}
