From af3ce0ea40c395c2939cc731972318b9358e949e Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Mon, 29 Sep 2025 12:18:09 +0530 Subject: [PATCH] Add plant code column to UserExporter and implement plant validation in UserImporter --- app/Filament/Exports/UserExporter.php | 3 +++ app/Filament/Imports/UserImporter.php | 28 +++++++++++++++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/app/Filament/Exports/UserExporter.php b/app/Filament/Exports/UserExporter.php index ed0d8d2..f9de5b7 100644 --- a/app/Filament/Exports/UserExporter.php +++ b/app/Filament/Exports/UserExporter.php @@ -14,6 +14,7 @@ class UserExporter extends Exporter public static function getColumns(): array { static $rowNumber = 0; + return [ // ExportColumn::make('id') // ->label('ID'), @@ -23,6 +24,8 @@ class UserExporter extends Exporter // Increment and return the row number return ++$rowNumber; }), + ExportColumn::make('plant.code') + ->label('PLANT CODE'), ExportColumn::make('name') ->label('NAME'), ExportColumn::make('email') diff --git a/app/Filament/Imports/UserImporter.php b/app/Filament/Imports/UserImporter.php index 2dbaa5e..a615845 100644 --- a/app/Filament/Imports/UserImporter.php +++ b/app/Filament/Imports/UserImporter.php @@ -2,6 +2,7 @@ namespace App\Filament\Imports; +use App\Models\Plant; use App\Models\User; use Filament\Actions\Imports\Exceptions\RowImportFailedException; use Filament\Actions\Imports\ImportColumn; @@ -17,6 +18,12 @@ class UserImporter extends Importer public static function getColumns(): array { return [ + ImportColumn::make('plant') + ->requiredMapping() + ->exampleHeader('Plant Code') + ->example('1000') + ->label('PLANT CODE') + ->relationship(resolveUsing: 'code'), ImportColumn::make('name') ->requiredMapping() ->exampleHeader('Name') @@ -25,9 +32,9 @@ class UserImporter extends Importer ->rules(['required']),//, 'max:255' ImportColumn::make('email') ->requiredMapping() - ->exampleHeader('E-mail') + ->exampleHeader('E-Mail') ->example('RAW00001@cripumps.com') - ->label('E-mail') + ->label('E-Mail') ->rules(['required', 'email']),//, 'max:255' ImportColumn::make('password') ->requiredMapping() @@ -47,6 +54,22 @@ class UserImporter extends Importer public function resolveRecord(): ?User { $warnMsg = []; + $plant = null; + if (Str::length($this->data['plant']) > 0) { + if (Str::length($this->data['plant']) < 4 || !is_numeric($this->data['plant'] || !preg_match('/^[1-9]\d{3,}$/', $this->data['plant']))) { + $warnMsg[] = "Invalid plant code found!"; + } + else { + $plant = Plant::where('code', $this->data['plant'])->first(); + if (!$plant) { + $warnMsg[] = "Plant not found"; + } + else { + $plant = $plant->id ?? null; + } + } + } + if (Str::length($this->data['name']) < 1) { $warnMsg[] = "User name not found!"; } @@ -85,6 +108,7 @@ class UserImporter extends Importer [ 'name' => $this->data['name'], 'password' => $this->data['password'], + 'plant_id' => $plant, ]); // Assign roles