From a154369202ef7e84f1a7de938eba5da692080d9c Mon Sep 17 00:00:00 2001 From: Tin Date: Thu, 19 Sep 2024 03:50:04 +0200 Subject: [PATCH] make badge printing global --- app/Filament/Resources/BadgeResource.php | 2 +- app/Filament/Resources/PrinterResource.php | 6 ++++- .../POS/Printing/PrintBadgeController.php | 2 +- app/Jobs/Printing/PrintBadgeJob.php | 13 +++++++--- ...9_19_014130_add_cols_to_printers_table.php | 24 +++++++++++++++++++ 5 files changed, 41 insertions(+), 6 deletions(-) create mode 100644 database/migrations/2024_09_19_014130_add_cols_to_printers_table.php diff --git a/app/Filament/Resources/BadgeResource.php b/app/Filament/Resources/BadgeResource.php index 52ef087..3f37bf0 100644 --- a/app/Filament/Resources/BadgeResource.php +++ b/app/Filament/Resources/BadgeResource.php @@ -120,7 +120,7 @@ public static function printBadge(Badge $badge,$mass = 0): Badge $badge->status->transitionTo(Printed::class); } // Add delay for mass printing so they are generated in order - PrintBadgeJob::dispatch($badge, Machine::first())->delay(now()->addSeconds($mass * 15)); + PrintBadgeJob::dispatch($badge)->delay(now()->addSeconds($mass * 15)); return $badge; } diff --git a/app/Filament/Resources/PrinterResource.php b/app/Filament/Resources/PrinterResource.php index 1890a76..ccf7ce1 100644 --- a/app/Filament/Resources/PrinterResource.php +++ b/app/Filament/Resources/PrinterResource.php @@ -40,7 +40,7 @@ public static function form(Form $form): Form ->required() ->columnSpanFull(), Forms\Components\Select::make('default_paper_size') - ->options(fn (Printer $record) => collect($record->paper_sizes)->pluck('name', 'name')) + ->options(fn(Printer $record) => collect($record->paper_sizes)->pluck('name', 'name')) ->columnSpanFull(), // Json paper_sizes only view Forms\Components\Textarea::make('paper_sizes') @@ -51,6 +51,10 @@ public static function form(Form $form): Form ->default('{}') ->rows(10) ->columnSpanFull(), + Forms\Components\Checkbox::make('is_active') + ->columnSpanFull(), + Forms\Components\Checkbox::make('is_double') + ->columnSpanFull(), ]); } diff --git a/app/Http/Controllers/POS/Printing/PrintBadgeController.php b/app/Http/Controllers/POS/Printing/PrintBadgeController.php index 2ad821b..4bce943 100644 --- a/app/Http/Controllers/POS/Printing/PrintBadgeController.php +++ b/app/Http/Controllers/POS/Printing/PrintBadgeController.php @@ -16,7 +16,7 @@ class PrintBadgeController extends Controller { public function __invoke(Badge $badge) { - PrintBadgeJob::dispatch($badge, auth('machine')->user()); + PrintBadgeJob::dispatch($badge); if($badge->status !== Printed::class && $badge->status->canTransitionTo(Printed::class)) { $badge->status->transitionTo(Printed::class); } diff --git a/app/Jobs/Printing/PrintBadgeJob.php b/app/Jobs/Printing/PrintBadgeJob.php index c770496..1e48afa 100644 --- a/app/Jobs/Printing/PrintBadgeJob.php +++ b/app/Jobs/Printing/PrintBadgeJob.php @@ -3,6 +3,7 @@ namespace App\Jobs\Printing; use App\Badges\EF28_Badge; +use App\Domain\Printing\Models\Printer; use App\Enum\PrintJobStatusEnum; use App\Enum\PrintJobTypeEnum; use App\Models\Badge\Badge; @@ -19,7 +20,7 @@ class PrintBadgeJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; - public function __construct(private readonly Badge $badge, private Machine $machine) + public function __construct(private readonly Badge $badge) { } @@ -28,15 +29,21 @@ public function handle(): void if($this->badge->status !== Printed::class && $this->badge->status->canTransitionTo(Printed::class)) { $this->badge->status->transitionTo(Printed::class); } + + $printer = new EF28_Badge(); $pdfContent = $printer->getPdf($this->badge); // Store PDF Content in PrintJobs Storage $filePath = 'badges/' . $this->badge->id . '.pdf'; Storage::put($filePath, $pdfContent); - $currentMachine = $this->machine; + // Printer to send job to + $sendTo = Printer::where('is_active') + ->where('type', 'badge') + ->where('is_double', $this->badge->dual_side_print) + ->first(); // Create PrintJob $this->badge->printJobs()->create([ - 'printer_id' => $currentMachine->badge_printer_id, + 'printer_id' => $sendTo->id, 'type' => PrintJobTypeEnum::Badge, 'status' => PrintJobStatusEnum::Pending, 'file' => $filePath, diff --git a/database/migrations/2024_09_19_014130_add_cols_to_printers_table.php b/database/migrations/2024_09_19_014130_add_cols_to_printers_table.php new file mode 100644 index 0000000..fe8b6cd --- /dev/null +++ b/database/migrations/2024_09_19_014130_add_cols_to_printers_table.php @@ -0,0 +1,24 @@ +after('paper_sizes', function (Blueprint $table) { + $table->boolean('is_active')->default(false); + $table->boolean('is_double')->default(false); + }); + }); + } + + public function down(): void + { + Schema::table('printers', function (Blueprint $table) { + // + }); + } +};