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()
|
|
);
|
|
}
|
|
}
|