diff --git a/app/Actions/Generate/Tabellen/Nutzwertberechnung.php b/app/Actions/Generate/Tabellen/Nutzwertberechnung.php index 9e2e5aa..e208ea9 100644 --- a/app/Actions/Generate/Tabellen/Nutzwertberechnung.php +++ b/app/Actions/Generate/Tabellen/Nutzwertberechnung.php @@ -15,12 +15,14 @@ class Nutzwertberechnung $objekte = LadeProjekt::project($projekte_id, false); - // dd($objekte); - $html = ''; foreach ($objekte as $topnr => $methoden) { - $html .= ''; + if (PdfGenerator::$projekt) { + $html .= '
'; + } else { + $html .= '
'; + } $html .= ''; $html .= ''; $html .= ''; diff --git a/app/Filament/Imports/ImportObjekteDirect.php b/app/Filament/Imports/ImportObjekteDirect.php index 53d0dc2..465dc25 100644 --- a/app/Filament/Imports/ImportObjekteDirect.php +++ b/app/Filament/Imports/ImportObjekteDirect.php @@ -2,6 +2,7 @@ namespace App\Filament\Imports; +use App\Models\ProjektMethode; use App\Models\ProjektObjekte; use App\Models\ProjektObjekteImDetail; use App\Models\User; @@ -29,9 +30,15 @@ class ImportObjekteDirect $top_nummer = trim($cells[0]); $geschoss = trim($cells[1]); $raumart = trim($cells[2]); + + $projekt_methode = ProjektMethode::firstOrNew([ + 'projekte_id' => $projekte_id, + 'raumart' => $raumart, + ]); + $flaeche = (float) str_replace(',', '.', trim($cells[3])); - if (is_numeric($flaeche) && $flaeche > 0) { + if (is_numeric($flaeche) && $flaeche > 0 && $projekt_methode->id) { $objekt = ProjektObjekte::where('projekte_id', $projekte_id) ->where('top_nummer', $top_nummer) @@ -46,8 +53,8 @@ class ImportObjekteDirect $objektImDetail = ProjektObjekteImDetail::where('projekte_id', $projekte_id) ->where('projekt_objekte_id', $objekt->id) + ->where('projekt_methode_id', $projekt_methode->id) ->where('geschoss', $geschoss) - ->where('raumart', $raumart) ->first(); if ($objektImDetail === null) { @@ -56,6 +63,7 @@ class ImportObjekteDirect $objektImDetail = new ProjektObjekteImDetail([ 'projekte_id' => $projekte_id, 'projekt_objekte_id' => $objekt->id, + 'projekt_methode_id' => $projekt_methode->id, 'geschoss' => $geschoss, 'raumart' => $raumart, ]); diff --git a/app/Filament/Imports/ProjektObjekteImDetailImporter.php b/app/Filament/Imports/ProjektObjekteImDetailImporter.php index dfe2f75..157f44c 100644 --- a/app/Filament/Imports/ProjektObjekteImDetailImporter.php +++ b/app/Filament/Imports/ProjektObjekteImDetailImporter.php @@ -106,15 +106,15 @@ class ProjektObjekteImDetailImporter extends Importer return iconv(mb_detect_encoding($state, mb_detect_order(), true), 'UTF-8', $state); }), - ImportColumn::make('raumart') - ->validationAttribute('Raumart') - ->example('Stiegenhaus') - ->rules(['required', 'max:32']) - ->castStateUsing(function (string $state) { - $state = trim($state); + // ImportColumn::make('raumart') + // ->validationAttribute('Raumart') + // ->example('Stiegenhaus') + // ->rules(['required', 'max:32']) + // ->castStateUsing(function (string $state) { + // $state = trim($state); - return iconv(mb_detect_encoding($state, mb_detect_order(), true), 'UTF-8', $state); - }), + // return iconv(mb_detect_encoding($state, mb_detect_order(), true), 'UTF-8', $state); + // }), ImportColumn::make('flaeche') ->label('Fläche') ->validationAttribute('Fläche') @@ -137,7 +137,7 @@ class ProjektObjekteImDetailImporter extends Importer public static function getCompletedNotificationBody(Import $import): string { - $projektObjekteImDetailDeleted = ProjektObjekteImDetail::where('projekte_id', self::$projekte_id) + $projektMethodenDeleted = ProjektMethode::where('projekte_id', self::$projekte_id) ->whereNotIn('raumart', self::$raumarts) ->delete(); @@ -146,6 +146,9 @@ class ProjektObjekteImDetailImporter extends Importer ->whereNotIn('top_nummer', self::$top_nummers) ->delete(); + $methodenIds = ProjektMethode::where('projekte_id', self::$projekte_id)->pluck('id')->toArray(); + $projektObjekteImDetailDeleted = ProjektObjekteImDetail::where('projekte_id', self::$projekte_id)->whereNotIn('projekt_methode_id', $methodenIds)->delete(); + $body = ' Der Import der Objekte ist abgeschlossen. Es wurden '.Number::format($import->successful_rows).' Zeile(n) importiert.'; if ($failedRowsCount = $import->getFailedRowsCount()) { @@ -155,8 +158,9 @@ class ProjektObjekteImDetailImporter extends Importer $body .= '

'; $body .= 'Bestehende Objekte: '.self::$count_have.'
'; $body .= 'Neue Objekte: '.self::$count_new.'
'; - $body .= 'Objekte im Detail gelöscht: '.$projektObjekteImDetailDeleted.'
'; + $body .= 'Projekt Methoden: '.$projektMethodenDeleted.'
'; $body .= 'Objekte gelöscht: '.$projektObjekteDeleted; + $body .= 'Objekte im Detail gelöscht: '.$projektObjekteImDetailDeleted; return $body; } diff --git a/app/Filament/Resources/Projektes/Schemas/ProjekteForm.php b/app/Filament/Resources/Projektes/Schemas/ProjekteForm.php index e1e8c0a..59e03ae 100644 --- a/app/Filament/Resources/Projektes/Schemas/ProjekteForm.php +++ b/app/Filament/Resources/Projektes/Schemas/ProjekteForm.php @@ -138,6 +138,20 @@ class ProjekteForm ->belowContent('Farbe von Rahmen und Rändern bei Tabellen und Boxen.'), ])->columns(4) ->columnSpanFull(), + Tab::make('PDF') + ->icon('phosphor-file-pdf') + ->schema([ + Radio::make('pdf_nutzwerte_tabellen_umbruch') + ->label('PDF Nutzwertberechnung') + ->aboveContent('Bei Tabellen die nicht mehr komplett auf eine Seite passen.') + ->options([ + '0' => 'Tabellen zusammenhalten und eine neue Seite beginnen', + '1' => 'Tabellen umbrechen', + ])->afterStateUpdated(function ($record, ?string $state) { + Projekte::where('id', $record->id)->update(['pdf_nutzwerte_tabellen_umbruch' => $state]); + })->live(), + ])->columns(2) + ->columnSpanFull(), ]), ])->columnSpanFull(), diff --git a/app/Models/Projekte.php b/app/Models/Projekte.php index 33e1207..fad72a5 100644 --- a/app/Models/Projekte.php +++ b/app/Models/Projekte.php @@ -22,6 +22,7 @@ class Projekte extends Model 'schmuckfarbe_header', 'farbe_borders', 'evaluation_gutachten', + 'pdf_nutzwerte_tabellen_umbruch', 'bezahlt_am', ]; diff --git a/database/migrations/2025_09_24_131440_create_projektes_table.php b/database/migrations/2025_09_24_131440_create_projektes_table.php index 7d8ab95..61e2aa1 100644 --- a/database/migrations/2025_09_24_131440_create_projektes_table.php +++ b/database/migrations/2025_09_24_131440_create_projektes_table.php @@ -27,6 +27,7 @@ return new class extends Migration $table->string('schmuckfarbe_header')->nullable(); $table->string('farbe_borders')->nullable(); $table->boolean('evaluation_gutachten')->default(0); + $table->boolean('pdf_nutzwerte_tabllen_umbruch')->default(0); $table->timestamp('bezahlt_am')->nullable(); $table->timestamps(); $table->softDeletes();
Top Nr.Geschoß