From e0937b21ddfefdc43670492ca2fd04e8a9342f29 Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Wed, 27 May 2026 16:48:10 +0530 Subject: [PATCH] Added vehicle entry importer and exporter --- app/Filament/Exports/VehicleEntryExporter.php | 65 ++++++++++++++ app/Filament/Imports/VehicleEntryImporter.php | 88 +++++++++++++++++++ 2 files changed, 153 insertions(+) create mode 100644 app/Filament/Exports/VehicleEntryExporter.php create mode 100644 app/Filament/Imports/VehicleEntryImporter.php diff --git a/app/Filament/Exports/VehicleEntryExporter.php b/app/Filament/Exports/VehicleEntryExporter.php new file mode 100644 index 0000000..516b48b --- /dev/null +++ b/app/Filament/Exports/VehicleEntryExporter.php @@ -0,0 +1,65 @@ +label('NO') + ->state(function ($record) use (&$rowNumber) { + // Increment and return the row number + return ++$rowNumber; + }), + ExportColumn::make('plant.name') + ->label('PLANT'), + ExportColumn::make('uuid') + ->label('UUID'), + ExportColumn::make('boom_opened') + ->label('BOOM OPENED'), + ExportColumn::make('vehicle_number') + ->label('VEHICLE NUMBER'), + ExportColumn::make('entry_time') + ->label('ENTRY TIME'), + ExportColumn::make('exit_time') + ->label('EXIT TIME'), + ExportColumn::make('duration') + ->label('DURATION'), + ExportColumn::make('type') + ->label('TYPE'), + ExportColumn::make('created_at') + ->label('CREATED AT'), + ExportColumn::make('updated_at') + ->label('UPDATED AT'), + ExportColumn::make('created_by') + ->label('CREATED BY'), + ExportColumn::make('updated_by') + ->label('UPDATED BY'), + ExportColumn::make('deleted_at') + ->label('DELETED AT') + ->enabledByDefault(false), + + ]; + } + + public static function getCompletedNotificationBody(Export $export): string + { + $body = 'Your vehicle entry 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/VehicleEntryImporter.php b/app/Filament/Imports/VehicleEntryImporter.php new file mode 100644 index 0000000..a2f1a57 --- /dev/null +++ b/app/Filament/Imports/VehicleEntryImporter.php @@ -0,0 +1,88 @@ +requiredMapping() + ->exampleHeader('PLANT CODE') + ->example('1000') + ->label('PLANT CODE') + ->relationship(resolveUsing: 'code') + ->rules(['required']), + ImportColumn::make('vehicle_number') + ->requiredMapping() + ->exampleHeader('VEHICLE NUMBER') + ->example('ABC123') + ->label('VEHICLE NUMBER') + ->rules(['required']), + ImportColumn::make('uuid') + ->label('UUID') + ->exampleHeader('UUID') + ->example('ABC123'), + ImportColumn::make('boom_opened') + ->exampleHeader('BOOM OPENED') + ->example('Auto') + ->label('BOOM OPENED'), + ImportColumn::make('entry_time') + ->requiredMapping() + ->exampleHeader('ENTRY TIME') + ->example('2023-01-01 09:00:00') + ->label('ENTRY TIME'), + ImportColumn::make('exit_time') + ->exampleHeader('EXIT TIME') + ->example('2023-01-01 17:00:00') + ->label('EXIT TIME'), + ImportColumn::make('duration') + ->exampleHeader('DURATION (HOURS)') + ->example('8') + ->label('DURATION (HOURS)'), + ImportColumn::make('type') + ->exampleHeader('TYPE') + ->example('TRUCK') + ->label('TYPE'), + ImportColumn::make('created_by') + ->exampleHeader('CREATED BY') + ->example('John Doe') + ->label('CREATED BY'), + ImportColumn::make('updated_by') + ->exampleHeader('UPDATED BY') + ->example('Jane Doe') + ->label('UPDATED BY'), + + + ]; + } + + public function resolveRecord(): ?VehicleEntry + { + // return VehicleEntry::firstOrNew([ + // // Update existing records, matching them by `$this->data['column_name']` + // 'email' => $this->data['email'], + // ]); + + return new VehicleEntry(); + } + + public static function getCompletedNotificationBody(Import $import): string + { + $body = 'Your vehicle entry 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; + } +}