components([ Hidden::make('user_id')->default(Auth::id()), Section::make(__('New loan paid off letter')) ->columnSpan(4) ->columns(4) ->components([ Select::make('status') ->label(__('Status')) ->options(OrderStatusRepository::statusValues()) ->default(OrderStatusRepository::defaultStatus()) ->native(false) ->required() ->columnSpanFull(), RichEditor::make('notes') ->label(__('Bellik')) ->columnSpanFull(), ]), Section::make(__('New loan paid off letter')) ->columnSpan(4) ->columns(6) ->components([ Select::make('region') ->label(__('Region')) ->options(RegionRepository::values()) ->live() ->afterStateUpdated(fn (callable $set) => $set('branch_id', null)) ->columnSpan(3) ->required(), Select::make('branch_id') ->label(__('Branch')) ->relationship('branch', 'name', function ($query, callable $get) { $query->orderByTranslation('name'); $region = $get('region'); if ($region) { $query->where('region', $region); } }) ->columnSpan(3) ->required(), TextInput::make('customer_name') ->label(__('Name')) ->columnSpan(2) ->default(user()->first_name) ->required() ->maxLength(255) ->autocomplete(Str::random(10)) ->columnSpan(2), TextInput::make('customer_surname') ->label(__('Surname')) ->columnSpan(2) ->default(user()->last_name) ->required() ->maxLength(255) ->columnSpan(2), TextInput::make('customer_patronic_name') ->label(__('Patronic name')) ->columnSpan(2) ->default(user()->getOption('patronic_name')) ->maxLength(255) ->columnSpan(2), DatePicker::make('born_at') ->displayFormat('d.m.Y') ->label(__('Birth date')) ->native(false) ->columnSpan(2) ->default(user()->getOption('born_at')) ->required() ->beforeOrEqual('today') ->columnSpan(2), FusedGroup::make([ Select::make('passport_serie') ->label(__('Passport serie')) ->options(TurkmenPassportRepository::values()) ->native(false) ->required() ->default(user()->getOption('passport_serie')) ->columnSpan(1), TextInput::make('passport_id') ->label(__('Passport number')) ->required() ->columnSpan(1) ->default(user()->getOption('passport_id')) ->mask('999999'), ]) ->columnSpan(2) ->label(__('Passport serie and number')) ->columns(2), TextInput::make('phone') ->label(__('Phone')) ->required() ->mask('99 99 99 99') ->prefix('+993') ->default(user()->phone) ->rules([ new PhoneNumberVerificationRule, ]) ->columnSpan(2), TextInput::make('loan_contract_number') ->label(__('Loan contract number')) ->columnSpan(2) ->required() ->maxLength(255), DatePicker::make('loan_contract_date') ->displayFormat('d.m.Y') ->label(__('Loan contract date')) ->native(false) ->columnSpan(2) ->required() ->beforeOrEqual('today') ->columnSpan(2), TextInput::make('loan_amount') ->label(__('Loan amount')) ->columnSpan(2) ->required() ->numeric() ->columnSpan(2), TextInput::make('loan_reason') ->label(__('Loan reason')) ->columnSpan(2) ->required() ->maxLength(255) ->columnSpan(6), FileUpload::make('loan_file') ->label(__('Loan paid off letter file')) ->columnSpan(2) ->maxSize(4096) ->columnSpan(2), ]), ]); } }