From de1734937237dc8103dd212e1a95fbe74a0f71bf Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Mon, 22 Dec 2025 17:11:48 +0530 Subject: [PATCH] Added sticker deatil importer and exporter --- .../Exports/StickerDetailExporter.php | 102 ++++++++++++++++++ .../Imports/StickerDetailImporter.php | 73 +++++++++++++ 2 files changed, 175 insertions(+) create mode 100644 app/Filament/Exports/StickerDetailExporter.php create mode 100644 app/Filament/Imports/StickerDetailImporter.php diff --git a/app/Filament/Exports/StickerDetailExporter.php b/app/Filament/Exports/StickerDetailExporter.php new file mode 100644 index 0000000..8dd7f11 --- /dev/null +++ b/app/Filament/Exports/StickerDetailExporter.php @@ -0,0 +1,102 @@ +label('NO') + ->state(function ($record) use (&$rowNumber) { + // Increment and return the row number + return ++$rowNumber; + }), + ExportColumn::make('stickerStructureDetail.sticker_id') + ->label('STICKER ID'), + ExportColumn::make('design_element_type') + ->label('DESIGN ELEMENT TYPE'), + ExportColumn::make('element_id') + ->label('ELEMENT ID'), + ExportColumn::make('element_type') + ->label('ELEMENT TYPE'), + ExportColumn::make('string_value') + ->label('STRING VALUE'), + ExportColumn::make('string_font') + ->label('STRING FONT'), + ExportColumn::make('string_size') + ->label('STRING SIZE'), + ExportColumn::make('element_colour') + ->label('ELEMENT COLOUR'), + ExportColumn::make('string_align') + ->label('STRING ALIGN'), + ExportColumn::make('string_x_value') + ->label('STRING X VALUE'), + ExportColumn::make('string_y_value') + ->label('STRING Y VALUE'), + ExportColumn::make('shape_name') + ->label('SHAPE NAME'), + ExportColumn::make('shape_pen_size') + ->label('SHAPE PEN SIZE'), + ExportColumn::make('shape_x1_value') + ->label('SHAPE X1 VALUE'), + ExportColumn::make('shape_y1_value') + ->label('SHAPE Y1 VALUE'), + ExportColumn::make('shape_x2_value') + ->label('SHAPE X2 VALUE'), + ExportColumn::make('shape_y2_value') + ->label('SHAPE Y2 VALUE'), + ExportColumn::make('image_path') + ->label('IMAGE PATH'), + ExportColumn::make('image_type') + ->label('IMAGE TYPE'), + ExportColumn::make('image_x') + ->label('IMAGE X'), + ExportColumn::make('image_y') + ->label('IMAGE Y'), + ExportColumn::make('image_width') + ->label('IMAGE WIDTH'), + ExportColumn::make('image_height') + ->label('IMAGE HEIGHT'), + ExportColumn::make('qr_value') + ->label('QR VALUE'), + ExportColumn::make('qr_align') + ->label('QR ALIGN'), + ExportColumn::make('qr_size') + ->label('QR SIZE'), + ExportColumn::make('qr_x_value') + ->label('QR X VALUE'), + ExportColumn::make('qr_y_value') + ->label('QR Y VALUE'), + ExportColumn::make('created_at') + ->label('CREATED AT'), + ExportColumn::make('updated_at') + ->label('UPDATED AT'), + ExportColumn::make('created_by') + ->label('CREATED BY'), + ExportColumn::make('deleted_at') + ->label('DELETED AT') + ->enabledByDefault(false), + ]; + } + + public static function getCompletedNotificationBody(Export $export): string + { + $body = 'Your sticker detail 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/StickerDetailImporter.php b/app/Filament/Imports/StickerDetailImporter.php new file mode 100644 index 0000000..47bf07a --- /dev/null +++ b/app/Filament/Imports/StickerDetailImporter.php @@ -0,0 +1,73 @@ +requiredMapping() + ->relationship() + ->rules(['required']), + ImportColumn::make('design_element_type'), + ImportColumn::make('element_id'), + ImportColumn::make('element_type'), + ImportColumn::make('string_value'), + ImportColumn::make('string_font'), + ImportColumn::make('string_size'), + ImportColumn::make('element_colour'), + ImportColumn::make('string_align'), + ImportColumn::make('string_x_value'), + ImportColumn::make('string_y_value'), + ImportColumn::make('shape_name'), + ImportColumn::make('shape_pen_size'), + ImportColumn::make('shape_x1_value'), + ImportColumn::make('shape_y1_value'), + ImportColumn::make('shape_x2_value'), + ImportColumn::make('shape_y2_value'), + ImportColumn::make('image_path'), + ImportColumn::make('image_type'), + ImportColumn::make('image_x'), + ImportColumn::make('image_y'), + ImportColumn::make('image_width'), + ImportColumn::make('image_height'), + ImportColumn::make('qr_value'), + ImportColumn::make('qr_align'), + ImportColumn::make('qr_size'), + ImportColumn::make('qr_x_value'), + ImportColumn::make('qr_y_value'), + ImportColumn::make('created_by'), + ImportColumn::make('updated_by'), + ]; + } + + public function resolveRecord(): ?StickerDetail + { + // return StickerDetail::firstOrNew([ + // // Update existing records, matching them by `$this->data['column_name']` + // 'email' => $this->data['email'], + // ]); + + return new StickerDetail(); + } + + public static function getCompletedNotificationBody(Import $import): string + { + $body = 'Your sticker detail 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; + } +}