54 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace App\Controller;
 | 
						|
 | 
						|
use App\Entity\Input\QRCode\QRCode;
 | 
						|
use App\Form\Type\QRCodeType;
 | 
						|
use App\Service\DTO\QRCodeEntityConverter;
 | 
						|
use App\Service\QRCodeGeneratorInterface;
 | 
						|
use App\Service\QRCodeQROptionsProviderInterface;
 | 
						|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 | 
						|
use Symfony\Component\HttpFoundation\Request;
 | 
						|
use Symfony\Component\HttpFoundation\Response;
 | 
						|
use Symfony\Component\Routing\Attribute\Route;
 | 
						|
 | 
						|
class IndexController extends AbstractController {
 | 
						|
    public function __construct(private readonly QRCodeQROptionsProviderInterface $qrCodeQROptionsFactory, private readonly QRCodeEntityConverter $codeEntityConverter) {}
 | 
						|
    #[Route('/', name: 'homepage')]
 | 
						|
    public function indexAction(
 | 
						|
        Request $request,
 | 
						|
        QRCodeGeneratorInterface $qrCodeGenerator,
 | 
						|
    ): Response
 | 
						|
    {
 | 
						|
        $qrCodeImage = null;
 | 
						|
 | 
						|
        $qrCode = $this->createQrCodeEntity();
 | 
						|
        $form = $this->createForm(QRCodeType::class, $qrCode);
 | 
						|
 | 
						|
 | 
						|
        if ($request->isMethod('POST')) {
 | 
						|
            $form->submit($request->request->all($form->getName()));
 | 
						|
 | 
						|
            if ($form->isSubmitted() && $form->isValid()) {
 | 
						|
                /* Puvodne jsem premyslel nad redirectem a ulozenim obrazku
 | 
						|
                    do session, nicmene u takovehleho typu aplikace me to prijde naopak kontraproduktivni.
 | 
						|
                    a zadani o tom mlci. Navic v pripade ze aplikace bude provozovana ve vice instancich
 | 
						|
                    by se musela resit memcache, redis... */
 | 
						|
                $qrCodeImage = $qrCodeGenerator->generateQRCodeFromEntity($this->codeEntityConverter->convert($qrCode));
 | 
						|
                $form = $this->createForm(QRCodeType::class, $this->createQrCodeEntity());
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        return $this->render('index/homepage.html.twig', [
 | 
						|
            'form' => $form,
 | 
						|
            'qrCodeImage' => $qrCodeImage
 | 
						|
        ]);
 | 
						|
    }
 | 
						|
 | 
						|
    private function createQrCodeEntity(): QRCode {
 | 
						|
        return new QRCode(
 | 
						|
            codeQROptions: $this->qrCodeQROptionsFactory->getDefault()
 | 
						|
        );
 | 
						|
    }
 | 
						|
}
 |