From 1f64c3b36d6599a601099114a5a97b96caeb1eaf Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Tue, 18 Nov 2025 09:48:31 +0530 Subject: [PATCH] Added validation logic in process order importer --- app/Filament/Imports/ProcessOrderImporter.php | 45 ++++++++++++++++--- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/app/Filament/Imports/ProcessOrderImporter.php b/app/Filament/Imports/ProcessOrderImporter.php index 3c7db65..42f2c5e 100644 --- a/app/Filament/Imports/ProcessOrderImporter.php +++ b/app/Filament/Imports/ProcessOrderImporter.php @@ -2,10 +2,15 @@ namespace App\Filament\Imports; +use App\Models\Item; +use App\Models\Plant; use App\Models\ProcessOrder; +use App\Models\User; use Filament\Actions\Imports\ImportColumn; use Filament\Actions\Imports\Importer; use Filament\Actions\Imports\Models\Import; +use Str; +use Filament\Actions\Imports\Exceptions\RowImportFailedException; class ProcessOrderImporter extends Importer { @@ -58,12 +63,42 @@ class ProcessOrderImporter extends Importer public function resolveRecord(): ?ProcessOrder { - // return ProcessOrder::firstOrNew([ - // // Update existing records, matching them by `$this->data['column_name']` - // 'email' => $this->data['email'], - // ]); + $warnMsg = []; + $plant = Plant::where('name', $this->data['plant'])->first(); + $itemCode = Item::where('code', $this->data['item'])->first(); + $iCode = trim($this->data['item']); - return new ProcessOrder(); + if (!$plant) { + $warnMsg[] = "Plant not found"; + } + else if (Str::length($iCode) < 6 || !ctype_alnum($iCode)) { + $warnMsg[] = "Invalid item code found"; + } + else if(!$itemCode) + { + $warnMsg[] = "Item Code not found"; + } + + $user = User::where('name', $this->data['created_by'])->first(); + if (!$user) { + $warnMsg[] = "User not found"; + } + + if (!empty($warnMsg)) { + throw new RowImportFailedException(implode(', ', $warnMsg)); + } + + return ProcessOrder::create([ + 'plant_id' => $plant->id, + 'item_id' => $itemCode->id, + 'process_order' => trim($this->data['process_order']), + 'coil_number' => $this->data['coil_number'] ?? null, + 'order_quantity' => $this->data['order_quantity'], + 'received_quantity' => trim($this->data['received_quantity']), + 'created_by' => $user->name, + ]); + + //return new ProcessOrder(); } public static function getCompletedNotificationBody(Import $import): string