actually complete order
This commit is contained in:
parent
be64eb12aa
commit
443ebe5c0d
@ -3,7 +3,6 @@
|
|||||||
namespace App\Controller;
|
namespace App\Controller;
|
||||||
|
|
||||||
use App\DataObjects\TicketFormData;
|
use App\DataObjects\TicketFormData;
|
||||||
use App\Repository\PaymentRepository;
|
|
||||||
use App\Service\TicketService;
|
use App\Service\TicketService;
|
||||||
use Stripe\Stripe;
|
use Stripe\Stripe;
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
@ -17,7 +16,6 @@ final class TicketController extends AbstractController
|
|||||||
public function __construct(
|
public function __construct(
|
||||||
private TicketService $service,
|
private TicketService $service,
|
||||||
private SerializerInterface $serializer,
|
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)]
|
#[Route(path: '/success', name: 'app_success', methods: Request::METHOD_GET)]
|
||||||
public function success(Request $request): Response
|
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');
|
return $this->render('ticket/success.html.twig');
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ use App\Entity\Customer;
|
|||||||
use App\Entity\Payment;
|
use App\Entity\Payment;
|
||||||
use App\Entity\Ticket;
|
use App\Entity\Ticket;
|
||||||
use App\Enum\TicketData as TicketEnum;
|
use App\Enum\TicketData as TicketEnum;
|
||||||
use Cassandra\Custom;
|
use App\Repository\PaymentRepository;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Stripe\Checkout\Session;
|
use Stripe\Checkout\Session;
|
||||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||||
@ -18,6 +18,7 @@ class TicketService
|
|||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly UrlGeneratorInterface $generator,
|
private readonly UrlGeneratorInterface $generator,
|
||||||
private readonly EntityManagerInterface $em,
|
private readonly EntityManagerInterface $em,
|
||||||
|
private readonly PaymentRepository $paymentRepository,
|
||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,4 +109,18 @@ class TicketService
|
|||||||
|
|
||||||
return $entities;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,11 +1,9 @@
|
|||||||
<div class="bg-white/80 backdrop-blur-sm rounded-2xl border border-gray-100 p-5 hover:shadow-lg transition-all duration-300 group">
|
<div class="bg-white/80 backdrop-blur-sm rounded-2xl border border-gray-100 p-5 hover:shadow-lg transition-all duration-300 group">
|
||||||
<div class="grid grid-cols-12 gap-5">
|
<div class="grid grid-cols-12 gap-5">
|
||||||
<div class="relative col-span-5">
|
<div class="relative col-span-5">
|
||||||
<label for="ticket" class="block text-sm font-medium text-gray-700 mb-1 ml-1">Ticket Kategorie</label>
|
|
||||||
<div class="relative group">
|
<div class="relative group">
|
||||||
<twig:ux:icon name="mingcute:ticket-fill" class="absolute left-3.5 top-1/2 -translate-y-1/2 w-5 h-5 text-orange-400 pointer-events-none transition-colors group-hover:text-orange-500" />
|
<twig:ux:icon name="mingcute:ticket-fill" class="absolute left-3.5 top-1/2 -translate-y-1/2 w-5 h-5 text-orange-400 pointer-events-none transition-colors group-hover:text-orange-500" />
|
||||||
<select name="ticket"
|
<select name="ticket"
|
||||||
id="ticket"
|
|
||||||
required
|
required
|
||||||
data-form-target="ticketType"
|
data-form-target="ticketType"
|
||||||
class="w-full pl-11 pr-10 py-3.5 rounded-xl appearance-none bg-white border border-gray-200 text-gray-800 font-medium text-[15px] focus:border-orange-500 focus:ring-2 focus:ring-orange-200 transition-all hover:border-orange-300">
|
class="w-full pl-11 pr-10 py-3.5 rounded-xl appearance-none bg-white border border-gray-200 text-gray-800 font-medium text-[15px] focus:border-orange-500 focus:ring-2 focus:ring-orange-200 transition-all hover:border-orange-300">
|
||||||
@ -22,11 +20,9 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="relative col-span-4">
|
<div class="relative col-span-4">
|
||||||
<label for="food" class="block text-sm font-medium text-gray-700 mb-1 ml-1">Menü-Auswahl</label>
|
|
||||||
<div class="relative group">
|
<div class="relative group">
|
||||||
<twig:ux:icon name="mdi:food" class="absolute left-3.5 top-1/2 -translate-y-1/2 w-5 h-5 text-orange-400 pointer-events-none transition-colors group-hover:text-orange-500" />
|
<twig:ux:icon name="mdi:food" class="absolute left-3.5 top-1/2 -translate-y-1/2 w-5 h-5 text-orange-400 pointer-events-none transition-colors group-hover:text-orange-500" />
|
||||||
<select name="food"
|
<select name="food"
|
||||||
id="food"
|
|
||||||
required
|
required
|
||||||
data-form-target="foodType"
|
data-form-target="foodType"
|
||||||
class="w-full pl-11 pr-10 py-3.5 rounded-xl appearance-none bg-white border border-gray-200 text-gray-800 font-medium text-[15px] focus:border-orange-500 focus:ring-2 focus:ring-orange-200 transition-all hover:border-orange-300">
|
class="w-full pl-11 pr-10 py-3.5 rounded-xl appearance-none bg-white border border-gray-200 text-gray-800 font-medium text-[15px] focus:border-orange-500 focus:ring-2 focus:ring-orange-200 transition-all hover:border-orange-300">
|
||||||
@ -42,11 +38,9 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="relative col-span-2">
|
<div class="relative col-span-2">
|
||||||
<label for="note" class="block text-sm font-medium text-gray-700 mb-1 ml-1">Anmerkungen</label>
|
|
||||||
<div class="relative group">
|
<div class="relative group">
|
||||||
<twig:ux:icon name="mdi:note" class="absolute left-3.5 top-1/2 -translate-y-1/2 w-5 h-5 text-orange-400 pointer-events-none transition-colors group-hover:text-orange-500" />
|
<twig:ux:icon name="mdi:note" class="absolute left-3.5 top-1/2 -translate-y-1/2 w-5 h-5 text-orange-400 pointer-events-none transition-colors group-hover:text-orange-500" />
|
||||||
<input type="text"
|
<input type="text"
|
||||||
id="note"
|
|
||||||
placeholder="Optional"
|
placeholder="Optional"
|
||||||
name="note"
|
name="note"
|
||||||
data-form-target="note"
|
data-form-target="note"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user