diff --git a/app/Filament/Imports/ProjektObjekteImDetailImporter.php b/app/Filament/Imports/ProjektObjekteImDetailImporter.php index 6b8e813..46c852f 100644 --- a/app/Filament/Imports/ProjektObjekteImDetailImporter.php +++ b/app/Filament/Imports/ProjektObjekteImDetailImporter.php @@ -25,6 +25,17 @@ class ProjektObjekteImDetailImporter extends Importer return $res; } + public function getCsvSettings(): array + { + return [ + // Setzt das Anführungszeichen auf leer, + // um "text" als text zu lesen + 'enclosure' => '', + 'escape_character' => '\\', + 'use_bom' => true, + ]; + } + public static function getColumns(): array { return [ diff --git a/app/Filament/Resources/Projektes/Pages/EditProjekte.php b/app/Filament/Resources/Projektes/Pages/EditProjekte.php index 2d8c934..8651247 100644 --- a/app/Filament/Resources/Projektes/Pages/EditProjekte.php +++ b/app/Filament/Resources/Projektes/Pages/EditProjekte.php @@ -10,7 +10,6 @@ use App\Models\Konto; use App\Models\ProjektAllgemeinflaechen; use App\Models\Projekte; use App\Models\ProjektObjekte; -use App\Models\ProjektObjekteImDetail; use App\Traits\HasBackUrl; use Filament\Actions\Action; use Filament\Actions\ActionGroup; @@ -43,6 +42,7 @@ class EditProjekte extends EditRecord ->csvDelimiter('|') ->modalHeading('Allgemeinflächen Import') ->modalContent(view('filament.pages.actions.import-allgemeinflaechen')) + ->modalContentFooter(view('filament.pages.actions.footer-allgemeinflaechen')) ->label('Allgemeinflächen') ->icon('phosphor-upload') ->extraModalFooterActions([ @@ -86,6 +86,7 @@ class EditProjekte extends EditRecord ->csvDelimiter('|') ->modalHeading('Objekte im Detail Import') ->modalContent(view('filament.pages.actions.import-objektemitraeumen')) + ->modalContentFooter(view('filament.pages.actions.footer-objektemitraeumen')) ->label('Objekte') ->icon('phosphor-upload') ->extraModalFooterActions([ @@ -107,7 +108,6 @@ class EditProjekte extends EditRecord ->color('danger') ->requiresConfirmation() ->action(function ($record) { - ProjektObjekteImDetail::where('projekte_id', $record->id)->delete(); ProjektObjekte::where('projekte_id', $record->id)->delete(); $this->record->refresh(); diff --git a/bootstrap/cache/routes-v7.php b/bootstrap/cache/routes-v7.php index 2b090a8..1b2f023 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::NzY5sMjy09l0PpmQ', + '_route' => 'generated::k7ez31ysAW0Y58FL', ), 1 => NULL, 2 => @@ -551,7 +551,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::CtkC04utPkigoHQc', + '_route' => 'generated::QNkpSrWwzTyohqAh', ), 1 => NULL, 2 => @@ -609,7 +609,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::c3MJA33OP0f9nHYt', + '_route' => 'generated::o3mCMIIwcuvYJ9lu', ), 1 => NULL, 2 => @@ -629,7 +629,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::InLNAuxan0Pe9PL8', + '_route' => 'generated::mw9F9pUrztfOIUSK', ), 1 => NULL, 2 => @@ -649,7 +649,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::mGACL7esvxMYVaYW', + '_route' => 'generated::WzjR3sKEIDCDZqgi', ), 1 => NULL, 2 => @@ -669,7 +669,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::vY9YKsHcxDlb83Wz', + '_route' => 'generated::fIhqFwmPowvinThV', ), 1 => NULL, 2 => @@ -689,7 +689,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::WCKAFEcrjt18mBnQ', + '_route' => 'generated::ywtvB1jLVBLyrZqA', ), 1 => NULL, 2 => @@ -2757,7 +2757,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::NzY5sMjy09l0PpmQ' => + 'generated::k7ez31ysAW0Y58FL' => array ( 'methods' => array ( @@ -2769,7 +2769,7 @@ app('router')->setCompiledRoutes( array ( 'uses' => 'Livewire\\Mechanisms\\FrontendAssets\\FrontendAssets@returnJavaScriptAsFile', 'controller' => 'Livewire\\Mechanisms\\FrontendAssets\\FrontendAssets@returnJavaScriptAsFile', - 'as' => 'generated::NzY5sMjy09l0PpmQ', + 'as' => 'generated::k7ez31ysAW0Y58FL', ), 'fallback' => false, 'defaults' => @@ -2785,7 +2785,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::CtkC04utPkigoHQc' => + 'generated::QNkpSrWwzTyohqAh' => array ( 'methods' => array ( @@ -2797,7 +2797,7 @@ app('router')->setCompiledRoutes( array ( 'uses' => 'Livewire\\Mechanisms\\FrontendAssets\\FrontendAssets@maps', 'controller' => 'Livewire\\Mechanisms\\FrontendAssets\\FrontendAssets@maps', - 'as' => 'generated::CtkC04utPkigoHQc', + 'as' => 'generated::QNkpSrWwzTyohqAh', ), 'fallback' => false, 'defaults' => @@ -2899,7 +2899,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::c3MJA33OP0f9nHYt' => + 'generated::o3mCMIIwcuvYJ9lu' => array ( 'methods' => array ( @@ -2928,7 +2928,7 @@ app('router')->setCompiledRoutes( \'exception\' => $exception, ]), status: $exception ? 500 : 200); }";s:5:"scope";s:54:"Illuminate\\Foundation\\Configuration\\ApplicationBuilder";s:4:"this";N;s:4:"self";s:32:"00000000000009bd0000000000000000";}}', - 'as' => 'generated::c3MJA33OP0f9nHYt', + 'as' => 'generated::o3mCMIIwcuvYJ9lu', ), 'fallback' => false, 'defaults' => @@ -2944,7 +2944,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::InLNAuxan0Pe9PL8' => + 'generated::mw9F9pUrztfOIUSK' => array ( 'methods' => array ( @@ -2966,7 +2966,7 @@ app('router')->setCompiledRoutes( 'where' => array ( ), - 'as' => 'generated::InLNAuxan0Pe9PL8', + 'as' => 'generated::mw9F9pUrztfOIUSK', ), 'fallback' => false, 'defaults' => @@ -2982,7 +2982,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::mGACL7esvxMYVaYW' => + 'generated::WzjR3sKEIDCDZqgi' => array ( 'methods' => array ( @@ -3004,7 +3004,7 @@ app('router')->setCompiledRoutes( 'where' => array ( ), - 'as' => 'generated::mGACL7esvxMYVaYW', + 'as' => 'generated::WzjR3sKEIDCDZqgi', ), 'fallback' => false, 'defaults' => @@ -3020,7 +3020,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::vY9YKsHcxDlb83Wz' => + 'generated::fIhqFwmPowvinThV' => array ( 'methods' => array ( @@ -3042,7 +3042,7 @@ app('router')->setCompiledRoutes( 'where' => array ( ), - 'as' => 'generated::vY9YKsHcxDlb83Wz', + 'as' => 'generated::fIhqFwmPowvinThV', ), 'fallback' => false, 'defaults' => @@ -3058,7 +3058,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::WCKAFEcrjt18mBnQ' => + 'generated::ywtvB1jLVBLyrZqA' => array ( 'methods' => array ( @@ -3080,7 +3080,7 @@ app('router')->setCompiledRoutes( 'where' => array ( ), - 'as' => 'generated::WCKAFEcrjt18mBnQ', + 'as' => 'generated::ywtvB1jLVBLyrZqA', ), 'fallback' => false, 'defaults' => diff --git a/database/migrations/0001_01_01_000002_create_jobs_table.php b/database/migrations/0001_01_01_000002_create_jobs_table.php index 425e705..ed34ded 100644 --- a/database/migrations/0001_01_01_000002_create_jobs_table.php +++ b/database/migrations/0001_01_01_000002_create_jobs_table.php @@ -15,7 +15,7 @@ return new class extends Migration $table->id(); $table->string('queue')->index(); $table->longText('payload'); - $table->unsignedTinyInteger('attempts'); + $table->integer('attempts'); $table->unsignedInteger('reserved_at')->nullable(); $table->unsignedInteger('available_at'); $table->unsignedInteger('created_at'); diff --git a/resources/views/filament/pages/actions/footer-allgemeinflaechen.blade.php b/resources/views/filament/pages/actions/footer-allgemeinflaechen.blade.php index 37dcf23..afb43cc 100644 --- a/resources/views/filament/pages/actions/footer-allgemeinflaechen.blade.php +++ b/resources/views/filament/pages/actions/footer-allgemeinflaechen.blade.php @@ -1,5 +1,6 @@
- Datei: .csv, .txt -
3 Spalten: "Geschoss","Raumart","Fläche" -
Separator: ; + Filament (und die meisten modernen PHP-Parsing-Bibliotheken) erwarten in der Regel Standard-Unix-Zeilenenden (LF, + \n) oder Windows-Zeilenenden (CRLF, \r\n). Zeilenenden im alten Macintosh-Stil (CR, \r) werden in der Regel nicht + erkannt, was dazu führt, dass die gesamte CSV-Datei als eine einzige lange Zeile behandelt wird. +
Bitte beim Export berücksichtigen!
diff --git a/resources/views/filament/pages/actions/footer-objektemitraeumen.blade.php b/resources/views/filament/pages/actions/footer-objektemitraeumen.blade.php index e2e033a..b3cbab8 100644 --- a/resources/views/filament/pages/actions/footer-objektemitraeumen.blade.php +++ b/resources/views/filament/pages/actions/footer-objektemitraeumen.blade.php @@ -1,5 +1,6 @@ -
- Datei: .csv, .txt -
4 Spalten: "Top Nummer";"Geschoss";"Raumart","Fläche" -
Separator: ; +
+ Filament (und die meisten modernen PHP-Parsing-Bibliotheken) erwarten in der Regel Standard-Unix-Zeilenenden (LF, + \n) oder Windows-Zeilenenden (CRLF, \r\n). Zeilenenden im alten Macintosh-Stil (CR, \r) werden in der Regel nicht + erkannt, was dazu führt, dass die gesamte CSV-Datei als eine einzige lange Zeile behandelt wird. +
Bitte beim Export berücksichtigen!
diff --git a/resources/views/filament/pages/actions/import-allgemeinflaechen.blade.php b/resources/views/filament/pages/actions/import-allgemeinflaechen.blade.php index 672cc04..b04327b 100644 --- a/resources/views/filament/pages/actions/import-allgemeinflaechen.blade.php +++ b/resources/views/filament/pages/actions/import-allgemeinflaechen.blade.php @@ -3,6 +3,7 @@
  • Neue Daten werden den Bestehenden angehängt. Änderungen können in der Tabelle direkt vorgenommen werden.
  • Spalten Separator ist die Pfeife (|).
  • +
  • Spalten Elemente werden ohne Aphostropen dargestellt.
  • Die Liste besteht aus 4 Spalten. (Geschoss|Raumart|Fläche)
  • Die Spaltennamen in der ersten Zeile sind erforderlich, bitte mit dem grünen Button kopieren und am Anfang der CSV Liste Neue Daten werden den Bestehenden angehängt. Änderungen können in der Tabelle direkt vorgenommen werden.
  • Spalten Separator ist die Pfeife (|).
  • +
  • Spalten Elemente werden ohne Aphostropen dargestellt.
  • Die Liste besteht aus 4 Spalten. (Top Nummer|Geschoss|Raumart|Fläche)
  • Die Spaltennamen in der ersten Zeile sind erforderlich, bitte mit dem grünen Button kopieren und am Anfang der CSV Liste