feat: voucher purchase flow
This commit is contained in:
1 parent
a628e96d06
commit
f3dd122678
70 files changed
+3672
-122
No files matched your search
@@ -0,0 +1,66 @@
|
||||
<?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,
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user