diff --git a/assets/images/wip.png b/assets/images/wip.png new file mode 100644 index 0000000..b85a802 Binary files /dev/null and b/assets/images/wip.png differ diff --git a/assets/styles/app.css b/assets/styles/app.css index 84df33c..1c8e14f 100644 --- a/assets/styles/app.css +++ b/assets/styles/app.css @@ -5,3 +5,7 @@ body { .header { background-color: skyblue; } + +.header-another-code { + font-size: 2rem; +} diff --git a/config/services.yaml b/config/services.yaml index 96feaef..c2bc64f 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -27,8 +27,13 @@ services: arguments: $available_currencies: '%app.currencies%' + App\Service\StubQRCodeGenerator: + arguments: + $imagePath: '%kernel.project_dir%/assets/images/wip.png' + App\Service\CurrencyListerInterface: '@App\Service\StaticCurrencyLister' App\Service\QRCodeQROptionsProviderInterface: '@App\Service\QRCodeQROptionsDefaultProvider' + App\Service\QRCodeGeneratorInterface: '@App\Service\StubQRCodeGenerator' # add more service definitions when explicit configuration is needed # please note that last definitions always *replace* previous ones diff --git a/src/Controller/IndexController.php b/src/Controller/IndexController.php index f17cfd1..02ebf42 100644 --- a/src/Controller/IndexController.php +++ b/src/Controller/IndexController.php @@ -4,6 +4,7 @@ namespace App\Controller; use App\Entity\QRCode\QRCode; use App\Form\Type\QRCodeType; +use App\Service\QRCodeGeneratorInterface; use App\Service\QRCodeQROptionsProviderInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; @@ -11,14 +12,16 @@ use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class IndexController extends AbstractController { - + public function __construct(private readonly QRCodeQROptionsProviderInterface $qrCodeQROptionsFactory) {} #[Route('/', name: 'homepage')] - public function indexAction(Request $request, QRCodeQROptionsProviderInterface $qrCodeQROptionsFactory): Response + public function indexAction( + Request $request, + QRCodeGeneratorInterface $qrCodeGenerator, + ): Response { - $qrCode = new QRCode( - codeQROptions: $qrCodeQROptionsFactory->getDefault() - ); + $qrCodeImage = null; + $qrCode = $this->createQrCodeEntity(); $form = $this->createForm(QRCodeType::class, $qrCode); @@ -26,13 +29,24 @@ class IndexController extends AbstractController { $form->submit($request->request->all($form->getName())); if ($form->isSubmitted() && $form->isValid()) { - // TODO: call service to generate - print_r($qrCode); + /* 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($qrCode); + $form = $this->createForm(QRCodeType::class, $this->createQrCodeEntity()); } } return $this->render('index/homepage.html.twig', [ - 'form' => $form + 'form' => $form, + 'qrCodeImage' => $qrCodeImage ]); } + + private function createQrCodeEntity(): QRCode { + return new QRCode( + codeQROptions: $this->qrCodeQROptionsFactory->getDefault() + ); + } } diff --git a/src/Service/QRCodeGeneratorInterface.php b/src/Service/QRCodeGeneratorInterface.php new file mode 100644 index 0000000..eb4b761 --- /dev/null +++ b/src/Service/QRCodeGeneratorInterface.php @@ -0,0 +1,16 @@ +imagePath); + + return match ($content) { + false => throw new \InvalidArgumentException('Image path is invalid'), + default => base64_encode($content) + }; + } +} diff --git a/templates/index/homepage.html.twig b/templates/index/homepage.html.twig index 61ba01d..9909485 100644 --- a/templates/index/homepage.html.twig +++ b/templates/index/homepage.html.twig @@ -2,6 +2,12 @@ {% block body %}
+ {% if qrCodeImage %} +
+ QR code +
+

{{ "You can generate another QR code here" | trans }}:

+ {% endif %} {{ form_start(form) }}
{{ form_label(form.iban) }} diff --git a/translations/messages.cs.yaml b/translations/messages.cs.yaml index 7d51462..6bc48a6 100644 --- a/translations/messages.cs.yaml +++ b/translations/messages.cs.yaml @@ -8,3 +8,4 @@ Specific symbol: "Specifický symbol" Generate qr code: "Vygenerovat QR kód" Iban: "IBAN" QR code generator: "Generátor bankovních QR kódů" +You can generate another QR code here: "Další QR kód si můžete vygenerovat zde"