<?php

namespace App\Filament\Resources\Accounting\ChartOfAccounts\Schemas;

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

class ChartOfAccountForm
{
    public static function configure(Schema $schema): Schema
    {
        return $schema
            ->components([
                TextInput::make('code')
                    ->label(__('filament/admin/chart_of_account_resource.code'))
                    ->required(),
                TextInput::make('name')
                    ->label(__('filament/admin/chart_of_account_resource.name'))
                    ->required(),
                TextInput::make('name_ar')
                    ->label(__('filament/admin/chart_of_account_resource.name_ar'))
                    ->required(),
                Select::make('account_type')
                    ->label(__('filament/admin/chart_of_account_resource.account_type'))
                    ->options(['asset' => __('filament/admin/chart_of_account_resource.account_type.asset'), 'liability' => __('filament/admin/chart_of_account_resource.account_type.liability'), 'equity' => __('filament/admin/chart_of_account_resource.account_type.equity'), 'revenue' => __('filament/admin/chart_of_account_resource.account_type.revenue'), 'expense' => __('filament/admin/chart_of_account_resource.account_type.expense')])
                    ->required(),
                Select::make('normal_balance')
                    ->label(__('filament/admin/chart_of_account_resource.normal_balance'))
                    ->options(['debit' => __('filament/admin/chart_of_account_resource.normal_balance.debit'), 'credit' => __('filament/admin/chart_of_account_resource.normal_balance.credit')])
                    ->required(),
                Select::make('parent_id')
                    ->label(__('filament/admin/chart_of_account_resource.parent_id'))
                    ->relationship('parent', 'name')
                    ->default(__('filament/admin/chart_of_account_resource.parent_id_default')),
                TextInput::make('level')
                    ->label(__('filament/admin/chart_of_account_resource.level'))
                    ->required()
                    ->numeric()
                    ->default(1),
                Textarea::make('description')
                    ->label(__('filament/admin/chart_of_account_resource.description'))
                    ->default(null)
                    ->columnSpanFull(),
                Toggle::make('is_active')
                    ->label(__('filament/admin/chart_of_account_resource.is_active'))
                    ->required(),
                Toggle::make('is_system')
                    ->label(__('filament/admin/chart_of_account_resource.is_system'))
                    ->required(),
                TextInput::make('sort_order')
                    ->label(__('filament/admin/chart_of_account_resource.sort_order'))
                    ->required()
                    ->numeric()
                    ->default(0),
            ]);
    }
}
