From 33b2b6399dc14e3edd52944b7b254495392d61c8 Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Thu, 31 Jul 2025 16:38:23 +0530 Subject: [PATCH] Added mfm meter importer and exporter file --- app/Filament/Exports/MfmMeterExporter.php | 53 +++++++++++++++++ app/Filament/Imports/MfmMeterImporter.php | 72 +++++++++++++++++++++++ 2 files changed, 125 insertions(+) create mode 100644 app/Filament/Exports/MfmMeterExporter.php create mode 100644 app/Filament/Imports/MfmMeterImporter.php diff --git a/app/Filament/Exports/MfmMeterExporter.php b/app/Filament/Exports/MfmMeterExporter.php new file mode 100644 index 000000000..ecfad652f --- /dev/null +++ b/app/Filament/Exports/MfmMeterExporter.php @@ -0,0 +1,53 @@ +label('NO') + ->state(function ($record) use (&$rowNumber) { + // Increment and return the row number + return ++$rowNumber; + }), + ExportColumn::make('plant.name') + ->label('PLANT'), + ExportColumn::make('device.name') + ->label('DEVICE NAME'), + ExportColumn::make('sequence') + ->label('SEQUENCE'), + ExportColumn::make('name') + ->label('NAME'), + ExportColumn::make('created_at') + ->label('CREATED AT'), + ExportColumn::make('updated_at') + ->label('UPDATED AT'), + ExportColumn::make('deleted_at') + ->label('DELETED AT'), + ExportColumn::make('created_by') + ->label('CREATED BY'), + ]; + } + + public static function getCompletedNotificationBody(Export $export): string + { + $body = 'Your mfm meter 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/MfmMeterImporter.php b/app/Filament/Imports/MfmMeterImporter.php new file mode 100644 index 000000000..90d4358a2 --- /dev/null +++ b/app/Filament/Imports/MfmMeterImporter.php @@ -0,0 +1,72 @@ +requiredMapping() + ->exampleHeader('Plant Name') + ->example('Ransar Industries-I') + ->label('Plant Name') + ->relationship(resolveUsing:'name') + ->rules(['required']), + ImportColumn::make('Device Name') + ->requiredMapping() + ->exampleHeader('Device Name') + ->example('REG001') + ->label('Device Name') + ->relationship(resolveUsing:'name') + ->rules(['required']), + ImportColumn::make('sequence') + ->requiredMapping() + ->exampleHeader('Sequence') + ->example('1') + ->label('Sequence') + ->rules(['required']), + ImportColumn::make('name') + ->requiredMapping() + ->exampleHeader('Meter Name') + ->example('Display SSB') + ->label('Meter Name') + ->rules(['required']), + ImportColumn::make('created_by') + ->requiredMapping() + ->exampleHeader('Created By') + ->example('Admin') + ->label('Created By') + ->rules(['required']), + ]; + } + + public function resolveRecord(): ?MfmMeter + { + // return MfmMeter::firstOrNew([ + // // Update existing records, matching them by `$this->data['column_name']` + // 'email' => $this->data['email'], + // ]); + + return new MfmMeter(); + } + + public static function getCompletedNotificationBody(Import $import): string + { + $body = 'Your mfm meter 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; + } +}