Added sticker deatil importer and exporter
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 13s
Gemini PR Review / Gemini PR Review (pull_request) Successful in 18s
Laravel Larastan / larastan (pull_request) Failing after 2m17s
Laravel Pint / pint (pull_request) Failing after 2m15s

This commit is contained in:
dhanabalan
2025-12-22 17:11:48 +05:30
parent 834c643c57
commit de17349372
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;
}
}