From 23fb2eed4daa40905d7e1679fec85886fb8dc549 Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Tue, 1 Jul 2025 12:49:27 +0530 Subject: [PATCH] Added locator importer and exporter file --- app/Filament/Exports/LocatorExporter.php | 55 +++++++++++++++++++++ app/Filament/Imports/LocatorImporter.php | 62 ++++++++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 app/Filament/Exports/LocatorExporter.php create mode 100644 app/Filament/Imports/LocatorImporter.php diff --git a/app/Filament/Exports/LocatorExporter.php b/app/Filament/Exports/LocatorExporter.php new file mode 100644 index 0000000..445c3e0 --- /dev/null +++ b/app/Filament/Exports/LocatorExporter.php @@ -0,0 +1,55 @@ +label('ID'), + ExportColumn::make('no') + ->label('NO') + ->state(function ($record) use (&$rowNumber) { + // Increment and return the row number + return ++$rowNumber; + }), + ExportColumn::make('plant.name') + ->label('PLANT'), + ExportColumn::make('locator_number') + ->label('LOCATOR NUMBER'), + ExportColumn::make('locator_quantity') + ->label('LOCATOR QUANTITY'), + ExportColumn::make('operator_id') + ->label('OPERATOR ID'), + ExportColumn::make('created_at') + ->label('CREATED AT'), + ExportColumn::make('updated_at') + ->label('UPDATED AT'), + ExportColumn::make('deleted_at') + ->enabledByDefault(false) + ->label('DELETED AT'), + ]; + } + + public static function getCompletedNotificationBody(Export $export): string + { + $body = 'Your locator export has completed and ' . number_format($export->successful_rows) . ' ' . str('row')->plural($export->successful_rows) . ' exported.'; + + if ($failedRowsCount = $export->getFailedRowsCount()) { + $body .= ' ' . number_format($failedRowsCount) . ' ' . str('row')->plural($failedRowsCount) . ' failed to export.'; + } + + return $body; + } +} diff --git a/app/Filament/Imports/LocatorImporter.php b/app/Filament/Imports/LocatorImporter.php new file mode 100644 index 0000000..318fe18 --- /dev/null +++ b/app/Filament/Imports/LocatorImporter.php @@ -0,0 +1,62 @@ +requiredMapping() + ->exampleHeader('Locator Number') + ->label('Locator Number') + ->rules(['required']), + ImportColumn::make('locator_quantity') + ->requiredMapping() + ->numeric() + ->exampleHeader('Locator Quantity') + ->label('Locator Quantity') + ->rules(['required', 'integer']), + ImportColumn::make('operator_id') + ->requiredMapping() + ->exampleHeader('Operator ID') + ->label('Operator ID') + ->rules(['required']), + ImportColumn::make('plant_id') + ->requiredMapping() + ->relationship('plant', 'name') + ->exampleHeader('Plant') + ->label('Plant') + ->rules(['required']), + ]; + } + + public function resolveRecord(): ?Locator + { + // return Locator::firstOrNew([ + // // Update existing records, matching them by `$this->data['column_name']` + // 'email' => $this->data['email'], + // ]); + + return new Locator(); + } + + public static function getCompletedNotificationBody(Import $import): string + { + $body = 'Your locator import has completed and ' . number_format($import->successful_rows) . ' ' . str('row')->plural($import->successful_rows) . ' imported.'; + + if ($failedRowsCount = $import->getFailedRowsCount()) { + $body .= ' ' . number_format($failedRowsCount) . ' ' . str('row')->plural($failedRowsCount) . ' failed to import.'; + } + + return $body; + } +}