diff --git a/app/Actions/Create/CreateProjektInhaltsverzeichnis.php b/app/Actions/Create/CreateProjektInhaltsverzeichnis.php index aa00996..e7e6ef7 100644 --- a/app/Actions/Create/CreateProjektInhaltsverzeichnis.php +++ b/app/Actions/Create/CreateProjektInhaltsverzeichnis.php @@ -10,6 +10,8 @@ class CreateProjektInhaltsverzeichnis { public static function create($record) { + ProjektInhaltsverzeichnis::where('projekte_id', $record->id)->delete(); + $inhaltsverzeichnis = Inhaltsverzeichnis::get(); foreach ($inhaltsverzeichnis as $inhalt) { @@ -28,9 +30,10 @@ class CreateProjektInhaltsverzeichnis 'ordnungszahl' => $inhalt->ordnungszahl, 'name' => $inhalt->name, 'ueberschrift_nicht_anzeigen' => $inhalt->ueberschrift_nicht_anzeigen, - 'seite' => $inhalt->seite, 'tabellen_id' => $inhalt->tabellen_id, 'textblock_id' => $inhalt->textblock_id, + 'seite' => $inhalt->seite, + 'ohne_seitenzahl_anzeige' => $inhalt->ohne_seitenzahl_anzeige, 'textblock' => $textblock, ]); } diff --git a/app/Actions/Validation/GutachtenValidation.php b/app/Actions/Validation/GutachtenValidation.php index cebfadc..345e2c5 100644 --- a/app/Actions/Validation/GutachtenValidation.php +++ b/app/Actions/Validation/GutachtenValidation.php @@ -4,6 +4,7 @@ namespace App\Actions\Validation; use App\Models\Allgemeinflaechen; use App\Models\OrientierungZuAbschlaege; +use App\Models\Projekte; use App\Models\ProjektMethode; use App\Models\ProjektPlatzhalter; use App\Models\Raeumealle; @@ -230,5 +231,7 @@ class GutachtenValidation ->duration(10000) ->body('Die Evaluierung des Projektes war erfolgreich.') ->send(); + + Projekte::where('id', $record->id)->update(['evaluation' => 1]); } } diff --git a/app/Filament/Resources/Auftraggebers/Tables/AuftraggebersTable.php b/app/Filament/Resources/Auftraggebers/Tables/AuftraggebersTable.php index d91053a..c5e0ff8 100644 --- a/app/Filament/Resources/Auftraggebers/Tables/AuftraggebersTable.php +++ b/app/Filament/Resources/Auftraggebers/Tables/AuftraggebersTable.php @@ -18,7 +18,7 @@ class AuftraggebersTable TextColumn::make('email')->copyable()->label('E-Mail')->searchable(), ]) ->recordActions([ - EditAction::make()->iconButton()->color('gray'), + EditAction::make()->iconButton(), ]); } } diff --git a/app/Filament/Resources/Gutachters/Tables/GutachtersTable.php b/app/Filament/Resources/Gutachters/Tables/GutachtersTable.php index 679ac41..bc27e51 100644 --- a/app/Filament/Resources/Gutachters/Tables/GutachtersTable.php +++ b/app/Filament/Resources/Gutachters/Tables/GutachtersTable.php @@ -21,7 +21,7 @@ class GutachtersTable TextColumn::make('email')->copyable()->label('E-Mail')->searchable(), ]) ->recordActions([ - EditAction::make()->iconButton()->color('gray'), + EditAction::make()->iconButton(), ]); } } diff --git a/app/Filament/Resources/Inhaltsverzeichnis/Schemas/InhaltsverzeichnisForm.php b/app/Filament/Resources/Inhaltsverzeichnis/Schemas/InhaltsverzeichnisForm.php index 8d9315d..fde022d 100644 --- a/app/Filament/Resources/Inhaltsverzeichnis/Schemas/InhaltsverzeichnisForm.php +++ b/app/Filament/Resources/Inhaltsverzeichnis/Schemas/InhaltsverzeichnisForm.php @@ -8,7 +8,6 @@ use Filament\Forms\Components\Checkbox; use Filament\Forms\Components\Select; use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TextInput; -use Filament\Schemas\Components\Flex; use Filament\Schemas\Components\Section; use Filament\Schemas\Schema; @@ -18,15 +17,15 @@ class InhaltsverzeichnisForm { return $schema ->components([ - Flex::make([ - Section::make([ + Section::make('Überschrift') + ->schema([ Textarea::make('name') ->required() - ->label('Kapitel Überschrift'), + ->label('Kapitel / Absatz') + ->columnSpan(2), Checkbox::make('ueberschrift_nicht_anzeigen') - ->label('Überschrift nicht angezeigen'), - ]), - Section::make([ + ->label('Überschrift nicht angezeigen') + ->columnSpan(2), TextInput::make('ordnungszahl') ->label('Kapitel Index') ->placeholder('3.21') @@ -34,36 +33,44 @@ class InhaltsverzeichnisForm ->default(0) ->belowContent([ 'Bei "0" wird der Index im PDF nicht angezeigt', - ]), + ]) + ->columnSpan(1), TextInput::make('seite') ->label('Seitenzahl') ->numeric() ->default(0) ->belowContent([ 'Bei "0" wird die Seitenzahl automatisch generiert', + ]) + ->columnSpan(1), + ])->columnSpanFull(), + Section::make('Tabelle & Textblöcke') + ->hiddenLabel() + ->schema([ + Select::make('tabellen_id')->label('Tabelle') + ->prefixIcon('phosphor-table') + ->prefixIconColor( + fn ($record): string => $record->tabellen_id == 0 ? 'gray' : 'primary' + ) + ->default(0) + ->options(function () { + return Tabellen::all()->pluck('name', 'id')->toArray(); + })->belowContent([ + 'Kann auch frei bleiben', ]), - ]), - ])->columnSpanFull(2), - Select::make('tabellen_id')->label('Tabelle') - ->prefixIcon('phosphor-table') - ->default(0) - ->options(function () { - return Tabellen::all()->pluck('name', 'id')->toArray(); - })->belowContent([ - 'Kann auch frei bleiben', - ]), - - Select::make('textblock_id')->label('Textblock') - ->prefixIcon('phosphor-article') - ->default(0) - ->options(function () { - return Textblock::all()->pluck('name', 'id')->toArray(); - - // return ['100' => 'Eigener Textblock'] + $relatedOptions; - })->belowContent([ - 'Kann auch frei bleiben', - ]), + Select::make('textblock_id')->label('Textblock') + ->prefixIcon('phosphor-article') + ->prefixIconColor( + fn ($record): string => $record->textblock_id == 0 ? 'gray' : 'primary' + ) + ->default(0) + ->options(function () { + return Textblock::all()->pluck('name', 'id')->toArray(); + })->belowContent([ + 'Kann auch frei bleiben', + ]), + ])->columnSpanFull(), ]); } } diff --git a/app/Filament/Resources/Inhaltsverzeichnis/Tables/InhaltsverzeichnisTable.php b/app/Filament/Resources/Inhaltsverzeichnis/Tables/InhaltsverzeichnisTable.php index 8c34370..e39b03a 100644 --- a/app/Filament/Resources/Inhaltsverzeichnis/Tables/InhaltsverzeichnisTable.php +++ b/app/Filament/Resources/Inhaltsverzeichnis/Tables/InhaltsverzeichnisTable.php @@ -4,6 +4,7 @@ namespace App\Filament\Resources\Inhaltsverzeichnis\Tables; use Filament\Actions\DeleteAction; use Filament\Actions\EditAction; +use Filament\Support\Enums\FontWeight; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Columns\ToggleColumn; use Filament\Tables\Table; @@ -22,13 +23,12 @@ class InhaltsverzeichnisTable TextColumn::make('name') ->label('Überschrift') ->wrap() - ->description(fn ($record): string => $record->textblock_kennungs->name ?? '') - ->color(fn ($record): string => match ($record->ueberschrift_nicht_anzeigen) { - 1 => 'primary', - default => 'gray', + ->weight(fn ($record): FontWeight => match ($record->ueberschrift_nicht_anzeigen) { + 1 => FontWeight::Thin, + default => FontWeight::SemiBold, }), // ToggleColumn::make('ueberschrift_anzeigen')->label('')->tooltip('Überschrift im PDF anzeigen'), - TextColumn::make('tabellen.name')->wrap(), + TextColumn::make('tabellen.name')->wrap()->label('Tabelle'), TextColumn::make('textblock.name')->wrap(), TextColumn::make('seite') ->alignCenter() @@ -39,7 +39,7 @@ class InhaltsverzeichnisTable ->defaultSort('sort', direction: 'asc') ->reorderable('sort') ->recordActions([ - EditAction::make()->iconButton()->color('gray'), + EditAction::make()->iconButton(), DeleteAction::make()->iconButton(), ]); } diff --git a/app/Filament/Resources/KontoTextblocks/Schemas/KontoTextblockForm.php b/app/Filament/Resources/KontoTextblocks/Schemas/KontoTextblockForm.php index 63c5fdb..fd7795e 100644 --- a/app/Filament/Resources/KontoTextblocks/Schemas/KontoTextblockForm.php +++ b/app/Filament/Resources/KontoTextblocks/Schemas/KontoTextblockForm.php @@ -17,6 +17,7 @@ class KontoTextblockForm ->required(), Textarea::make('beschreibung'), RichEditor::make('textblock') + ->extraInputAttributes(['style' => 'min-height: 20rem; max-height: 50vh; overflow-y: auto;']) ->toolbarButtons([ ['bold', 'italic', 'underline', 'strike', 'subscript', 'superscript'], ]), diff --git a/app/Filament/Resources/KontoTextblocks/Tables/KontoTextblocksTable.php b/app/Filament/Resources/KontoTextblocks/Tables/KontoTextblocksTable.php index aad0672..0aa9411 100644 --- a/app/Filament/Resources/KontoTextblocks/Tables/KontoTextblocksTable.php +++ b/app/Filament/Resources/KontoTextblocks/Tables/KontoTextblocksTable.php @@ -26,7 +26,7 @@ class KontoTextblocksTable ->html(), ]) ->recordActions([ - EditAction::make()->iconButton()->color('gray'), + EditAction::make()->iconButton(), DeleteAction::make()->iconButton(), ]); } diff --git a/app/Filament/Resources/Kontos/Schemas/KontoForm.php b/app/Filament/Resources/Kontos/Schemas/KontoForm.php index 4218458..fce8117 100644 --- a/app/Filament/Resources/Kontos/Schemas/KontoForm.php +++ b/app/Filament/Resources/Kontos/Schemas/KontoForm.php @@ -41,6 +41,7 @@ class KontoForm RichEditor::make('address')->toolbarButtons([ ['bold', 'italic', 'underline', 'subscript', 'superscript'], ]) + ->extraInputAttributes(['style' => 'min-height: 20rem; max-height: 50vh; overflow-y: auto;']) ->label('Adresse') ->required(), ])->columnSpanFull(), diff --git a/app/Filament/Resources/Kontos/Tables/KontosTable.php b/app/Filament/Resources/Kontos/Tables/KontosTable.php index 1f422e6..f0f70f3 100644 --- a/app/Filament/Resources/Kontos/Tables/KontosTable.php +++ b/app/Filament/Resources/Kontos/Tables/KontosTable.php @@ -37,7 +37,7 @@ class KontosTable ]) ->recordActions([ - EditAction::make()->iconButton()->color('gray'), + EditAction::make()->iconButton(), Action::make('Guthaben laden') ->iconButton() ->color('gray') diff --git a/app/Filament/Resources/Methodes/Schemas/MethodeForm.php b/app/Filament/Resources/Methodes/Schemas/MethodeForm.php index 26ae438..5c9b2ad 100644 --- a/app/Filament/Resources/Methodes/Schemas/MethodeForm.php +++ b/app/Filament/Resources/Methodes/Schemas/MethodeForm.php @@ -15,6 +15,7 @@ class MethodeForm TextInput::make('name')->required(), RichEditor::make('description') ->label('Beschreibung') + ->extraInputAttributes(['style' => 'min-height: 20rem; max-height: 50vh; overflow-y: auto;']) ->toolbarButtons([ ['bold', 'italic', 'underline', 'strike', 'subscript', 'superscript'], ]), diff --git a/app/Filament/Resources/Methodes/Tables/MethodesTable.php b/app/Filament/Resources/Methodes/Tables/MethodesTable.php index 4cdc5a6..57bb9c5 100644 --- a/app/Filament/Resources/Methodes/Tables/MethodesTable.php +++ b/app/Filament/Resources/Methodes/Tables/MethodesTable.php @@ -23,7 +23,7 @@ class MethodesTable ->html(), ]) ->recordActions([ - EditAction::make()->iconButton()->color('gray'), + EditAction::make()->iconButton(), ]); } } diff --git a/app/Filament/Resources/Orientierungs/Tables/OrientierungsTable.php b/app/Filament/Resources/Orientierungs/Tables/OrientierungsTable.php index 8e9323f..d0effda 100644 --- a/app/Filament/Resources/Orientierungs/Tables/OrientierungsTable.php +++ b/app/Filament/Resources/Orientierungs/Tables/OrientierungsTable.php @@ -31,7 +31,7 @@ class OrientierungsTable ]), ]) ->recordActions([ - EditAction::make()->iconButton()->color('gray'), + EditAction::make()->iconButton(), ]); } } diff --git a/app/Filament/Resources/Plans/Tables/PlansTable.php b/app/Filament/Resources/Plans/Tables/PlansTable.php index 22e1e79..ae2630a 100644 --- a/app/Filament/Resources/Plans/Tables/PlansTable.php +++ b/app/Filament/Resources/Plans/Tables/PlansTable.php @@ -28,7 +28,7 @@ class PlansTable TextColumn::make('preis')->money('EUR'), ]) ->recordActions([ - EditAction::make()->iconButton()->color('gray'), + EditAction::make()->iconButton(), ]); } } diff --git a/app/Filament/Resources/Projektes/Pages/EditProjekte.php b/app/Filament/Resources/Projektes/Pages/EditProjekte.php index 44cb136..723d492 100644 --- a/app/Filament/Resources/Projektes/Pages/EditProjekte.php +++ b/app/Filament/Resources/Projektes/Pages/EditProjekte.php @@ -67,7 +67,7 @@ class EditProjekte extends EditRecord 1 => 'info', default => 'gray', }) - ->label('Herunterladen') + ->label('3) Herunterladen') ->icon('phosphor-file-pdf') ->url(fn ($record) => route('standard.download', ['record' => $record, 'mode' => 'file'])) ->openUrlInNewTab(), @@ -78,20 +78,24 @@ class EditProjekte extends EditRecord default => 'gray', }) ->disabled(fn ($record): bool => $record->evaluation ? false : true) - ->label('Neu Berechnen') - ->icon('phosphor-calculator') + ->label('2) Generieren') + ->icon('phosphor-math-operations') ->url(fn ($record) => route('standard.download', ['record' => $record, 'mode' => 'new'])) ->openUrlInNewTab(), Action::make('evaluate_gutachten') ->hidden(fn ($record): bool => $record->bezahlt_am ? false : true) ->color(fn ($record): string => match ($record->evaluation) { - 1 => 'gray', - default => 'info', + 1 => 'success', + default => 'primary', + }) + ->label('1) Evaluieren') + ->icon(fn ($record): string => match ($record->evaluation) { + 1 => 'phosphor-check', + default => 'phosphor-eye', }) - ->label('Daten Evaluieren') - ->icon('phosphor-seal-check') ->action(function ($record): void { GutachtenValidation::controll($record); + $this->record->refresh(); }), ])->label('Gutachten') ->icon('heroicon-m-ellipsis-vertical') diff --git a/app/Filament/Resources/Projektes/RelationManagers/AllgemeinflaechensRelationManager.php b/app/Filament/Resources/Projektes/RelationManagers/AllgemeinflaechensRelationManager.php index 16c4d6e..5d5e960 100644 --- a/app/Filament/Resources/Projektes/RelationManagers/AllgemeinflaechensRelationManager.php +++ b/app/Filament/Resources/Projektes/RelationManagers/AllgemeinflaechensRelationManager.php @@ -92,7 +92,7 @@ class AllgemeinflaechensRelationManager extends RelationManager ]), ]) ->recordActions([ - EditAction::make()->iconButton()->color('gray'), + EditAction::make()->iconButton(), DeleteAction::make()->iconButton(), ]) ->toolbarActions([ diff --git a/app/Filament/Resources/Projektes/RelationManagers/ProjektInhaltsverzeichnisRelationManager.php b/app/Filament/Resources/Projektes/RelationManagers/ProjektInhaltsverzeichnisRelationManager.php index 8bce7c8..24f9bcd 100644 --- a/app/Filament/Resources/Projektes/RelationManagers/ProjektInhaltsverzeichnisRelationManager.php +++ b/app/Filament/Resources/Projektes/RelationManagers/ProjektInhaltsverzeichnisRelationManager.php @@ -2,6 +2,7 @@ namespace App\Filament\Resources\Projektes\RelationManagers; +use App\Actions\Create\CreateProjektInhaltsverzeichnis; use App\Models\KontoTextblock; use Filament\Actions\Action; use Filament\Actions\BulkActionGroup; @@ -9,18 +10,21 @@ use Filament\Actions\CreateAction; use Filament\Actions\DeleteAction; use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; +use Filament\Forms\Components\Checkbox; use Filament\Forms\Components\Hidden; use Filament\Forms\Components\RichEditor; use Filament\Forms\Components\RichEditor\RichContentRenderer; use Filament\Forms\Components\Select; +use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TextInput; use Filament\Resources\RelationManagers\RelationManager; -use Filament\Schemas\Components\Actions; -use Filament\Schemas\Components\Flex; -use Filament\Schemas\Components\Section; -use Filament\Schemas\Components\Utilities\Get; +use Filament\Schemas\Components\Fieldset; +use Filament\Schemas\Components\Grid; +use Filament\Schemas\Components\Tabs; +use Filament\Schemas\Components\Tabs\Tab; use Filament\Schemas\Components\Utilities\Set; use Filament\Schemas\Schema; +use Filament\Support\Enums\FontWeight; use Filament\Tables\Columns\IconColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Table; @@ -41,83 +45,104 @@ class ProjektInhaltsverzeichnisRelationManager extends RelationManager { return $schema ->components([ - - TextInput::make('ordnungszahl')->numeric(), - TextInput::make('name'), - - Flex::make([ - Section::make([ - RichEditor::make('textblock') - ->hidden(fn (Get $get): bool => ! $get('textblock_kennung_id')) - ->toolbarButtons([ - ['bold', 'italic', 'underline', 'strike', 'subscript', 'superscript'], - ]), - ]), - Section::make([ - Action::make('textblock_sichern') + Tabs::make('Tabs') + ->tabs([ + Tab::make('Überschrift') ->schema([ - Hidden::make('konto_id')->default(auth()->user()->konto_id), - Hidden::make('namecheck')->default(function ($record) { - return $record['name']; - }), - Hidden::make('textblock_kennung_id')->default(function ($record) { - return $record['textblock_kennung_id']; - }), - RichEditor::make('textblock') - ->hidden() - ->default(function ($record) { - return $record['textblock']; - }), - TextInput::make('name')->required() - ->label('Geben sie dem Textblock einen eindeutigen Namen') - ->validationMessages([ - 'different' => 'Name ist schon in Verwendung bitte verwenden Sie einen eindeutig Namen.', + Textarea::make('name') + ->required() + ->label('Kapitel / Absatz') + ->columnSpan(2), + Checkbox::make('ueberschrift_nicht_anzeigen') + ->label('Überschrift nicht angezeigen') + ->columnSpan(2), + TextInput::make('ordnungszahl') + ->label('Kapitel Index') + ->placeholder('3.21') + ->numeric() + ->default(0) + ->belowContent([ + 'Bei "0" wird der Index im PDF nicht angezeigt', ]) - ->different('namecheck') - ->default(function ($record) { - return $record['name']; - }), - ]) - ->modalSubmitActionLabel('Sichern') - ->iconButton() - ->icon('phosphor-floppy-disk') - ->tooltip('Ein veränderter Textblock kann als persönliche Vorlage gespeichert werden.') - ->action(function (array $mountedActions, $data) { + ->columnSpan(1), + TextInput::make('seite') + ->label('Seitenzahl') + ->numeric() + ->default(0) + ->belowContent([ + 'Bei "0" wird die Seitenzahl automatisch generiert', + ]) + ->columnSpan(1), + ]), + Tab::make('Textblock') + ->schema([ + Grid::make() + ->columns(6) + ->schema([ + RichEditor::make('textblock') + ->extraInputAttributes(['style' => 'min-height: 20rem; max-height: 50vh; overflow-y: auto;']) + ->columnSpan(5) + ->toolbarButtons([ + ['bold', 'italic', 'underline', 'strike', 'subscript', 'superscript'], + ]), - $record = $mountedActions[0]->getRawData(); + Fieldset::make('') + ->contained(false) + ->schema([ + Action::make('textblock_sichern') + ->schema([ + Hidden::make('konto_id')->default(auth()->user()->konto_id), + RichEditor::make('textblock') + ->extraInputAttributes(['style' => 'min-height: 20rem; max-height: 50vh; overflow-y: auto;']) + ->hidden() + ->default(function ($record) { + return $record['textblock']; + }), + TextInput::make('name')->required() + ->label('Geben sie der Vorlage einen eindeutigen Namen') + ->default(function ($record) { + return $record['name']; + }), + ]) + ->modalSubmitActionLabel('Sichern') + ->iconButton() + ->icon('phosphor-floppy-disk') + ->tooltip('Als persönliche Vorlage speichern') + ->action(function (array $mountedActions, $data) { - KontoTextblock::updateOrCreate( - [ - 'konto_id' => auth()->user()->konto_id, - 'name' => $data['name'], - 'textblock_kennung_id' => $record['textblock_kennung_id'], - ], [ - 'textblock' => RichContentRenderer::make($record['textblock'])->toHtml(), - ]); - }), - Actions::make([ - Action::make('textblock_laden') - ->schema([ - Select::make('konto_textblock_id') - ->hiddenLabel() - ->searchable() - ->options(function ($record) { - return KontoTextblock::where('textblock_kennung_id', $record['textblock_kennung_id'])->where('konto_id', auth()->user()->konto_id)->pluck('name', 'id')->toArray(); - })->belowLabel([ - 'Bitte eine Vorlage auswählen', - ]), - ]) - ->icon('phosphor-article') - ->iconButton() - ->modalSubmitActionLabel('Einsetzen') - ->tooltip('Personaliserten Textblock laden.') - ->action(function (Set $set, array $data) { - $set('textblock', KontoTextblock::query()->where('id', $data['konto_textblock_id'])->pluck('textblock')->first()); - }), - ]), - ])->grow(false), - ])->columnSpanFull(), + $record = $mountedActions[0]->getRawData(); + KontoTextblock::updateOrCreate( + [ + 'konto_id' => auth()->user()->konto_id, + 'name' => $data['name'], + ], [ + 'textblock' => RichContentRenderer::make($record['textblock'])->toHtml(), + ]); + }), + Action::make('textblock_laden') + ->schema([ + Select::make('konto_textblock_id') + ->hiddenLabel() + ->searchable() + ->options(function ($record) { + return KontoTextblock::where('konto_id', auth()->user()->konto_id)->pluck('name', 'id')->toArray(); + })->belowLabel([ + 'Bitte eine Vorlage auswählen', + ]), + ]) + ->icon('phosphor-article') + ->iconButton() + ->modalSubmitActionLabel('Einsetzen') + ->tooltip('Persönliche Vorlage laden.') + ->action(function (Set $set, array $data) { + $set('textblock', KontoTextblock::query()->pluck('textblock')->first()); + }), + ]) + ->columns(1), + ]), + ]), + ])->columnSpanFull(), ]); } @@ -126,36 +151,61 @@ class ProjektInhaltsverzeichnisRelationManager extends RelationManager return $table ->recordTitleAttribute('text') ->columns([ - // TextColumn::make('sort'), TextColumn::make('ordnungszahl') + ->width('2rem') + ->label('Index') ->getStateUsing(fn ($record): string => $record->ordnungszahl == '0' ? '' : number_format($record->ordnungszahl, 2)), - IconColumn::make('textblock_kennung_id') - ->label('Text') + TextColumn::make('name') + ->wrap() + ->weight(fn ($record): FontWeight => match ($record->ueberschrift_nicht_anzeigen) { + 1 => FontWeight::Thin, + default => FontWeight::SemiBold, + }) + ->description(fn ($record): string => $record->textblock_kennung->name ?? ''), + TextColumn::make('tabellen.name')->wrap()->label('Tabelle'), + TextColumn::make('textblock.name')->wrap(), + IconColumn::make('textblock') ->alignCenter() ->icon('phosphor-article') ->color(fn (string $state): string => match ($state) { '0' => 'gray', default => 'info', }), - TextColumn::make('name') - ->description(fn ($record): string => $record->textblock_kennung->name ?? ''), TextColumn::make('seite') ->alignCenter() ->badge() ->color('info') - ->getStateUsing(fn ($record): string => $record->seite == '0' ? '...' : $record->seite), + ->getStateUsing(function ($record) { + if ($record->ohne_seitenzahl_anzeige) { + return null; + } elseif ($record->seite > 0) { + return (string) $record->seite; + } else { + return (string) 'auto'; + } + }), ]) + ->defaultSort('sort', direction: 'asc') ->reorderable('sort') ->filters([ // ]) ->headerActions([ + Action::make('generate') + ->action(fn (CreateProjektInhaltsverzeichnis $createInhaltsverzeichnis) => $createInhaltsverzeichnis->create($this->ownerRecord)) + ->requiresConfirmation() + ->modalHeading('Inhaltsverzeichnis neu generieren') + ->modalDescription('Bestehende Daten werden gelöscht.') + ->modalSubmitActionLabel('Ja, neu generieren') + ->label('Generieren') + ->tooltip('Inhaltsverzeichnis wird neu erstellt.') + ->icon('phosphor-gear'), CreateAction::make() ->icon('phosphor-file-plus') ->createAnother(false), ]) ->recordActions([ - EditAction::make('edit')->iconButton()->color('gray'), + EditAction::make()->iconButton(), DeleteAction::make()->iconButton(), ]) ->toolbarActions([ diff --git a/app/Filament/Resources/Projektes/RelationManagers/ProjektPlatzhalterRelationManager.php b/app/Filament/Resources/Projektes/RelationManagers/ProjektPlatzhalterRelationManager.php index e72d905..a1e2bb7 100644 --- a/app/Filament/Resources/Projektes/RelationManagers/ProjektPlatzhalterRelationManager.php +++ b/app/Filament/Resources/Projektes/RelationManagers/ProjektPlatzhalterRelationManager.php @@ -60,7 +60,7 @@ class ProjektPlatzhalterRelationManager extends RelationManager ->icon('heroicon-o-cog-8-tooth'), ]) ->recordActions([ - // EditAction::make()->iconButton()->color('gray'), + // EditAction::make()->iconButton(), ]); } } diff --git a/app/Filament/Resources/Projektes/RelationManagers/RaeumeallesRelationManager.php b/app/Filament/Resources/Projektes/RelationManagers/RaeumeallesRelationManager.php index 584d5c1..066a5c1 100644 --- a/app/Filament/Resources/Projektes/RelationManagers/RaeumeallesRelationManager.php +++ b/app/Filament/Resources/Projektes/RelationManagers/RaeumeallesRelationManager.php @@ -115,7 +115,7 @@ class RaeumeallesRelationManager extends RelationManager ]), ]) ->recordActions([ - EditAction::make()->iconButton()->color('gray'), + EditAction::make()->iconButton(), DeleteAction::make()->iconButton(), ]) ->toolbarActions([ diff --git a/app/Filament/Resources/Projektes/Schemas/ProjekteForm.php b/app/Filament/Resources/Projektes/Schemas/ProjekteForm.php index b0318b6..b236b14 100644 --- a/app/Filament/Resources/Projektes/Schemas/ProjekteForm.php +++ b/app/Filament/Resources/Projektes/Schemas/ProjekteForm.php @@ -38,12 +38,17 @@ class ProjekteForm Tab::make('Zuordnung') ->schema([ Select::make('gutachter_id')->relationship(name: 'gutachter', titleAttribute: 'company')->required(), - Select::make('auftraggeber_id')->relationship(name: 'auftraggeber', titleAttribute: 'company')->required(), + Select::make('auftraggeber_id') + ->searchable() + ->loadingMessage('Lade Auftraggeber...') + ->relationship(name: 'auftraggeber', titleAttribute: 'company') + ->required(), Radio::make('status')->options(ProjektStatus::class)->required(), ]), Tab::make('Beschreibung') ->schema([ RichEditor::make('beschreibung') + ->extraInputAttributes(['style' => 'min-height: 20rem; max-height: 50vh; overflow-y: auto;']) ->toolbarButtons([ ['bold', 'italic', 'underline', 'strike', 'subscript', 'superscript', 'link'], ['alignStart', 'alignCenter', 'alignEnd', 'horizontalRule'], diff --git a/app/Filament/Resources/Projektes/Tables/ProjektesTable.php b/app/Filament/Resources/Projektes/Tables/ProjektesTable.php index 730e263..18fbbcf 100644 --- a/app/Filament/Resources/Projektes/Tables/ProjektesTable.php +++ b/app/Filament/Resources/Projektes/Tables/ProjektesTable.php @@ -42,7 +42,7 @@ class ProjektesTable ->relationship('auftraggeber', 'company'), ]) ->recordActions([ - EditAction::make()->iconButton()->color('gray'), + EditAction::make()->iconButton(), ]); } } diff --git a/app/Filament/Resources/Textblocks/Schemas/TextblockForm.php b/app/Filament/Resources/Textblocks/Schemas/TextblockForm.php index 547ef7a..de3ee88 100644 --- a/app/Filament/Resources/Textblocks/Schemas/TextblockForm.php +++ b/app/Filament/Resources/Textblocks/Schemas/TextblockForm.php @@ -19,6 +19,7 @@ class TextblockForm ->afterLabel('Bei gleichen Textblockarten kann hier der Unterschied kurz angerissen werden.'), RichEditor::make('textblock') + ->extraInputAttributes(['style' => 'min-height: 20rem; max-height: 50vh; overflow-y: auto;']) ->toolbarButtons([ ['bold', 'italic', 'underline', 'strike', 'subscript', 'superscript'], ]), diff --git a/app/Filament/Resources/Textblocks/Tables/TextblocksTable.php b/app/Filament/Resources/Textblocks/Tables/TextblocksTable.php index 75eeebb..5a4722e 100644 --- a/app/Filament/Resources/Textblocks/Tables/TextblocksTable.php +++ b/app/Filament/Resources/Textblocks/Tables/TextblocksTable.php @@ -25,7 +25,7 @@ class TextblocksTable ->html(), ]) ->recordActions([ - EditAction::make()->iconButton()->color('gray'), + EditAction::make()->iconButton(), DeleteAction::make()->iconButton(), ]); } diff --git a/app/Filament/Resources/Textblocks/TextblockResource.php b/app/Filament/Resources/Textblocks/TextblockResource.php index 715eec7..4fc6aa9 100644 --- a/app/Filament/Resources/Textblocks/TextblockResource.php +++ b/app/Filament/Resources/Textblocks/TextblockResource.php @@ -23,7 +23,7 @@ class TextblockResource extends Resource protected static string|BackedEnum|null $navigationIcon = 'phosphor-article'; - protected static ?string $navigationLabel = 'Textblock'; + protected static ?string $navigationLabel = 'Textblöcke'; protected static ?string $modelLabel = 'Textblock'; diff --git a/app/Filament/Resources/Users/Tables/UsersTable.php b/app/Filament/Resources/Users/Tables/UsersTable.php index a793862..dc649fd 100644 --- a/app/Filament/Resources/Users/Tables/UsersTable.php +++ b/app/Filament/Resources/Users/Tables/UsersTable.php @@ -30,7 +30,7 @@ class UsersTable TrashedFilter::make()->visible(fn () => auth()->user()->hasRole('super_admin')), ]) ->recordActions([ - EditAction::make()->iconButton()->color('gray'), + EditAction::make()->iconButton(), ]); } } diff --git a/app/Models/Inhaltsverzeichnis.php b/app/Models/Inhaltsverzeichnis.php index 078cd6e..9b30492 100644 --- a/app/Models/Inhaltsverzeichnis.php +++ b/app/Models/Inhaltsverzeichnis.php @@ -14,6 +14,7 @@ class Inhaltsverzeichnis extends Model 'sort', 'ordnungszahl', 'seite', + 'ohne_seitenzahl_anzeige', ]; public function textblock() diff --git a/app/Models/KontoTextblock.php b/app/Models/KontoTextblock.php index e7eabb9..1c2679e 100644 --- a/app/Models/KontoTextblock.php +++ b/app/Models/KontoTextblock.php @@ -10,7 +10,6 @@ class KontoTextblock extends Model protected $fillable = [ 'konto_id', 'name', - 'textblock_kennung_id', 'textblock', ]; diff --git a/app/Models/ProjektInhaltsverzeichnis.php b/app/Models/ProjektInhaltsverzeichnis.php index 51057fb..cde13f9 100644 --- a/app/Models/ProjektInhaltsverzeichnis.php +++ b/app/Models/ProjektInhaltsverzeichnis.php @@ -9,10 +9,23 @@ class ProjektInhaltsverzeichnis extends Model protected $fillable = [ 'projekte_id', 'name', - 'textblock', + 'ueberschrift_nicht_anzeigen', + 'tabellen_id', + 'textblock_id', 'sort', 'ordnungszahl', - 'textblock_kennung_id', 'seite', + 'ohne_seitenzahl_anzeige', + 'textblock', ]; + + public function textblock() + { + return $this->hasMany(Textblock::class, 'id', 'textblock_id'); + } + + public function tabellen() + { + return $this->hasMany(Tabellen::class, 'id', 'tabellen_id'); + } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 0ba2792..be8cedb 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -26,9 +26,9 @@ class AppServiceProvider extends ServiceProvider { FilamentColor::register([ 'danger' => Color::Red, - 'gray' => Color::Zinc, + 'gray' => Color::Slate, 'info' => Color::Blue, - 'primary' => Color::Gray, + 'primary' => Color::Blue, 'success' => Color::Green, 'warning' => Color::Amber, ]); diff --git a/bootstrap/cache/blade-icons.php b/bootstrap/cache/blade-icons.php index 24cfd29..be5c76f 100755 --- a/bootstrap/cache/blade-icons.php +++ b/bootstrap/cache/blade-icons.php @@ -1,7 +1,7 @@ array ( - '/Users/hermanntelser/Sites/nutzwerte_fi4/resources/svg' => + '/Users/salam/Sites/nutzwerte_fi4/resources/svg' => array ( 0 => 'excel', 1 => 'logo', @@ -11,7 +11,7 @@ ), 'heroicons' => array ( - '/Users/hermanntelser/Sites/nutzwerte_fi4/vendor/blade-ui-kit/blade-heroicons/src/../resources/svg' => + '/Users/salam/Sites/nutzwerte_fi4/vendor/blade-ui-kit/blade-heroicons/src/../resources/svg' => array ( 0 => 'c-academic-cap', 1 => 'c-adjustments-horizontal', @@ -1305,7 +1305,7 @@ ), 'phosphor-icons' => array ( - '/Users/hermanntelser/Sites/nutzwerte_fi4/vendor/codeat3/blade-phosphor-icons/src/../resources/svg' => + '/Users/salam/Sites/nutzwerte_fi4/vendor/codeat3/blade-phosphor-icons/src/../resources/svg' => array ( 0 => 'acorn-bold', 1 => 'acorn-duotone', @@ -10383,7 +10383,7 @@ ), 'filament' => array ( - '/Users/hermanntelser/Sites/nutzwerte_fi4/vendor/filament/support/src/../resources/svg' => + '/Users/salam/Sites/nutzwerte_fi4/vendor/filament/support/src/../resources/svg' => array ( 0 => 'o-align-center', 1 => 'o-align-end', @@ -10420,7 +10420,7 @@ ), 'lucide' => array ( - '/Users/hermanntelser/Sites/nutzwerte_fi4/vendor/mallardduck/blade-lucide-icons/src/../resources/svg' => + '/Users/salam/Sites/nutzwerte_fi4/vendor/mallardduck/blade-lucide-icons/src/../resources/svg' => array ( 0 => 'a-arrow-down', 1 => 'a-arrow-up', diff --git a/bootstrap/cache/config.php b/bootstrap/cache/config.php index f053558..38fdf7f 100644 --- a/bootstrap/cache/config.php +++ b/bootstrap/cache/config.php @@ -81,9 +81,9 @@ array ( 'paths' => array ( - 0 => '/Users/hermanntelser/Sites/nutzwerte_fi4/resources/views', + 0 => '/Users/salam/Sites/nutzwerte_fi4/resources/views', ), - 'compiled' => '/Users/hermanntelser/Sites/nutzwerte_fi4/storage/framework/views', + 'compiled' => '/Users/salam/Sites/nutzwerte_fi4/storage/framework/views', ), 'cors' => array ( @@ -124,9 +124,9 @@ 'timezone' => 'UTC', 'locale' => 'de', 'fallback_locale' => 'en', - 'faker_locale' => 'at_AT', + 'faker_locale' => 'de_AT', 'cipher' => 'AES-256-CBC', - 'key' => 'base64:yRi9h21i7xAkGpeF7JoArovQJU1w6xwczQ6ijpYpJrs=', + 'key' => 'base64:zrVnUcBmUGjEV/EoAKnZCm/1FWplKu79kYBvevE2/ek=', 'previous_keys' => array ( ), @@ -301,8 +301,8 @@ 'file' => array ( 'driver' => 'file', - 'path' => '/Users/hermanntelser/Sites/nutzwerte_fi4/storage/framework/cache/data', - 'lock_path' => '/Users/hermanntelser/Sites/nutzwerte_fi4/storage/framework/cache/data', + 'path' => '/Users/salam/Sites/nutzwerte_fi4/storage/framework/cache/data', + 'lock_path' => '/Users/salam/Sites/nutzwerte_fi4/storage/framework/cache/data', ), 'memcached' => array ( @@ -513,7 +513,7 @@ ), 'policies' => array ( - 'path' => '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Policies', + 'path' => '/Users/salam/Sites/nutzwerte_fi4/app/Policies', 'merge' => true, 'generate' => true, 'methods' => @@ -601,7 +601,7 @@ 'local' => array ( 'driver' => 'local', - 'root' => '/Users/hermanntelser/Sites/nutzwerte_fi4/storage/app/private', + 'root' => '/Users/salam/Sites/nutzwerte_fi4/storage/app/private', 'serve' => true, 'throw' => false, 'report' => false, @@ -609,7 +609,7 @@ 'public' => array ( 'driver' => 'local', - 'root' => '/Users/hermanntelser/Sites/nutzwerte_fi4/storage/app/public', + 'root' => '/Users/salam/Sites/nutzwerte_fi4/storage/app/public', 'url' => 'http://nutzwerte_fi4.test/storage', 'visibility' => 'public', 'throw' => false, @@ -631,7 +631,7 @@ 'promotion' => array ( 'driver' => 'local', - 'root' => '/Users/hermanntelser/Sites/nutzwerte_fi4/storage/app/public/promotion', + 'root' => '/Users/salam/Sites/nutzwerte_fi4/storage/app/public/promotion', 'url' => 'http://nutzwerte_fi4.test/storage/promotion', 'visibility' => 'public', 'throw' => false, @@ -639,7 +639,7 @@ ), 'links' => array ( - '/Users/hermanntelser/Sites/nutzwerte_fi4/public/storage' => '/Users/hermanntelser/Sites/nutzwerte_fi4/storage/app/public', + '/Users/salam/Sites/nutzwerte_fi4/public/storage' => '/Users/salam/Sites/nutzwerte_fi4/storage/app/public', ), ), 'logging' => @@ -664,14 +664,14 @@ 'single' => array ( 'driver' => 'single', - 'path' => '/Users/hermanntelser/Sites/nutzwerte_fi4/storage/logs/laravel.log', + 'path' => '/Users/salam/Sites/nutzwerte_fi4/storage/logs/laravel.log', 'level' => 'debug', 'replace_placeholders' => true, ), 'daily' => array ( 'driver' => 'daily', - 'path' => '/Users/hermanntelser/Sites/nutzwerte_fi4/storage/logs/laravel.log', + 'path' => '/Users/salam/Sites/nutzwerte_fi4/storage/logs/laravel.log', 'level' => 'debug', 'days' => 14, 'replace_placeholders' => true, @@ -736,7 +736,7 @@ ), 'emergency' => array ( - 'path' => '/Users/hermanntelser/Sites/nutzwerte_fi4/storage/logs/laravel.log', + 'path' => '/Users/salam/Sites/nutzwerte_fi4/storage/logs/laravel.log', ), ), ), @@ -835,7 +835,7 @@ 'theme' => 'default', 'paths' => array ( - 0 => '/Users/hermanntelser/Sites/nutzwerte_fi4/resources/views/vendor/mail', + 0 => '/Users/salam/Sites/nutzwerte_fi4/resources/views/vendor/mail', ), ), ), @@ -1011,7 +1011,7 @@ 'lifetime' => 120, 'expire_on_close' => false, 'encrypt' => false, - 'files' => '/Users/hermanntelser/Sites/nutzwerte_fi4/storage/framework/sessions', + 'files' => '/Users/salam/Sites/nutzwerte_fi4/storage/framework/sessions', 'connection' => NULL, 'table' => 'sessions', 'store' => NULL, @@ -1059,7 +1059,7 @@ ), 'default_filesystem_disk' => 'local', 'assets_path' => NULL, - 'cache_path' => '/Users/hermanntelser/Sites/nutzwerte_fi4/bootstrap/cache/filament', + 'cache_path' => '/Users/salam/Sites/nutzwerte_fi4/bootstrap/cache/filament', 'livewire_loading_delay' => 'default', 'file_generation' => array ( @@ -1072,7 +1072,7 @@ 'livewire' => array ( 'class_namespace' => 'App\\Livewire', - 'view_path' => '/Users/hermanntelser/Sites/nutzwerte_fi4/resources/views/livewire', + 'view_path' => '/Users/salam/Sites/nutzwerte_fi4/resources/views/livewire', 'layout' => 'components.layouts.app', 'lazy_placeholder' => NULL, 'temporary_file_upload' => diff --git a/bootstrap/cache/filament/panels/admin.php b/bootstrap/cache/filament/panels/admin.php index 9166a05..eb0c947 100644 --- a/bootstrap/cache/filament/panels/admin.php +++ b/bootstrap/cache/filament/panels/admin.php @@ -69,9 +69,9 @@ ), 'clusters' => array ( - '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Clusters/Administration/AdministrationCluster.php' => 'App\\Filament\\Clusters\\Administration\\AdministrationCluster', - '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Clusters/Projekte/ProjekteCluster.php' => 'App\\Filament\\Clusters\\Projekte\\ProjekteCluster', - '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Clusters/Verwaltung/VerwaltungCluster.php' => 'App\\Filament\\Clusters\\Verwaltung\\VerwaltungCluster', + '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Clusters/Administration/AdministrationCluster.php' => 'App\\Filament\\Clusters\\Administration\\AdministrationCluster', + '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Clusters/Projekte/ProjekteCluster.php' => 'App\\Filament\\Clusters\\Projekte\\ProjekteCluster', + '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Clusters/Verwaltung/VerwaltungCluster.php' => 'App\\Filament\\Clusters\\Verwaltung\\VerwaltungCluster', ), 'clusteredComponents' => array ( @@ -96,7 +96,7 @@ ), 'clusterDirectories' => array ( - 0 => '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Clusters', + 0 => '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Clusters', ), 'clusterNamespaces' => array ( @@ -104,14 +104,14 @@ ), 'pages' => array ( - '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Clusters/Administration/AdministrationCluster.php' => 'App\\Filament\\Clusters\\Administration\\AdministrationCluster', - '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Clusters/Projekte/ProjekteCluster.php' => 'App\\Filament\\Clusters\\Projekte\\ProjekteCluster', - '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Clusters/Verwaltung/VerwaltungCluster.php' => 'App\\Filament\\Clusters\\Verwaltung\\VerwaltungCluster', + '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Clusters/Administration/AdministrationCluster.php' => 'App\\Filament\\Clusters\\Administration\\AdministrationCluster', + '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Clusters/Projekte/ProjekteCluster.php' => 'App\\Filament\\Clusters\\Projekte\\ProjekteCluster', + '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Clusters/Verwaltung/VerwaltungCluster.php' => 'App\\Filament\\Clusters\\Verwaltung\\VerwaltungCluster', 0 => 'Filament\\Pages\\Dashboard', ), 'pageDirectories' => array ( - 0 => '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Pages', + 0 => '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Pages', ), 'pageNamespaces' => array ( @@ -119,23 +119,23 @@ ), 'resources' => array ( - '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Resources/Auftraggebers/AuftraggeberResource.php' => 'App\\Filament\\Resources\\Auftraggebers\\AuftraggeberResource', - '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Resources/Gutachters/GutachterResource.php' => 'App\\Filament\\Resources\\Gutachters\\GutachterResource', - '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Resources/Inhaltsverzeichnis/InhaltsverzeichnisResource.php' => 'App\\Filament\\Resources\\Inhaltsverzeichnis\\InhaltsverzeichnisResource', - '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Resources/KontoTextblocks/KontoTextblockResource.php' => 'App\\Filament\\Resources\\KontoTextblocks\\KontoTextblockResource', - '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Resources/Kontos/KontoResource.php' => 'App\\Filament\\Resources\\Kontos\\KontoResource', - '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Resources/Methodes/MethodeResource.php' => 'App\\Filament\\Resources\\Methodes\\MethodeResource', - '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Resources/Orientierungs/OrientierungResource.php' => 'App\\Filament\\Resources\\Orientierungs\\OrientierungResource', - '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Resources/Permissions/PermissionResource.php' => 'App\\Filament\\Resources\\Permissions\\PermissionResource', - '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Resources/Plans/PlanResource.php' => 'App\\Filament\\Resources\\Plans\\PlanResource', - '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Resources/Projektes/ProjekteResource.php' => 'App\\Filament\\Resources\\Projektes\\ProjekteResource', - '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Resources/Textblocks/TextblockResource.php' => 'App\\Filament\\Resources\\Textblocks\\TextblockResource', - '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Resources/Users/UserResource.php' => 'App\\Filament\\Resources\\Users\\UserResource', + '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Resources/Auftraggebers/AuftraggeberResource.php' => 'App\\Filament\\Resources\\Auftraggebers\\AuftraggeberResource', + '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Resources/Gutachters/GutachterResource.php' => 'App\\Filament\\Resources\\Gutachters\\GutachterResource', + '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Resources/Inhaltsverzeichnis/InhaltsverzeichnisResource.php' => 'App\\Filament\\Resources\\Inhaltsverzeichnis\\InhaltsverzeichnisResource', + '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Resources/KontoTextblocks/KontoTextblockResource.php' => 'App\\Filament\\Resources\\KontoTextblocks\\KontoTextblockResource', + '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Resources/Kontos/KontoResource.php' => 'App\\Filament\\Resources\\Kontos\\KontoResource', + '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Resources/Methodes/MethodeResource.php' => 'App\\Filament\\Resources\\Methodes\\MethodeResource', + '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Resources/Orientierungs/OrientierungResource.php' => 'App\\Filament\\Resources\\Orientierungs\\OrientierungResource', + '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Resources/Permissions/PermissionResource.php' => 'App\\Filament\\Resources\\Permissions\\PermissionResource', + '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Resources/Plans/PlanResource.php' => 'App\\Filament\\Resources\\Plans\\PlanResource', + '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Resources/Projektes/ProjekteResource.php' => 'App\\Filament\\Resources\\Projektes\\ProjekteResource', + '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Resources/Textblocks/TextblockResource.php' => 'App\\Filament\\Resources\\Textblocks\\TextblockResource', + '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Resources/Users/UserResource.php' => 'App\\Filament\\Resources\\Users\\UserResource', 0 => 'BezhanSalleh\\FilamentShield\\Resources\\Roles\\RoleResource', ), 'resourceDirectories' => array ( - 0 => '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Resources', + 0 => '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Resources', ), 'resourceNamespaces' => array ( @@ -148,7 +148,7 @@ ), 'widgetDirectories' => array ( - 0 => '/Users/hermanntelser/Sites/nutzwerte_fi4/app/Filament/Widgets', + 0 => '/Users/salam/Sites/nutzwerte_fi4/app/Filament/Widgets', ), 'widgetNamespaces' => array ( diff --git a/bootstrap/cache/routes-v7.php b/bootstrap/cache/routes-v7.php index 30b8fc0..0ef77c4 100644 --- a/bootstrap/cache/routes-v7.php +++ b/bootstrap/cache/routes-v7.php @@ -531,7 +531,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::miopsq0K1HrZfTFf', + '_route' => 'generated::FNViXOj8tK9BsYcj', ), 1 => NULL, 2 => @@ -551,7 +551,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::TFjsvS4T7LX9C5Bj', + '_route' => 'generated::E5wF2GohJ64RTpWy', ), 1 => NULL, 2 => @@ -609,7 +609,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::BmV7ODeKY8KcqAM5', + '_route' => 'generated::0ytmXxv3zAuLbMMD', ), 1 => NULL, 2 => @@ -629,7 +629,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::ixhBlM4fTcynFByI', + '_route' => 'generated::UJPLbfU8hmQnzL5A', ), 1 => NULL, 2 => @@ -649,7 +649,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::RWJiH3xHLvAfuWDx', + '_route' => 'generated::bHCf3cuphnpBFB0f', ), 1 => NULL, 2 => @@ -669,7 +669,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::fW0j8lWigChGVWrL', + '_route' => 'generated::eV9qtym8FEl7D4Za', ), 1 => NULL, 2 => @@ -689,7 +689,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::fQMNejQQ6d7WKdHV', + '_route' => 'generated::Vz1H49CoVMQHz2u8', ), 1 => NULL, 2 => @@ -2740,7 +2740,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::miopsq0K1HrZfTFf' => + 'generated::FNViXOj8tK9BsYcj' => array ( 'methods' => array ( @@ -2752,7 +2752,7 @@ app('router')->setCompiledRoutes( array ( 'uses' => 'Livewire\\Mechanisms\\FrontendAssets\\FrontendAssets@returnJavaScriptAsFile', 'controller' => 'Livewire\\Mechanisms\\FrontendAssets\\FrontendAssets@returnJavaScriptAsFile', - 'as' => 'generated::miopsq0K1HrZfTFf', + 'as' => 'generated::FNViXOj8tK9BsYcj', ), 'fallback' => false, 'defaults' => @@ -2768,7 +2768,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::TFjsvS4T7LX9C5Bj' => + 'generated::E5wF2GohJ64RTpWy' => array ( 'methods' => array ( @@ -2780,7 +2780,7 @@ app('router')->setCompiledRoutes( array ( 'uses' => 'Livewire\\Mechanisms\\FrontendAssets\\FrontendAssets@maps', 'controller' => 'Livewire\\Mechanisms\\FrontendAssets\\FrontendAssets@maps', - 'as' => 'generated::TFjsvS4T7LX9C5Bj', + 'as' => 'generated::E5wF2GohJ64RTpWy', ), 'fallback' => false, 'defaults' => @@ -2882,7 +2882,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::BmV7ODeKY8KcqAM5' => + 'generated::0ytmXxv3zAuLbMMD' => array ( 'methods' => array ( @@ -2892,7 +2892,7 @@ app('router')->setCompiledRoutes( 'uri' => 'up', 'action' => array ( - 'uses' => 'O:55:"Laravel\\SerializableClosure\\UnsignedSerializableClosure":1:{s:12:"serializable";O:46:"Laravel\\SerializableClosure\\Serializers\\Native":5:{s:3:"use";a:0:{}s:8:"function";s:834:"function () { + 'uses' => 'O:55:"Laravel\\SerializableClosure\\UnsignedSerializableClosure":1:{s:12:"serializable";O:46:"Laravel\\SerializableClosure\\Serializers\\Native":5:{s:3:"use";a:0:{}s:8:"function";s:826:"function () { $exception = null; try { @@ -2907,11 +2907,11 @@ app('router')->setCompiledRoutes( $exception = $e->getMessage(); } - return response(\\Illuminate\\Support\\Facades\\View::file(\'/Users/hermanntelser/Sites/nutzwerte_fi4/vendor/laravel/framework/src/Illuminate/Foundation/Configuration\'.\'/../resources/health-up.blade.php\', [ + return response(\\Illuminate\\Support\\Facades\\View::file(\'/Users/salam/Sites/nutzwerte_fi4/vendor/laravel/framework/src/Illuminate/Foundation/Configuration\'.\'/../resources/health-up.blade.php\', [ \'exception\' => $exception, ]), status: $exception ? 500 : 200); }";s:5:"scope";s:54:"Illuminate\\Foundation\\Configuration\\ApplicationBuilder";s:4:"this";N;s:4:"self";s:32:"0000000000000f3b0000000000000000";}}', - 'as' => 'generated::BmV7ODeKY8KcqAM5', + 'as' => 'generated::0ytmXxv3zAuLbMMD', ), 'fallback' => false, 'defaults' => @@ -2927,7 +2927,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::ixhBlM4fTcynFByI' => + 'generated::UJPLbfU8hmQnzL5A' => array ( 'methods' => array ( @@ -2949,7 +2949,7 @@ app('router')->setCompiledRoutes( 'where' => array ( ), - 'as' => 'generated::ixhBlM4fTcynFByI', + 'as' => 'generated::UJPLbfU8hmQnzL5A', ), 'fallback' => false, 'defaults' => @@ -2965,7 +2965,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::RWJiH3xHLvAfuWDx' => + 'generated::bHCf3cuphnpBFB0f' => array ( 'methods' => array ( @@ -2987,7 +2987,7 @@ app('router')->setCompiledRoutes( 'where' => array ( ), - 'as' => 'generated::RWJiH3xHLvAfuWDx', + 'as' => 'generated::bHCf3cuphnpBFB0f', ), 'fallback' => false, 'defaults' => @@ -3003,7 +3003,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::fW0j8lWigChGVWrL' => + 'generated::eV9qtym8FEl7D4Za' => array ( 'methods' => array ( @@ -3025,7 +3025,7 @@ app('router')->setCompiledRoutes( 'where' => array ( ), - 'as' => 'generated::fW0j8lWigChGVWrL', + 'as' => 'generated::eV9qtym8FEl7D4Za', ), 'fallback' => false, 'defaults' => @@ -3041,7 +3041,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::fQMNejQQ6d7WKdHV' => + 'generated::Vz1H49CoVMQHz2u8' => array ( 'methods' => array ( @@ -3063,7 +3063,7 @@ app('router')->setCompiledRoutes( 'where' => array ( ), - 'as' => 'generated::fQMNejQQ6d7WKdHV', + 'as' => 'generated::Vz1H49CoVMQHz2u8', ), 'fallback' => false, 'defaults' => @@ -3203,7 +3203,7 @@ app('router')->setCompiledRoutes( 'uri' => 'storage/{path}', 'action' => array ( - 'uses' => 'O:55:"Laravel\\SerializableClosure\\UnsignedSerializableClosure":1:{s:12:"serializable";O:46:"Laravel\\SerializableClosure\\Serializers\\Native":5:{s:3:"use";a:3:{s:4:"disk";s:5:"local";s:6:"config";a:5:{s:6:"driver";s:5:"local";s:4:"root";s:60:"/Users/hermanntelser/Sites/nutzwerte_fi4/storage/app/private";s:5:"serve";b:1;s:5:"throw";b:0;s:6:"report";b:0;}s:12:"isProduction";b:0;}s:8:"function";s:323:"function (\\Illuminate\\Http\\Request $request, string $path) use ($disk, $config, $isProduction) { + 'uses' => 'O:55:"Laravel\\SerializableClosure\\UnsignedSerializableClosure":1:{s:12:"serializable";O:46:"Laravel\\SerializableClosure\\Serializers\\Native":5:{s:3:"use";a:3:{s:4:"disk";s:5:"local";s:6:"config";a:5:{s:6:"driver";s:5:"local";s:4:"root";s:52:"/Users/salam/Sites/nutzwerte_fi4/storage/app/private";s:5:"serve";b:1;s:5:"throw";b:0;s:6:"report";b:0;}s:12:"isProduction";b:0;}s:8:"function";s:323:"function (\\Illuminate\\Http\\Request $request, string $path) use ($disk, $config, $isProduction) { return (new \\Illuminate\\Filesystem\\ServeFile( $disk, $config, diff --git a/composer.lock b/composer.lock index 0274a3e..64746ff 100644 --- a/composer.lock +++ b/composer.lock @@ -4716,31 +4716,31 @@ }, { "name": "nunomaduro/termwind", - "version": "v2.3.1", + "version": "v2.3.2", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "dfa08f390e509967a15c22493dc0bac5733d9123" + "reference": "eb61920a53057a7debd718a5b89c2178032b52c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/dfa08f390e509967a15c22493dc0bac5733d9123", - "reference": "dfa08f390e509967a15c22493dc0bac5733d9123", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/eb61920a53057a7debd718a5b89c2178032b52c0", + "reference": "eb61920a53057a7debd718a5b89c2178032b52c0", "shasum": "" }, "require": { "ext-mbstring": "*", "php": "^8.2", - "symfony/console": "^7.2.6" + "symfony/console": "^7.3.4" }, "require-dev": { - "illuminate/console": "^11.44.7", - "laravel/pint": "^1.22.0", + "illuminate/console": "^11.46.1", + "laravel/pint": "^1.25.1", "mockery/mockery": "^1.6.12", - "pestphp/pest": "^2.36.0 || ^3.8.2", - "phpstan/phpstan": "^1.12.25", + "pestphp/pest": "^2.36.0 || ^3.8.4", + "phpstan/phpstan": "^1.12.32", "phpstan/phpstan-strict-rules": "^1.6.2", - "symfony/var-dumper": "^7.2.6", + "symfony/var-dumper": "^7.3.4", "thecodingmachine/phpstan-strict-rules": "^1.0.0" }, "type": "library", @@ -4783,7 +4783,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v2.3.1" + "source": "https://github.com/nunomaduro/termwind/tree/v2.3.2" }, "funding": [ { @@ -4799,7 +4799,7 @@ "type": "github" } ], - "time": "2025-05-08T08:14:37+00:00" + "time": "2025-10-18T11:10:27+00:00" }, { "name": "openspout/openspout", diff --git a/database/migrations/2025_10_02_170241_create_inhaltsverzeichnis_table.php b/database/migrations/2025_10_02_170241_create_inhaltsverzeichnis_table.php index bb0ad34..dfded42 100644 --- a/database/migrations/2025_10_02_170241_create_inhaltsverzeichnis_table.php +++ b/database/migrations/2025_10_02_170241_create_inhaltsverzeichnis_table.php @@ -20,6 +20,7 @@ return new class extends Migration $table->integer('sort')->default(0); $table->double('ordnungszahl')->default(0); $table->integer('seite')->default(0); + $table->integer('ohne_seitenzahl_anzeige')->default(0); $table->timestamps(); }); } diff --git a/database/migrations/2025_10_10_085849_create_projekt_inhaltsverzeichnis_table.php b/database/migrations/2025_10_10_085849_create_projekt_inhaltsverzeichnis_table.php index 4866843..f403875 100644 --- a/database/migrations/2025_10_10_085849_create_projekt_inhaltsverzeichnis_table.php +++ b/database/migrations/2025_10_10_085849_create_projekt_inhaltsverzeichnis_table.php @@ -21,6 +21,7 @@ return new class extends Migration $table->integer('sort')->default(0); $table->double('ordnungszahl')->default(0); $table->integer('seite')->default(0); + $table->integer('ohne_seitenzahl_anzeige')->default(0); $table->text('textblock')->nullable(); $table->timestamps(); }); diff --git a/database/migrations/2025_10_11_095549_create_konto_textblocks_table.php b/database/migrations/2025_10_11_095549_create_konto_textblocks_table.php index 9a83c20..9bddd92 100644 --- a/database/migrations/2025_10_11_095549_create_konto_textblocks_table.php +++ b/database/migrations/2025_10_11_095549_create_konto_textblocks_table.php @@ -16,7 +16,6 @@ return new class extends Migration $table->foreignId('konto_id')->constrained(); $table->string('name'); $table->string('beschreibung')->nullable(); - $table->integer('textblock_kennung_id')->default(0)->nullable(); $table->text('textblock'); $table->timestamps(); }); diff --git a/database/seeders/InhaltsverzeichnisSeeder.php b/database/seeders/InhaltsverzeichnisSeeder.php index 3d2386a..1316947 100644 --- a/database/seeders/InhaltsverzeichnisSeeder.php +++ b/database/seeders/InhaltsverzeichnisSeeder.php @@ -12,37 +12,37 @@ class InhaltsverzeichnisSeeder extends Seeder */ public function run(): void { - $sql = "INSERT INTO `inhaltsverzeichnis` (`id`, `sort`, `ordnungszahl`, `name`, `ueberschrift_nicht_anzeigen`, `tabellen_id`, `textblock_id`, `seite`, `created_at`, `updated_at`) + $sql = "INSERT INTO `inhaltsverzeichnis` (`id`, `name`, `ueberschrift_nicht_anzeigen`, `tabellen_id`, `textblock_id`, `sort`, `ordnungszahl`, `seite`, `ohne_seitenzahl_anzeige`, `created_at`, `updated_at`) VALUES - ('1', '1', '0', 'DECKBLATT', '1', '0', '11', '0', NULL, '2025-10-19 08:13:53'), - ('2', '3', '0', 'INHALTSVERZEICHNIS', '1', '1', '0', '0', NULL, '2025-10-19 08:13:53'), - ('3', '4', '1', 'ALLGEMEINE ANGABEN', '0', '0', '0', '3', NULL, '2025-10-19 08:13:53'), - ('4', '5', '1.1', 'AUFTRAGGEBER', '0', '0', '0', '3', NULL, '2025-10-19 08:13:53'), - ('5', '6', '1.2', 'ZWECK UND GEGENSTAND DES GUTACHTENS', '0', '0', '1', '3', NULL, '2025-10-19 08:13:53'), - ('6', '7', '1.3', 'ORTSBESICHTIGUNG', '0', '0', '2', '3', NULL, '2025-10-19 08:13:53'), - ('7', '8', '1.4', 'UNTERLAGEN', '0', '0', '3', '3', NULL, '2025-10-19 08:13:53'), - ('8', '9', '2', 'BEFUND', '0', '0', '0', '4', NULL, '2025-10-19 08:13:53'), - ('9', '10', '2.1', 'GRUNDBUCHSTAND', '0', '0', '4', '4', NULL, '2025-10-19 08:13:53'), - ('10', '11', '2.2', 'BESCHREIBUNG DER LIEGENSCHAFT', '0', '0', '5', '4', NULL, '2025-10-19 08:13:53'), - ('11', '12', '2.3', 'ANZAHL DER SELBSTÄNDIGEN EINHEITEN § 6 WEG 2002', '0', '0', '6', '5', NULL, '2025-10-19 08:13:53'), - ('12', '13', '0', 'Tabelle § 6', '1', '3', '0', '5', NULL, '2025-10-19 08:13:53'), - ('13', '14', '2.3', '§ 6 Teil 2', '0', '0', '7', '5', NULL, '2025-10-19 08:13:53'), - ('14', '15', '0', 'ALLGEMEINFLÄCHEN', '0', '4', '0', '0', NULL, '2025-10-19 08:13:53'), - ('15', '16', '3', 'GUTACHTEN', '0', '0', '0', '0', NULL, '2025-10-19 08:13:53'), - ('16', '17', '3.1', 'ALLGEMEINE GRUNDSÄTZE', '0', '0', '8', '0', NULL, '2025-10-19 08:13:53'), - ('17', '18', '3.2', 'ERMITTLUNG DER NUTZWERTE – ZUBEHÖRBEWERTUNG', '0', '0', '9', '0', NULL, '2025-10-19 08:13:53'), - ('18', '19', '0', 'ZUBEHÖR', '0', '0', '10', '0', NULL, '2025-10-19 08:13:53'), - ('19', '20', '3.21', 'TABELLE ZU + ABSCHLÄGE', '1', '5', '0', '0', NULL, '2025-10-19 08:13:53'), - ('20', '21', '3.3', 'NUTZWERTBERECHNUNG', '0', '6', '0', '0', NULL, '2025-10-19 08:13:53'), - ('21', '22', '3.4', 'ZUSAMMENSTELLUNG', '0', '7', '0', '0', NULL, '2025-10-19 08:13:53'), - ('22', '23', '3.41', 'DIGITALE SIGNATUR', '0', '0', '0', '0', NULL, '2025-10-19 08:13:53'), - ('23', '24', '3.5', 'ALLGEMEINFLÄCHEN', '0', '0', '0', '0', NULL, '2025-10-19 08:13:53'), - ('24', '25', '4', 'PARIFIZIERUNGSPLÄNE ', '0', '0', '0', '0', NULL, '2025-10-19 08:13:53'), - ('25', '26', '5', 'ANHANG', '0', '0', '0', '0', NULL, '2025-10-19 08:13:53'), - ('26', '27', '0', 'GRUNDBUCHAUSZUG ', '0', '0', '0', '0', NULL, '2025-10-19 08:13:53'), - ('27', '28', '0', 'BAUBESCHEID', '0', '0', '0', '0', NULL, '2025-10-19 08:13:53'), - ('28', '29', '0', 'HAUSTECHNISCHE BESCHREIBUNG', '0', '0', '0', '0', NULL, '2025-10-19 08:13:53'), - ('29', '30', '0', 'NUTZFLÄCHENERMITTLUNGEN', '0', '0', '0', '0', NULL, '2025-10-19 08:13:53'); + ('1', 'DECKBLATT', '1', '0', '11', '1', '0', '0', '1', NULL, '2025-10-19 08:13:53'), + ('2', 'INHALTSVERZEICHNIS', '1', '1', '0', '3', '0', '0', '1', NULL, '2025-10-19 08:13:53'), + ('3', 'ALLGEMEINE ANGABEN', '0', '0', '0', '4', '1', '3', '0', NULL, '2025-10-19 08:13:53'), + ('4', 'AUFTRAGGEBER', '0', '0', '0', '5', '1.1', '3', '0', NULL, '2025-10-19 08:13:53'), + ('5', 'ZWECK UND GEGENSTAND DES GUTACHTENS', '0', '0', '1', '6', '1.2', '3', '0', NULL, '2025-10-19 08:13:53'), + ('6', 'ORTSBESICHTIGUNG', '0', '0', '2', '7', '1.3', '3', '0', NULL, '2025-10-19 08:13:53'), + ('7', 'UNTERLAGEN', '0', '0', '3', '8', '1.4', '3', '0', NULL, '2025-10-19 08:13:53'), + ('8', 'BEFUND', '0', '0', '0', '9', '2', '4', '0', NULL, '2025-10-19 08:13:53'), + ('9', 'GRUNDBUCHSTAND', '0', '0', '4', '10', '2.1', '4', '0', NULL, '2025-10-19 08:13:53'), + ('10', 'BESCHREIBUNG DER LIEGENSCHAFT', '0', '0', '5', '11', '2.2', '4', '0', NULL, '2025-10-19 08:13:53'), + ('11', 'ANZAHL DER SELBSTÄNDIGEN EINHEITEN § 6 WEG 2002', '0', '0', '6', '12', '2.3', '5', '0', NULL, '2025-10-19 08:13:53'), + ('12', 'Tabelle § 6', '1', '3', '0', '13', '0', '5', '0', NULL, '2025-10-19 08:13:53'), + ('13', '§ 6 Teil 2', '0', '0', '7', '14', '2.3', '5', '0', NULL, '2025-10-19 08:13:53'), + ('14', 'ALLGEMEINFLÄCHEN', '0', '4', '0', '15', '0', '0', '0', NULL, '2025-10-19 08:13:53'), + ('15', 'GUTACHTEN', '0', '0', '0', '16', '3', '0', '0', NULL, '2025-10-19 08:13:53'), + ('16', 'ALLGEMEINE GRUNDSÄTZE', '0', '0', '8', '17', '3.1', '0', '0', NULL, '2025-10-19 08:13:53'), + ('17', 'ERMITTLUNG DER NUTZWERTE – ZUBEHÖRBEWERTUNG', '0', '0', '9', '18', '3.2', '0', '0', NULL, '2025-10-19 08:13:53'), + ('18', 'ZUBEHÖR', '0', '0', '10', '19', '0', '0', '0', NULL, '2025-10-19 08:13:53'), + ('19', 'TABELLE ZU + ABSCHLÄGE', '1', '5', '0', '20', '3.21', '0', '0', NULL, '2025-10-19 08:13:53'), + ('20', 'NUTZWERTBERECHNUNG', '0', '6', '0', '21', '3.3', '0', '0', NULL, '2025-10-19 08:13:53'), + ('21', 'ZUSAMMENSTELLUNG', '0', '7', '0', '22', '3.4', '0', '0', NULL, '2025-10-19 08:13:53'), + ('22', 'DIGITALE SIGNATUR', '0', '0', '0', '23', '3.41', '0', '0', NULL, '2025-10-19 08:13:53'), + ('23', 'ALLGEMEINFLÄCHEN', '0', '0', '0', '24', '3.5', '0', '0', NULL, '2025-10-19 08:13:53'), + ('24', 'PARIFIZIERUNGSPLÄNE ', '0', '0', '0', '25', '4', '0', '0', NULL, '2025-10-19 08:13:53'), + ('25', 'ANHANG', '0', '0', '0', '26', '5', '0', '0', NULL, '2025-10-19 08:13:53'), + ('26', 'GRUNDBUCHAUSZUG ', '0', '0', '0', '27', '0', '0', '0', NULL, '2025-10-19 08:13:53'), + ('27', 'BAUBESCHEID', '0', '0', '0', '28', '0', '0', '0', NULL, '2025-10-19 08:13:53'), + ('28', 'HAUSTECHNISCHE BESCHREIBUNG', '0', '0', '0', '29', '0', '0', '0', NULL, '2025-10-19 08:13:53'), + ('29', 'NUTZFLÄCHENERMITTLUNGEN', '0', '0', '0', '30', '0', '0', '0', NULL, '2025-10-19 08:13:53'); "; DB::unprepared($sql); }