From 98ccca1fb7e1ac9701a33d2c69e5a215f554044d Mon Sep 17 00:00:00 2001 From: salam Date: Thu, 2 Oct 2025 16:10:47 +0200 Subject: [PATCH] add logo to auftraggeber und gutacher --- .../Auftraggebers/AuftraggeberResource.php | 11 --- .../Schemas/AuftraggeberForm.php | 84 ++++++++++++++++++- .../Tables/AuftraggebersTable.php | 12 +-- .../Gutachters/GutachterResource.php | 7 -- .../Gutachters/Schemas/GutachterForm.php | 12 ++- .../Gutachters/Tables/GutachtersTable.php | 6 +- .../Resources/Users/Tables/UsersTable.php | 3 +- app/Models/Auftraggeber.php | 11 +++ app/Models/Gutachter.php | 10 +++ ...5_09_05_131323_create_gutachter_tables.php | 10 --- ...10_05_062328_create_auftraggeber_table.php | 1 + 11 files changed, 128 insertions(+), 39 deletions(-) diff --git a/app/Filament/Resources/Auftraggebers/AuftraggeberResource.php b/app/Filament/Resources/Auftraggebers/AuftraggeberResource.php index 9bf6d0a..d2a58ea 100644 --- a/app/Filament/Resources/Auftraggebers/AuftraggeberResource.php +++ b/app/Filament/Resources/Auftraggebers/AuftraggeberResource.php @@ -3,8 +3,6 @@ namespace App\Filament\Resources\Auftraggebers; use App\Filament\Clusters\Verwaltung\VerwaltungCluster; -use App\Filament\Resources\Auftraggebers\Pages\CreateAuftraggeber; -use App\Filament\Resources\Auftraggebers\Pages\EditAuftraggeber; use App\Filament\Resources\Auftraggebers\Pages\ListAuftraggebers; use App\Filament\Resources\Auftraggebers\Schemas\AuftraggeberForm; use App\Filament\Resources\Auftraggebers\Tables\AuftraggebersTable; @@ -43,19 +41,10 @@ class AuftraggeberResource extends Resource return AuftraggebersTable::configure($table); } - public static function getRelations(): array - { - return [ - // - ]; - } - public static function getPages(): array { return [ 'index' => ListAuftraggebers::route('/'), - 'create' => CreateAuftraggeber::route('/create'), - 'edit' => EditAuftraggeber::route('/{record}/edit'), ]; } diff --git a/app/Filament/Resources/Auftraggebers/Schemas/AuftraggeberForm.php b/app/Filament/Resources/Auftraggebers/Schemas/AuftraggeberForm.php index e58457d..3378809 100644 --- a/app/Filament/Resources/Auftraggebers/Schemas/AuftraggeberForm.php +++ b/app/Filament/Resources/Auftraggebers/Schemas/AuftraggeberForm.php @@ -2,7 +2,16 @@ namespace App\Filament\Resources\Auftraggebers\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 AuftraggeberForm { @@ -10,7 +19,80 @@ class AuftraggeberForm { 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') + ->image() + ->imageEditor() + ->imageEditorAspectRatios([ + null, + '16:9', + '4:3', + '1:1', + ]) + ->directory('auftraggeber-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/Auftraggebers/Tables/AuftraggebersTable.php b/app/Filament/Resources/Auftraggebers/Tables/AuftraggebersTable.php index 9fb48b9..7792d3a 100644 --- a/app/Filament/Resources/Auftraggebers/Tables/AuftraggebersTable.php +++ b/app/Filament/Resources/Auftraggebers/Tables/AuftraggebersTable.php @@ -3,6 +3,7 @@ namespace App\Filament\Resources\Auftraggebers\Tables; use Filament\Actions\EditAction; +use Filament\Tables\Columns\ImageColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Table; @@ -12,11 +13,12 @@ class AuftraggebersTable { return $table ->columns([ - TextColumn::make('name'), - TextColumn::make('email')->copyable()->label('E-Mail'), - ]) - ->filters([ - // + ImageColumn::make('logo'), + TextColumn::make('company')->label('Firma')->searchable(), + TextColumn::make('gender')->label('Geschlecht'), + TextColumn::make('title')->label('Title'), + TextColumn::make('name')->searchable(), + TextColumn::make('email')->copyable()->label('E-Mail')->searchable(), ]) ->recordActions([ EditAction::make()->iconButton()->color('gray'), diff --git a/app/Filament/Resources/Gutachters/GutachterResource.php b/app/Filament/Resources/Gutachters/GutachterResource.php index 9caffe4..af1eed7 100644 --- a/app/Filament/Resources/Gutachters/GutachterResource.php +++ b/app/Filament/Resources/Gutachters/GutachterResource.php @@ -41,13 +41,6 @@ class GutachterResource extends Resource return GutachtersTable::configure($table); } - public static function getRelations(): array - { - return [ - // - ]; - } - public static function getPages(): array { return [ diff --git a/app/Filament/Resources/Gutachters/Schemas/GutachterForm.php b/app/Filament/Resources/Gutachters/Schemas/GutachterForm.php index e5e63ce..a7f5ab1 100644 --- a/app/Filament/Resources/Gutachters/Schemas/GutachterForm.php +++ b/app/Filament/Resources/Gutachters/Schemas/GutachterForm.php @@ -66,7 +66,17 @@ class GutachterForm ->icon('phosphor-squares-four') ->inlineLabel() ->schema([ - FileUpload::make('logo')->label('Gutachter Logo'), + FileUpload::make('logo') + ->image() + ->imageEditor() + ->imageEditorAspectRatios([ + null, + '16:9', + '4:3', + '1:1', + ]) + ->directory('gutachter-logo') + ->label('Gutachter Logo'), ]), Tab::make('Anzeige Im Gutachten') ->icon('phosphor-eye') diff --git a/app/Filament/Resources/Gutachters/Tables/GutachtersTable.php b/app/Filament/Resources/Gutachters/Tables/GutachtersTable.php index 0d5c1df..cd0f41a 100644 --- a/app/Filament/Resources/Gutachters/Tables/GutachtersTable.php +++ b/app/Filament/Resources/Gutachters/Tables/GutachtersTable.php @@ -14,11 +14,11 @@ class GutachtersTable return $table ->columns([ ImageColumn::make('logo'), - TextColumn::make('company')->label('Firma'), + TextColumn::make('company')->label('Firma')->searchable(), TextColumn::make('gender')->label('Geschlecht'), TextColumn::make('title')->label('Title'), - TextColumn::make('name'), - TextColumn::make('email')->copyable()->label('E-Mail'), + TextColumn::make('name')->searchable(), + TextColumn::make('email')->copyable()->label('E-Mail')->searchable(), ]) ->recordActions([ EditAction::make()->iconButton()->color('gray'), diff --git a/app/Filament/Resources/Users/Tables/UsersTable.php b/app/Filament/Resources/Users/Tables/UsersTable.php index f7d5538..a793862 100644 --- a/app/Filament/Resources/Users/Tables/UsersTable.php +++ b/app/Filament/Resources/Users/Tables/UsersTable.php @@ -17,9 +17,10 @@ class UsersTable ->columns([ TextColumn::make('gender')->label('Geschlecht'), TextColumn::make('name'), - TextColumn::make('konto.company')->badge(), + TextColumn::make('konto.company')->badge()->searchable(), TextColumn::make('email')->copyable()->label('E-Mail'), IconColumn::make('agb_akzeptiert') + ->searchable() ->label('AGB') ->boolean() ->trueIcon(Heroicon::OutlinedCheckBadge) diff --git a/app/Models/Auftraggeber.php b/app/Models/Auftraggeber.php index 41759af..44f2522 100644 --- a/app/Models/Auftraggeber.php +++ b/app/Models/Auftraggeber.php @@ -23,8 +23,19 @@ class Auftraggeber extends Model 'email', 'phone', 'use_logo', + 'kopf', ]; + /** + * @return array + */ + protected function casts(): array + { + return [ + 'kopf' => 'array', + ]; + } + protected static function newFactory(): Factory { return AuftraggeberFactory::new(); diff --git a/app/Models/Gutachter.php b/app/Models/Gutachter.php index baa577e..870fc91 100644 --- a/app/Models/Gutachter.php +++ b/app/Models/Gutachter.php @@ -27,6 +27,16 @@ class Gutachter extends Model 'kopf', ]; + /** + * @return array + */ + protected function casts(): array + { + return [ + 'kopf' => 'array', + ]; + } + protected static function booted(): void { static::addGlobalScope(new KontoScope); 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 c7ac358..dce3508 100644 --- a/database/migrations/2025_09_05_131323_create_gutachter_tables.php +++ b/database/migrations/2025_09_05_131323_create_gutachter_tables.php @@ -29,16 +29,6 @@ return new class extends Migration }); } - /** - * @return array - */ - protected function casts(): array - { - return [ - 'kopf' => 'array', - ]; - } - /** * Reverse the migrations. */ diff --git a/database/migrations/2025_10_05_062328_create_auftraggeber_table.php b/database/migrations/2025_10_05_062328_create_auftraggeber_table.php index 0c35d89..eced87b 100644 --- a/database/migrations/2025_10_05_062328_create_auftraggeber_table.php +++ b/database/migrations/2025_10_05_062328_create_auftraggeber_table.php @@ -24,6 +24,7 @@ return new class extends Migration $table->string('email')->email()->nullable(); $table->string('phone')->tel()->nullable(); $table->boolean('use_logo')->default(false); + $table->string('kopf')->nullable(); $table->timestamps(); }); }