From a473081e3a925599e020c4d8ee949825c3cd7aae Mon Sep 17 00:00:00 2001 From: salam Date: Thu, 2 Oct 2025 15:03:16 +0200 Subject: [PATCH] gutachter --- .../Gutachters/Schemas/GutachterForm.php | 74 ++++++++++++++++++- .../Gutachters/Tables/GutachtersTable.php | 5 ++ .../Resources/Kontos/Schemas/KontoForm.php | 55 +++++++------- app/Models/Gutachter.php | 1 + ...5_09_05_131323_create_gutachter_tables.php | 11 +++ resources/views/pages/welcome.blade.php | 6 +- 6 files changed, 123 insertions(+), 29 deletions(-) diff --git a/app/Filament/Resources/Gutachters/Schemas/GutachterForm.php b/app/Filament/Resources/Gutachters/Schemas/GutachterForm.php index 3836dd4..e5e63ce 100644 --- a/app/Filament/Resources/Gutachters/Schemas/GutachterForm.php +++ b/app/Filament/Resources/Gutachters/Schemas/GutachterForm.php @@ -2,7 +2,16 @@ namespace App\Filament\Resources\Gutachters\Schemas; +use Filament\Forms\Components\CheckboxList; +use Filament\Forms\Components\FileUpload; +use Filament\Forms\Components\Select; +use Filament\Forms\Components\Textarea; +use Filament\Forms\Components\TextInput; +use Filament\Schemas\Components\Tabs; +use Filament\Schemas\Components\Tabs\Tab; use Filament\Schemas\Schema; +use Filament\Support\Icons\Heroicon; +use Ysfkaya\FilamentPhoneInput\Forms\PhoneInput; class GutachterForm { @@ -10,7 +19,70 @@ class GutachterForm { return $schema ->components([ - // + Tabs::make('Tabs') + ->tabs([ + Tab::make('Firmenname') + ->icon('lucide-stamp') + ->inlineLabel() + ->schema([ + TextInput::make('company') + ->label('Firma') + ->required(), + Textarea::make('address') + ->label('Adresse') + ->required(), + TextInput::make('country') + ->label('Land') + ->default('Österreich') + ->required(), + ]), + Tab::make('Kontaktperson') + ->icon('lucide-contact') + ->inlineLabel() + ->schema([ + TextInput::make('title') + ->label('Title') + ->required(), + Select::make('gender') + ->label('Geschlecht') + ->options([ + 'Herr' => 'Herr', + 'Frau' => 'Frau', + 'Non-binary' => 'Non-binary', + ]) + ->required(), + TextInput::make('name') + ->label('Name') + ->required(), + TextInput::make('email') + ->label('E-Mail') + ->required() + ->prefixIcon(Heroicon::Envelope), + PhoneInput::make('phone') + ->label('Telefon') + ->defaultCountry('AT'), + ]), + Tab::make('Logo') + ->icon('phosphor-squares-four') + ->inlineLabel() + ->schema([ + FileUpload::make('logo')->label('Gutachter Logo'), + ]), + Tab::make('Anzeige Im Gutachten') + ->icon('phosphor-eye') + ->inlineLabel() + ->schema([ + CheckboxList::make('kopf') + ->Label('Bitte auswählen') + ->options([ + 'logo' => '
Logo des Gutachters
', + 'firma' => '
Firma mit Adresse
', + 'name' => '
Name des Gutachters
', + ]) + ->allowHtml() + ->columnSpanFull(), + ]), + ])->columnSpanFull(), ]); } } diff --git a/app/Filament/Resources/Gutachters/Tables/GutachtersTable.php b/app/Filament/Resources/Gutachters/Tables/GutachtersTable.php index 7858b2f..0d5c1df 100644 --- a/app/Filament/Resources/Gutachters/Tables/GutachtersTable.php +++ b/app/Filament/Resources/Gutachters/Tables/GutachtersTable.php @@ -3,6 +3,7 @@ namespace App\Filament\Resources\Gutachters\Tables; use Filament\Actions\EditAction; +use Filament\Tables\Columns\ImageColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Table; @@ -12,6 +13,10 @@ class GutachtersTable { return $table ->columns([ + ImageColumn::make('logo'), + TextColumn::make('company')->label('Firma'), + TextColumn::make('gender')->label('Geschlecht'), + TextColumn::make('title')->label('Title'), TextColumn::make('name'), TextColumn::make('email')->copyable()->label('E-Mail'), ]) diff --git a/app/Filament/Resources/Kontos/Schemas/KontoForm.php b/app/Filament/Resources/Kontos/Schemas/KontoForm.php index 796c708..4318dd9 100644 --- a/app/Filament/Resources/Kontos/Schemas/KontoForm.php +++ b/app/Filament/Resources/Kontos/Schemas/KontoForm.php @@ -27,34 +27,12 @@ class KontoForm Tabs::make('Tabs') ->tabs([ - Tab::make('Zahlungsplan') - ->schema([ - RadioDeck::make('plan_id') - // ->label('Wählen sie eine Option') - ->label('Zur Zeit bieten wie nur eine Zahlung per Gutachten an.') - ->options(fn () => Plan::pluck('name', 'id')->toArray()) - ->descriptions(Plan::options()) - ->icons(fn () => Plan::pluck('icon', 'id')->toArray()) - ->required() - ->iconPosition(IconPosition::Before) // Before | After - ->iconSize(IconSize::TwoExtraLarge) - ->alignment(Alignment::Center) // Start | Center | End - ->padding('px-4 py-6') // Padding around the deck - ->extraCardsAttributes([ - 'class' => 'rounded-xl drop-shadow-xl mt-1', - ]) - ->extraOptionsAttributes([ - 'class' => 'text-2xl font-black tracking-tight lg:text-3xl', - ]) - ->colors('primary') - ->columns(3) - ->columnSpanFull(), - ])->columnSpanFull(), - Tab::make('Firma') + Tab::make('Rechnungsdaten') + ->icon('lucide-file-pen-line') ->inlineLabel() ->schema([ TextInput::make('company') - ->label('Firma') + ->label('Firma/Inhaber') ->required(), TextInput::make('uid_number') ->label('UID Nummer') @@ -69,6 +47,7 @@ class KontoForm ->required(), ])->columnSpanFull(), Tab::make('Kontaktperson') + ->icon('lucide-contact') ->inlineLabel() ->schema([ TextInput::make('title') @@ -94,6 +73,32 @@ class KontoForm ->label('Telefon') ->defaultCountry('AT'), ])->columnSpanFull(), + + Tab::make('Zahlungsplan') + ->icon('phosphor-coins') + ->schema([ + RadioDeck::make('plan_id') + // ->label('Wählen sie eine Option') + ->label('Zur Zeit bieten wie nur den Basic Plan als Zahlungvariante an.') + ->options(fn () => Plan::pluck('name', 'id')->toArray()) + ->descriptions(Plan::options()) + ->icons(fn () => Plan::pluck('icon', 'id')->toArray()) + ->required() + ->iconPosition(IconPosition::Before) // Before | After + ->iconSize(IconSize::TwoExtraLarge) + ->alignment(Alignment::Center) // Start | Center | End + ->padding('px-4 py-6') // Padding around the deck + ->extraCardsAttributes([ + 'class' => 'rounded-xl drop-shadow-xl mt-1', + ]) + ->extraOptionsAttributes([ + 'class' => 'text-2xl font-black tracking-tight lg:text-3xl', + ]) + ->colors('primary') + ->disabled() + ->columns(3) + ->columnSpanFull(), + ])->columnSpanFull(), ])->columnSpanFull(), ]); diff --git a/app/Models/Gutachter.php b/app/Models/Gutachter.php index 4bbe794..baa577e 100644 --- a/app/Models/Gutachter.php +++ b/app/Models/Gutachter.php @@ -24,6 +24,7 @@ class Gutachter extends Model 'email', 'phone', 'use_logo', + 'kopf', ]; protected static function booted(): void diff --git a/database/migrations/2025_09_05_131323_create_gutachter_tables.php b/database/migrations/2025_09_05_131323_create_gutachter_tables.php index a518eeb..c7ac358 100644 --- a/database/migrations/2025_09_05_131323_create_gutachter_tables.php +++ b/database/migrations/2025_09_05_131323_create_gutachter_tables.php @@ -24,10 +24,21 @@ return new class extends Migration $table->string('email')->nullable(); $table->string('phone')->nullable(); $table->boolean('use_logo')->default(false); + $table->string('kopf')->nullable(); $table->timestamps(); }); } + /** + * @return array + */ + protected function casts(): array + { + return [ + 'kopf' => 'array', + ]; + } + /** * Reverse the migrations. */ diff --git a/resources/views/pages/welcome.blade.php b/resources/views/pages/welcome.blade.php index 44e8c7c..0c29187 100644 --- a/resources/views/pages/welcome.blade.php +++ b/resources/views/pages/welcome.blade.php @@ -19,7 +19,7 @@ Wohnungseigentumsrecht.

.. es werden das Verhältnis der einzelnen Eigentumsanteile innerhalb eines Gebäudes bestimmt. - + mehr...

@@ -39,7 +39,7 @@

.. und erstellt Nutzwertgutachten nach vorgegebenen Normen. - + mehr...

@@ -57,7 +57,7 @@ aria-describedby="featureDescription">..aus allen gängigen Zeicheprogrammen importiert.

.. die Parameter werden gesetzt und das Gutachten kann als PFD heruntergeladen werden. - + mehr...