From 8052447de6c5820b118af78bd0dbb6228a87dde9 Mon Sep 17 00:00:00 2001 From: snipe Date: Thu, 3 Oct 2024 14:34:29 +0100 Subject: [PATCH] Ugh Signed-off-by: snipe --- app/Http/Controllers/Api/ImportController.php | 1 - app/Livewire/Importer.php | 4 +-- app/Models/Import.php | 33 +++++++++++++++++++ resources/views/livewire/importer.blade.php | 23 ++++++++----- 4 files changed, 50 insertions(+), 11 deletions(-) diff --git a/app/Http/Controllers/Api/ImportController.php b/app/Http/Controllers/Api/ImportController.php index c2f62ca364..342154b467 100644 --- a/app/Http/Controllers/Api/ImportController.php +++ b/app/Http/Controllers/Api/ImportController.php @@ -66,7 +66,6 @@ class ImportController extends Controller } $reader = Reader::createFromFileObject($file->openFile('r')); //file pointer leak? $reader->setDelimiter(request('delimiter', ',')); - try { $import->header_row = $reader->fetchOne(0); } catch (JsonEncodingException $e) { diff --git a/app/Livewire/Importer.php b/app/Livewire/Importer.php index ab6022b3b5..8ff3315f2d 100644 --- a/app/Livewire/Importer.php +++ b/app/Livewire/Importer.php @@ -40,7 +40,7 @@ class Importer extends Component public $consumables_fields; public $components_fields; public $aliases_fields; - public $delimiter = 'comma'; + public $delimiter; protected $rules = [ 'files.*.file_path' => 'required|string', @@ -49,7 +49,7 @@ class Importer extends Component 'headerRow' => 'array', 'typeOfImport' => 'string', 'field_map' => 'array', - 'delimiter' => 'in:comma,semicolon', + 'delimiter' => 'in:comma,semicolon,pipe', ]; /** diff --git a/app/Models/Import.php b/app/Models/Import.php index 81728c8a5e..fedbc8826e 100644 --- a/app/Models/Import.php +++ b/app/Models/Import.php @@ -2,6 +2,7 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Model; class Import extends Model @@ -11,4 +12,36 @@ class Import extends Model 'first_row' => 'array', 'field_map' => 'json', ]; + + protected function delimiter(): Attribute + { + return Attribute::make( + set: function ($value) { + if ($value == 'semicolon') { + return ';'; + } + if ($value == 'pipe') { + return '|'; + } + + return ','; + + }, + + get: function ($value) { + if ($value == 'semicolon') { + return ';'; + } + if ($value == 'pipe') { + return '|'; + } + + return ','; + + } + + ); + + + } } diff --git a/resources/views/livewire/importer.blade.php b/resources/views/livewire/importer.blade.php index 9baa165b54..11455e173d 100644 --- a/resources/views/livewire/importer.blade.php +++ b/resources/views/livewire/importer.blade.php @@ -295,16 +295,23 @@ @else
+
+ Select Delimiter: + - + - + +