<?php
namespace App\Controller;
use Endroid\QrCode\Color\Color;
use Endroid\QrCode\Encoding\Encoding;
use Endroid\QrCode\ErrorCorrectionLevel;
use Endroid\QrCode\Label\Label;
use Endroid\QrCode\Logo\Logo;
use Endroid\QrCode\QrCode;
use Endroid\QrCode\RoundBlockSizeMode;
use Endroid\QrCode\Writer\PngWriter;
use Intervention\Image\ImageManagerStatic as Image;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
final class AppController extends AbstractController
{
#[Route('/', name: 'index')]
public function index(): Response
{
return $this->render('index.html.twig');
}
#[Route('/terms', name: 'terms', methods: 'GET')]
public function terms(): Response
{
return $this->render('terms.html.twig');
}
#[Route('/privacy', name: 'privacy')]
public function privacy(): Response
{
return $this->render('privacy.html.twig');
}
#[Route('/pricing', name: 'pricing')]
public function pricing(): Response
{
return $this->render('pricing.html.twig');
}
#[Route('/qrcode-generator', name: 'qr-code')]
public function generateQrCodeWithLogo(Request $request): Response
{
$writer = new PngWriter();
$url = sprintf('https://search.google.com/local/writereview?placeid=%s', $request->query->get('place-id'));
$qrCode = QrCode::create($url)
->setEncoding(new Encoding('UTF-8'))
->setErrorCorrectionLevel(ErrorCorrectionLevel::Low)
->setSize(500)
->setMargin(10)
->setRoundBlockSizeMode(RoundBlockSizeMode::Margin)
->setForegroundColor(new Color(0, 0, 0))
->setBackgroundColor(new Color(255, 255, 255));
// Create generic logo
$logo = Logo::create(__DIR__.'/../../public/assets/img/google-icon.png')
->setResizeToWidth(150);
$result = $writer->write($qrCode, $logo);
// Convert the final image to a Symfony Response
$response = new Response($result->getString());
$response->headers->set('Content-Type', $result->getMimeType());
return $response;
}
}