current(); if (! $company) { return; } $settings = (array) ($company->settings ?? []); // Filament v5: fill via $this->form->fill() (initializes the schema state). $this->form->fill([ 'display_name' => $company->display_name ?? $company->name, 'city' => $company->city, 'phone' => $company->phone, 'email' => $company->email, 'currency' => $settings['currency'] ?? 'MDL', 'language' => $settings['language'] ?? 'ro', 'theme_color' => $settings['theme_color'] ?? '#3B82F6', 'labor_rate' => $settings['labor_rate'] ?? 400, 'services' => isset($settings['services']) ? implode(', ', (array) $settings['services']) : '', 'cars' => isset($settings['cars']) ? implode(', ', (array) $settings['cars']) : '', ]); } public function form(Schema $schema): Schema { return $schema ->components([ Schemas\Components\Section::make('Brand & contact') ->columns(2) ->schema([ Forms\Components\TextInput::make('display_name')->label('Denumire afișată')->maxLength(120), Forms\Components\TextInput::make('city')->label('Oraș')->maxLength(60), Forms\Components\TextInput::make('phone')->label('Telefon')->tel()->maxLength(40), Forms\Components\TextInput::make('email')->email()->maxLength(120), ]), Schemas\Components\Section::make('Localizare & monedă') ->columns(3) ->schema([ Forms\Components\Select::make('language') ->label('Limbă default') ->options(['ro' => 'Română', 'ru' => 'Русский', 'en' => 'English']) ->required(), Forms\Components\TextInput::make('currency')->label('Monedă')->maxLength(8)->required(), Forms\Components\ColorPicker::make('theme_color')->label('Culoare brand'), ]), Schemas\Components\Section::make('Servicii & tarif') ->columns(2) ->schema([ Forms\Components\TextInput::make('labor_rate')->label('Tarif normo-oră')->numeric()->required(), ]), Schemas\Components\Section::make('Liste configurabile') ->columns(1) ->schema([ Forms\Components\Textarea::make('services') ->label('Servicii oferite (separate prin virgulă)') ->rows(2), Forms\Components\Textarea::make('cars') ->label('Mărci auto suportate (separate prin virgulă)') ->rows(2), ]), ]) ->statePath('data'); } public function save(): void { $data = $this->form->getState(); $company = app(TenantManager::class)->current(); if (! $company) { Notification::make()->title('Tenant not resolved')->danger()->send(); return; } $company->update([ 'display_name' => $data['display_name'] ?? null, 'city' => $data['city'] ?? null, 'phone' => $data['phone'] ?? null, 'email' => $data['email'] ?? null, 'settings' => array_merge((array) $company->settings, [ 'language' => $data['language'] ?? 'ro', 'currency' => $data['currency'] ?? 'MDL', 'theme_color' => $data['theme_color'] ?? '#3B82F6', 'labor_rate' => (float) ($data['labor_rate'] ?? 400), 'services' => array_values(array_filter(array_map('trim', explode(',', (string) ($data['services'] ?? ''))))), 'cars' => array_values(array_filter(array_map('trim', explode(',', (string) ($data['cars'] ?? ''))))), ]), ]); Notification::make()->title('Setări salvate')->success()->send(); } }