diff --git a/src/Controller/TicketController.php b/src/Controller/TicketController.php index d426959..97cc400 100644 --- a/src/Controller/TicketController.php +++ b/src/Controller/TicketController.php @@ -3,7 +3,6 @@ namespace App\Controller; use App\DataObjects\TicketFormData; -use App\Repository\PaymentRepository; use App\Service\TicketService; use Stripe\Stripe; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; @@ -17,7 +16,6 @@ final class TicketController extends AbstractController public function __construct( private TicketService $service, private SerializerInterface $serializer, - private PaymentRepository $repository, ) { } @@ -40,7 +38,19 @@ final class TicketController extends AbstractController #[Route(path: '/success', name: 'app_success', methods: Request::METHOD_GET)] public function success(Request $request): Response { - $payment = $this->repository->findOneBy(['sessionId' => $request->query->get('session_id')]); + $sessionId = $request->query->get('session_id'); + + if (!$sessionId) { + noty()->error('Etwas ist schiefgelaufen'); + + return $this->redirectToRoute('app_ticket'); + } + + if (!$this->service->completePayment($sessionId)) { + noty()->error('Etwas ist schiefgelaufen'); + + return $this->redirectToRoute('app_ticket'); + } return $this->render('ticket/success.html.twig'); } diff --git a/src/Service/TicketService.php b/src/Service/TicketService.php index c02b0aa..8ce0e2e 100644 --- a/src/Service/TicketService.php +++ b/src/Service/TicketService.php @@ -8,7 +8,7 @@ use App\Entity\Customer; use App\Entity\Payment; use App\Entity\Ticket; use App\Enum\TicketData as TicketEnum; -use Cassandra\Custom; +use App\Repository\PaymentRepository; use Doctrine\ORM\EntityManagerInterface; use Stripe\Checkout\Session; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; @@ -18,6 +18,7 @@ class TicketService public function __construct( private readonly UrlGeneratorInterface $generator, private readonly EntityManagerInterface $em, + private readonly PaymentRepository $paymentRepository, ) { } @@ -108,4 +109,18 @@ class TicketService return $entities; } + + public function completePayment(string $sessionId): bool + { + $payment = $this->paymentRepository->findOneBy(['sessionId' => $sessionId]); + if (!$payment) { + return false; + } + + $payment->setCompleted(true); + + $this->em->flush(); + + return true; + } } \ No newline at end of file diff --git a/templates/ticket/_partials/_form.html.twig b/templates/ticket/_partials/_form.html.twig index 50dd28f..7efd613 100644 --- a/templates/ticket/_partials/_form.html.twig +++ b/templates/ticket/_partials/_form.html.twig @@ -1,11 +1,9 @@
-
@@ -42,12 +38,10 @@
-