Merge pull request 'Added sticker deatil importer and exporter' (#27) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled

Reviewed-on: #27
This commit was merged in pull request #27.
This commit is contained in:
2025-12-22 11:41:57 +00:00
2 changed files with 175 additions and 0 deletions

View File

@@ -0,0 +1,102 @@
<?php
namespace App\Filament\Exports;
use App\Models\StickerDetail;
use Filament\Actions\Exports\ExportColumn;
use Filament\Actions\Exports\Exporter;
use Filament\Actions\Exports\Models\Export;
class StickerDetailExporter extends Exporter
{
protected static ?string $model = StickerDetail::class;
public static function getColumns(): array
{
static $rowNumber = 0;
return [
ExportColumn::make('no')
->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;
}
}

View File

@@ -0,0 +1,73 @@
<?php
namespace App\Filament\Imports;
use App\Models\StickerDetail;
use Filament\Actions\Imports\ImportColumn;
use Filament\Actions\Imports\Importer;
use Filament\Actions\Imports\Models\Import;
class StickerDetailImporter extends Importer
{
protected static ?string $model = StickerDetail::class;
public static function getColumns(): array
{
return [
ImportColumn::make('stickerStructureDetail')
->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;
}
}