67 lines
2.1 KiB
PHP
67 lines
2.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Controller\Voucher;
|
|
|
|
use App\Entity\User;
|
|
use App\Form\VoucherPurchaseStep2Type;
|
|
use App\Service\ParticipantDataPrefiller;
|
|
use App\Service\VoucherPurchaseSessionManager;
|
|
use App\Service\VoucherThumbnailResolver;
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
use Symfony\Component\Routing\Attribute\Route;
|
|
|
|
/**
|
|
* Step 2: the buyer (rechnungsempfänger), prefilled for signed-in accounts. Payment is fixed to
|
|
* transfer.
|
|
*/
|
|
class Step2Controller extends AbstractVoucherPurchaseController
|
|
{
|
|
public function __construct(
|
|
VoucherPurchaseSessionManager $sessionManager,
|
|
VoucherThumbnailResolver $thumbnailResolver,
|
|
private readonly ParticipantDataPrefiller $personalDataPrefiller,
|
|
) {
|
|
parent::__construct($sessionManager, $thumbnailResolver);
|
|
}
|
|
|
|
#[Route('/gutschein/kaeufer', name: 'app_voucher_step_2')]
|
|
public function index(Request $request): Response
|
|
{
|
|
$dto = $this->sessionManager->find($request);
|
|
if (null === $dto) {
|
|
return $this->createSessionExpiredResponse($request);
|
|
}
|
|
|
|
if (null !== $redirect = $this->validateStepAccess($dto, 2)) {
|
|
return $redirect;
|
|
}
|
|
|
|
$user = $this->getUser();
|
|
if ($user instanceof User && false === $dto->hasBuyerData()) {
|
|
$personalData = $this->personalDataPrefiller->fetchPersonalData($user);
|
|
if (null !== $personalData) {
|
|
$dto->prefillBuyer($personalData, $user->getEmail());
|
|
$this->sessionManager->save($request, $dto);
|
|
}
|
|
}
|
|
|
|
$form = $this->createForm(VoucherPurchaseStep2Type::class, $dto);
|
|
$form->handleRequest($request);
|
|
|
|
if (true === $form->isSubmitted() && true === $form->isValid()) {
|
|
$dto->currentStep = 3;
|
|
$this->sessionManager->save($request, $dto);
|
|
|
|
return $this->redirectToRoute('app_voucher_step_3');
|
|
}
|
|
|
|
return $this->render('voucher/step_2.html.twig', [
|
|
...$this->createStepContext($dto),
|
|
'form' => $form,
|
|
]);
|
|
}
|
|
}
|