From 58a58f3d9b426caf42c4ae1773e3be556989b9f3 Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Fri, 25 Apr 2025 12:55:28 +0530 Subject: [PATCH] Added update or create record on import --- app/Filament/Imports/BlockImporter.php | 9 ++++- app/Filament/Imports/CompanyImporter.php | 6 ++- app/Filament/Imports/ItemImporter.php | 17 ++++++--- app/Filament/Imports/LineImporter.php | 11 +++++- app/Filament/Imports/LineStopImporter.php | 9 ++++- .../Imports/StickerMasterImporter.php | 37 ++++++++++++++++++- 6 files changed, 78 insertions(+), 11 deletions(-) diff --git a/app/Filament/Imports/BlockImporter.php b/app/Filament/Imports/BlockImporter.php index 6597793f7..014174864 100644 --- a/app/Filament/Imports/BlockImporter.php +++ b/app/Filament/Imports/BlockImporter.php @@ -6,6 +6,7 @@ use App\Models\Block; use Filament\Actions\Imports\ImportColumn; use Filament\Actions\Imports\Importer; use Filament\Actions\Imports\Models\Import; +use Notification; class BlockImporter extends Importer { @@ -32,12 +33,18 @@ class BlockImporter extends Importer public function resolveRecord(): ?Block { + $plant = \App\Models\Plant::where('name', $this->data['plant'])->first(); + return Block::updateOrCreate([ + 'name' => $this->data['name'], + 'plant_id' => $plant->id + ] + ); // return Block::firstOrNew([ // // Update existing records, matching them by `$this->data['column_name']` // 'email' => $this->data['email'], // ]); - return new Block(); + // return new Block(); } public static function getCompletedNotificationBody(Import $import): string diff --git a/app/Filament/Imports/CompanyImporter.php b/app/Filament/Imports/CompanyImporter.php index 13413e6c2..a50a46ee0 100644 --- a/app/Filament/Imports/CompanyImporter.php +++ b/app/Filament/Imports/CompanyImporter.php @@ -25,12 +25,16 @@ class CompanyImporter extends Importer public function resolveRecord(): ?Company { + return Company::updateOrCreate([ + 'name' => $this->data['name'] + ] + ); // return Company::firstOrNew([ // // Update existing records, matching them by `$this->data['column_name']` // 'email' => $this->data['email'], // ]); - return new Company(); + // return new Company(); } public static function getCompletedNotificationBody(Import $import): string diff --git a/app/Filament/Imports/ItemImporter.php b/app/Filament/Imports/ItemImporter.php index 31c36d1d9..1aec04f8b 100644 --- a/app/Filament/Imports/ItemImporter.php +++ b/app/Filament/Imports/ItemImporter.php @@ -45,12 +45,17 @@ class ItemImporter extends Importer public function resolveRecord(): ?Item { - // return Item::firstOrNew([ - // // Update existing records, matching them by `$this->data['column_name']` - // 'email' => $this->data['email'], - // ]); - - return new Item; + $plant = \App\Models\Plant::where('name', $this->data['plant'])->first(); + return Item::updateOrCreate([ + 'code' => $this->data['code'], + 'plant_id' => $plant->id + ], + [ + 'description' => $this->data['description'], + 'hourly_quantity' => $this->data['hourly_quantity'] + ] + ); + // return new Item; } public static function getCompletedNotificationBody(Import $import): string diff --git a/app/Filament/Imports/LineImporter.php b/app/Filament/Imports/LineImporter.php index c077346e6..23fbe4ea4 100644 --- a/app/Filament/Imports/LineImporter.php +++ b/app/Filament/Imports/LineImporter.php @@ -38,12 +38,21 @@ class LineImporter extends Importer public function resolveRecord(): ?Line { + $plant = \App\Models\Plant::where('name', $this->data['plant'])->first(); + return Line::updateOrCreate([ + 'name' => $this->data['name'], + 'plant_id' => $plant->id + ], + [ + 'type' => $this->data['type'] + ] + ); // return Line::firstOrNew([ // // Update existing records, matching them by `$this->data['column_name']` // 'email' => $this->data['email'], // ]); - return new Line(); + // return new Line(); } public static function getCompletedNotificationBody(Import $import): string diff --git a/app/Filament/Imports/LineStopImporter.php b/app/Filament/Imports/LineStopImporter.php index 298b7ab28..e04c7492a 100644 --- a/app/Filament/Imports/LineStopImporter.php +++ b/app/Filament/Imports/LineStopImporter.php @@ -31,12 +31,19 @@ class LineStopImporter extends Importer public function resolveRecord(): ?LineStop { + return LineStop::updateOrCreate([ + 'code' => $this->data['code'] + ], + [ + 'reason' => $this->data['reason'] + ] + ); // return LineStop::firstOrNew([ // // Update existing records, matching them by `$this->data['column_name']` // 'email' => $this->data['email'], // ]); - return new LineStop(); + // return new LineStop(); } public static function getCompletedNotificationBody(Import $import): string diff --git a/app/Filament/Imports/StickerMasterImporter.php b/app/Filament/Imports/StickerMasterImporter.php index 5d9e78bfb..2fd155907 100644 --- a/app/Filament/Imports/StickerMasterImporter.php +++ b/app/Filament/Imports/StickerMasterImporter.php @@ -26,7 +26,7 @@ class StickerMasterImporter extends Importer ->requiredMapping() ->exampleHeader('Plant Name') ->example('Ransar Industries-I') - ->label('PLANT') + ->label('PLANT NAME') ->relationship(resolveUsing: 'name') ->rules(['required']), @@ -178,6 +178,41 @@ class StickerMasterImporter extends Importer public function resolveRecord(): ?StickerMaster { + $item = \App\Models\Item::where('code', $this->data['item'])->first(); + $plant = \App\Models\Plant::where('name', $this->data['plant'])->first(); + if (!$plant || !$item) { + // Optionally handle missing plant/block + return null; + } + return StickerMaster::updateOrCreate([ + 'item_id' => $item->id, + 'plant_id' => $plant->id + ], + [ + 'serial_number_motor' => $this->data['serial_number_motor'], + 'serial_number_pump' => $this->data['serial_number_pump'], + 'serial_number_pumpset' => $this->data['serial_number_pumpset'], + 'pack_slip_motor' => $this->data['pack_slip_motor'], + 'pack_slip_pump' => $this->data['pack_slip_pump'], + 'pack_slip_pumpset' => $this->data['pack_slip_pumpset'], + 'name_plate_motor' => $this->data['name_plate_motor'], + 'name_plate_pump' => $this->data['name_plate_pump'], + 'name_plate_pumpset' => $this->data['name_plate_pumpset'], + 'tube_sticker_motor' => $this->data['tube_sticker_motor'], + 'tube_sticker_pump' => $this->data['tube_sticker_pump'], + 'tube_sticker_pumpset' => $this->data['tube_sticker_pumpset'], + 'warranty_card' => $this->data['warranty_card'], + 'part_validation1' => $this->data['part_validation1'], + 'part_validation2' => $this->data['part_validation2'], + 'part_validation3' => $this->data['part_validation3'], + 'part_validation4' => $this->data['part_validation4'], + 'part_validation5' => $this->data['part_validation5'], + 'panel_box_code' => $this->data['panel_box_code'], + 'load_rate' => $this->data['load_rate'], + 'bundle_quantity' => $this->data['bundle_quantity'], + 'material_type' => $this->data['material_type'] + ] + ); // return StickerMaster::firstOrNew([ // // Update existing records, matching them by `$this->data['column_name']` // 'email' => $this->data['email'],