validate([ 'shape_id' => 'required|string', ]); $shapeId = $request->get('shape_id'); // QR kod içeriği - shape ID ile URL oluştur $qrContent = url('/api/pdf-editor/annotations/' . $shapeId); // QR kod PNG olarak üret (Endroid QR Code v6) $qrCode = new EndroidQrCode( data: $qrContent, size: 200, margin: 10 ); $writer = new PngWriter(); $result = $writer->write($qrCode); $qrCodeData = $result->getString(); // QR kod dosyasını kaydet $fileName = 'qr_' . $shapeId . '_' . time() . '.png'; // Klasörü oluştur $qrDir = storage_path('app/public/qr-codes'); if (!file_exists($qrDir)) { mkdir($qrDir, 0755, true); } // QR kod dosyasını kaydet $filePath = $qrDir . '/' . $fileName; file_put_contents($filePath, $qrCodeData); // Public klasörüne de kopyala $publicQrDir = public_path('storage/qr-codes'); if (!file_exists($publicQrDir)) { mkdir($publicQrDir, 0755, true); } $publicFilePath = $publicQrDir . '/' . $fileName; file_put_contents($publicFilePath, $qrCodeData); return response()->json([ 'success' => true, 'data' => [ 'shape_id' => $shapeId, 'qr_content' => $qrContent, 'qr_code_url' => url('storage/qr-codes/' . $fileName) ] ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'error' => $e->getMessage(), 'data' => null ], 500); } } public function generateForAnnotation($shapeId): JsonResponse { try { // QR kod içeriği $qrContent = url('/api/annotations/' . $shapeId); // QR kod PNG olarak üret (Endroid QR Code v6) $qrCode = new EndroidQrCode( data: $qrContent, size: 150, margin: 5 ); $writer = new PngWriter(); $result = $writer->write($qrCode); $qrCodeData = $result->getString(); // Base64 encode for frontend $base64QrCode = 'data:image/png;base64,' . base64_encode($qrCodeData); return response()->json([ 'success' => true, 'data' => [ 'shape_id' => $shapeId, 'qr_code' => $base64QrCode, 'qr_content' => $qrContent ] ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'error' => $e->getMessage(), 'data' => null ], 500); } } }