getCancelFormAction(), ]; } protected function getRedirectUrl(): string { return $this->getResource()::getUrl('create'); } public function loadRecords() { $this->records = StickerPrinting::where('reference_number', $this->refNumber) ->where('plant_id', $this->plantId) ->latest() ->get(); } public function processRef($value) { //$this->ref_number = $value; $ref = $this->form->getState()['reference_number'] ?? null; $user = Filament::auth()->user(); $operatorName = $user->name; $plantId = $this->form->getState()['plant_id']; $this->plantId = $plantId; $this->dispatch('refreshEmptySticker', $plantId, $ref); $this->dispatch('focus-serial-number'); } public function processSno($value) { $this->serial_number = $value; $plant = $this->form->getState()['plant_id'] ?? null; $ref = $this->form->getState()['reference_number'] ?? null; $sNumber = $this->form->getState()['serial_number'] ?? null; if(empty($this->plantId) || empty($ref) || empty($this->serial_number)) { Notification::make() ->title('Unknown: Incomplete Data!') ->body("Please ensure Plant, Reference Number, and Serial Number are provided.") ->danger() ->seconds(3) ->send(); return; } $exists = StickerPrinting::where('plant_id', $plant) ->where('serial_number', $sNumber) ->first(); if ($exists) { Notification::make() ->title('Duplicate Serial Number!') ->body("Serial Number {$sNumber} already exists for this plant.") ->danger() ->seconds(3) ->send(); // Reset only serial number field $this->form->fill([ 'plant_id' => $plant, 'reference_number' => $ref, 'serial_number' => '', ]); return; } StickerPrinting::create([ 'plant_id' => $this->plantId, 'reference_number' => $ref, 'serial_number' => $this->serial_number, 'created_by' => Filament::auth()->user()->name, ]); $this->dispatch('addStickerToList', $this->plantId, $ref, $this->serial_number); $this->form->fill([ 'plant_id' => $this->plantId, 'reference_number' => $ref, 'serial_number' => '', ]); } public function printSticker() { $plantId = $this->form->getState()['plant_id']; $plantId = trim($plantId) ?? null; $refNumber = trim($this->form->getState()['reference_number'])?? null; $refNumber = trim($refNumber) ?? null; $serialNumber = trim($this->form->getState()['serial_number'])?? null; $serialNumber = trim($serialNumber) ?? null; // dd($plantId, $refNumber, $serialNumber); $serialNumbers = StickerPrinting::where('plant_id', $plantId) ->where('reference_number', $refNumber) ->pluck('serial_number') ->toArray(); if (empty($serialNumbers)) { Notification::make() ->title('No Serial Numbers found!') ->body('Please check the selected Plant & Reference Number.') ->danger() ->send(); return; } // Encode as JSON string in QR Code // $qrData = json_encode([ // 'serial_numbers' => $serialNumbers, // ]); //$qrData = implode(',', $serialNumbers); $qrData = implode("\n", $serialNumbers); $qrCode = base64_encode( QrCode::format('png') ->size(1200) // smaller, still high res ->margin(6) // white border ->errorCorrection('Q')// medium-high correction ->generate($qrData) ); // Send data to Pdf view $pdf = PDF::loadView('pdf.qrcode', [ 'qrCode' => $qrCode, ]); return response()->streamDownload(function () use ($pdf) { echo $pdf->output(); }, "qr-sticker.pdf"); } }