Reduce returns in create(), add REF_PATTERN constant, title tag, table headers
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -19,6 +19,8 @@ use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||
|
||||
class OrderController extends AbstractController
|
||||
{
|
||||
private const REF_PATTERN = self::REF_PATTERN;
|
||||
|
||||
#[Route('/evenement/{id}/commander', name: 'app_order_create', requirements: ['id' => '\d+'], methods: ['POST'])]
|
||||
public function create(int $id, Request $request, EntityManagerInterface $em): Response
|
||||
{
|
||||
@@ -28,21 +30,24 @@ class OrderController extends AbstractController
|
||||
}
|
||||
|
||||
$cart = json_decode($request->getContent(), true);
|
||||
$eventUrl = $this->generateUrl('app_event_detail', [
|
||||
'orgaSlug' => $event->getAccount()->getSlug(),
|
||||
'id' => $event->getId(),
|
||||
'eventSlug' => $event->getSlug(),
|
||||
]);
|
||||
|
||||
if (!\is_array($cart) || 0 === \count($cart)) {
|
||||
$this->addFlash('error', 'Votre panier est vide.');
|
||||
|
||||
return $this->json(['redirect' => $this->generateUrl('app_event_detail', [
|
||||
'orgaSlug' => $event->getAccount()->getSlug(),
|
||||
'id' => $event->getId(),
|
||||
'eventSlug' => $event->getSlug(),
|
||||
])]);
|
||||
return $this->json(['redirect' => $eventUrl]);
|
||||
}
|
||||
|
||||
/** @var User|null $user */
|
||||
$user = $this->getUser();
|
||||
|
||||
$order = new BilletBuyer();
|
||||
$order->setEvent($event);
|
||||
|
||||
/** @var User|null $user */
|
||||
$user = $this->getUser();
|
||||
if ($user) {
|
||||
$order->setUser($user);
|
||||
$order->setFirstName($user->getFirstName());
|
||||
@@ -50,25 +55,20 @@ class OrderController extends AbstractController
|
||||
$order->setEmail($user->getEmail());
|
||||
}
|
||||
|
||||
$totalHT = $this->buildOrderItems($order, $cart, $event, $em);
|
||||
$order->setTotalHT($this->buildOrderItems($order, $cart, $event, $em));
|
||||
|
||||
if ($order->getItems()->isEmpty()) {
|
||||
return $this->json(['redirect' => $this->generateUrl('app_event_detail', [
|
||||
'orgaSlug' => $event->getAccount()->getSlug(),
|
||||
'id' => $event->getId(),
|
||||
'eventSlug' => $event->getSlug(),
|
||||
])]);
|
||||
return $this->json(['redirect' => $eventUrl]);
|
||||
}
|
||||
|
||||
$order->setTotalHT($totalHT);
|
||||
$em->persist($order);
|
||||
$em->flush();
|
||||
|
||||
if ($user) {
|
||||
return $this->json(['redirect' => $this->generateUrl('app_order_payment', ['id' => $order->getId()])]);
|
||||
}
|
||||
$redirect = $user
|
||||
? $this->generateUrl('app_order_payment', ['id' => $order->getId()])
|
||||
: $this->generateUrl('app_order_guest', ['id' => $order->getId()]);
|
||||
|
||||
return $this->json(['redirect' => $this->generateUrl('app_order_guest', ['id' => $order->getId()])]);
|
||||
return $this->json(['redirect' => $redirect]);
|
||||
}
|
||||
|
||||
#[Route('/commande/{id}/informations', name: 'app_order_guest', requirements: ['id' => '\d+'], methods: ['GET', 'POST'])]
|
||||
@@ -217,7 +217,7 @@ class OrderController extends AbstractController
|
||||
]);
|
||||
}
|
||||
|
||||
#[Route('/ma-commande/{reference}', name: 'app_order_public', requirements: ['reference' => 'ETICKET-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}'], methods: ['GET'])]
|
||||
#[Route('/ma-commande/{reference}', name: 'app_order_public', requirements: ['reference' => self::REF_PATTERN], methods: ['GET'])]
|
||||
public function publicOrder(string $reference, EntityManagerInterface $em): Response
|
||||
{
|
||||
$order = $em->getRepository(BilletBuyer::class)->findOneBy(['reference' => $reference]);
|
||||
@@ -237,7 +237,7 @@ class OrderController extends AbstractController
|
||||
]);
|
||||
}
|
||||
|
||||
#[Route('/ma-commande/{reference}/billet/{ticketReference}', name: 'app_order_download_ticket', requirements: ['reference' => 'ETICKET-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}', 'ticketReference' => 'ETICKET-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}'], methods: ['GET'])]
|
||||
#[Route('/ma-commande/{reference}/billet/{ticketReference}', name: 'app_order_download_ticket', requirements: ['reference' => self::REF_PATTERN, 'ticketReference' => self::REF_PATTERN], methods: ['GET'])]
|
||||
public function downloadTicket(string $reference, string $ticketReference, EntityManagerInterface $em, BilletOrderService $billetOrderService): Response
|
||||
{
|
||||
$order = $em->getRepository(BilletBuyer::class)->findOneBy(['reference' => $reference]);
|
||||
|
||||
@@ -36,12 +36,20 @@
|
||||
<p style="font-size: 13px; font-weight: 700; color: #6b7280;">Vos billets sont en piece jointe de cet email. Chaque billet contient un QR code unique a presenter a l'entree.</p>
|
||||
|
||||
<table style="width: 100%; border-collapse: collapse; margin: 16px 0;">
|
||||
{% for ticket in tickets %}
|
||||
<tr style="border-bottom: 1px solid #e5e7eb;">
|
||||
<td style="padding: 6px 0; font-size: 12px; font-weight: 700;">{{ ticket.billetName }}</td>
|
||||
<td style="padding: 6px 0; font-size: 11px; font-family: monospace; color: #6b7280;">{{ ticket.reference }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<thead>
|
||||
<tr style="background: #f3f4f6;">
|
||||
<th style="padding: 6px 0; text-align: left; font-size: 11px; font-weight: 900; text-transform: uppercase;">Billet</th>
|
||||
<th style="padding: 6px 0; text-align: right; font-size: 11px; font-weight: 900; text-transform: uppercase;">Reference</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for ticket in tickets %}
|
||||
<tr style="border-bottom: 1px solid #e5e7eb;">
|
||||
<td style="padding: 6px 0; font-size: 12px; font-weight: 700;">{{ ticket.billetName }}</td>
|
||||
<td style="padding: 6px 0; font-size: 11px; font-family: monospace; color: #6b7280; text-align: right;">{{ ticket.reference }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endif %}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>{{ ticket.reference }} - {{ event.title }}</title>
|
||||
<style>
|
||||
{% set ac = design ? design.accentColor : '#4f46e5' %}
|
||||
{% set inv_color = design ? design.invitationColor : '#d4a017' %}
|
||||
|
||||
Reference in New Issue
Block a user