components([ Hidden::make('user_id')->default(Auth::id()), Section::make(__('Order details')) ->columnSpan(4) ->columns(4) ->disabled(fn (string $context): bool => FilamentPermissionRepository::forClients()) ->components([ Select::make('status') ->label(__('Status')) ->options(OrderStatusRepository::statusValues()) ->default(OrderStatusRepository::defaultStatus()) ->native(false) ->columnSpan(2), Toggle::make('paid') ->label(sprintf('%s (%s)', __('Paid'), __('This month'))) ->inline(false) ->disabled(true) ->onIcon(Heroicon::CheckCircle) ->offIcon(Heroicon::XCircle) ->onColor('success') ->offColor('danger'), RichEditor::make('notes') ->label(__('Bellik')) ->columnSpanFull(), ]), Wizard::make([ Step::make(__('Order type and bank')) ->schema([ Fieldset::make(__('Order type')) ->schema([ Select::make('type') ->label(__('Type')) ->options(VisaMasterPaymentOrder::applicationTypes()) ->native(false) ->required(), ]), Fieldset::make(__('Location')) ->schema([ Select::make('region') ->label(__('Region')) ->options(RegionRepository::values()) ->live() ->afterStateUpdated(fn (callable $set) => $set('branch_id', null)) ->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); } }) ->required(), ]), ]), Step::make(__('Personal information')) ->columns(2) ->schema([ TextInput::make('passport_name') ->label(__('Name')) ->required() ->maxLength(255), TextInput::make('passport_surname') ->label(__('Surname')) ->required() ->maxLength(255), TextInput::make('phone') ->label(__('Phone')) ->required() ->tel(), TextInput::make('email') ->label(__('Email')) ->email(), Select::make('region') ->label(__('Region')) ->options(RegionRepository::values()) ->native(false) ->required(), Textarea::make('address') ->label(__('Address')) ->columnSpanFull(), ]), Step::make(__('Sender information')) ->schema([ TextInput::make('sender_full_name') ->label(__('Sender full name')) ->required(), TextInput::make('sender_passport_serie') ->label(__('Sender passport serie')) ->required(), TextInput::make('sender_passport_number') ->label(__('Sender passport number')) ->required(), TextInput::make('sender_deposit_account') ->label(__('Sender deposit account')) ->required(), ]), Step::make(__('JSON data')) ->schema([ KeyValue::make('sender_datas') ->label(__('Sender data')), KeyValue::make('payment_reciever') ->label(__('Payment receiver')), ]), Step::make(__('Receiver documents')) ->schema( collect(VisaMasterPaymentOrder::reciverFiles()) ->map(function (array $file) { return FileUpload::make('documents.'.$file['code']) ->label($file['name']) ->required($file['required']); }) ->toArray() ), Step::make(__('Sender documents')) ->schema( collect(VisaMasterPaymentOrder::senderFiles()) ->map(function (array $file) { return FileUpload::make('documents.sender.'.$file['code']) ->label($file['name']) ->required($file['required']); }) ->toArray() ), ])->columnSpanFull(), ]); } }