From cb13f988cdae23c3aca7b278bf828dbbad303eba Mon Sep 17 00:00:00 2001 From: Serreau Jovann Date: Sat, 31 Jan 2026 15:36:53 +0100 Subject: [PATCH] =?UTF-8?q?```=20=E2=9C=A8=20feat(ReserverController):=20A?= =?UTF-8?q?joute=20route=20de=20confirmation=20de=20r=C3=A9servation.=20?= =?UTF-8?q?=E2=9C=A8=20feat(FeedController):=20Cr=C3=A9e=20un=20contr?= =?UTF-8?q?=C3=B4leur=20pour=20les=20flux=20RSS.=20=E2=9C=A8=20feat(templa?= =?UTF-8?q?tes):=20Ajoute=20un=20template=20pour=20les=20flux=20RSS.=20?= =?UTF-8?q?=E2=9C=A8=20feat(templates):=20Ajoute=20des=20liens=20RSS=20dan?= =?UTF-8?q?s=20la=20base=20du=20template.=20```?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Controller/FeedController.php | 41 ++++++++++++++++++++++++ src/Controller/ReserverController.php | 17 +++++++++- templates/feed/rss.xml.twig | 45 +++++++++++++++++++++++++++ templates/revervation/base.twig | 4 +++ 4 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 src/Controller/FeedController.php create mode 100644 templates/feed/rss.xml.twig diff --git a/src/Controller/FeedController.php b/src/Controller/FeedController.php new file mode 100644 index 0000000..d3897b6 --- /dev/null +++ b/src/Controller/FeedController.php @@ -0,0 +1,41 @@ + 'all'])] + public function rss( + string $channel, + ProductRepository $productRepo, + FormulesRepository $formuleRepo + ): Response { + $items = []; + + if ($channel === 'all' || $channel === 'products') { + $items = array_merge($items, $productRepo->findBy([], ['updatedAt' => 'DESC'], 20)); + } + + if ($channel === 'all' || $channel === 'formules') { + $items = array_merge($items, $formuleRepo->findBy(['isPublish' => true], ['updatedAt' => 'DESC'], 20)); + } + + // Sort everything by date descending + usort($items, fn($a, $b) => $b->getUpdatedAt() <=> $a->getUpdatedAt()); + + return $this->render('feed/rss.xml.twig', [ + 'items' => $items, + 'current_channel' => $channel + ], new Response('', 200, ['Content-Type' => 'application/xml'])); + } +} diff --git a/src/Controller/ReserverController.php b/src/Controller/ReserverController.php index e456b57..7204832 100644 --- a/src/Controller/ReserverController.php +++ b/src/Controller/ReserverController.php @@ -232,6 +232,21 @@ class ReserverController extends AbstractController ]); } + #[Route('/flow/{sessionId}/confirmed', name: 'reservation_flow_confirmed', methods: ['GET', 'POST'])] + public function flowConfirmed( + string $sessionId, + AuthenticationUtils $authenticationUtils, + OrderSessionRepository $repository, + ProductRepository $productRepository, + UploaderHelper $uploaderHelper + ): Response { + $session = $repository->findOneBy(['uuid' => $sessionId]); + if (!$session) { + return $this->render('revervation/session_lost.twig'); + } + + } + #[Route('/flow/{sessionId}', name: 'reservation_flow', methods: ['GET', 'POST'])] public function flowLogin( string $sessionId, @@ -349,7 +364,7 @@ class ReserverController extends AbstractController $em->flush(); - return $this->redirectToRoute('reservation_flow', ['sessionId' => $sessionId]); + return $this->redirectToRoute('reservation_flow_confirmed', ['sessionId' => $sessionId]); } #[Route('/umami', name: 'reservation_umami', methods: ['POST'])] diff --git a/templates/feed/rss.xml.twig b/templates/feed/rss.xml.twig new file mode 100644 index 0000000..e2225b4 --- /dev/null +++ b/templates/feed/rss.xml.twig @@ -0,0 +1,45 @@ +{# templates/feed/rss.xml.twig #} + + + + + LudikEvent - + {% if current_channel == 'products' %}Nos Produits + {% elseif current_channel == 'formules' %}Nos Formules + {% else %}Tout le catalogue{% endif %} + + Découvrez les nouveautés de réservation LudikEvent. + {{ url('app_crm_reservation') }} + fr-fr + {{ "now"|date('r') }} + + + {% for item in items %} + + {# Détection du type d'objet pour adapter le lien #} + {# Si l'objet a un champ 'slug' et n'est pas une 'Formule', c'est un Produit #} + + {{ item.name|e('html') }} + + {% if item.isPublish is not defined %} + {{ url('reservation_product_show', {id: item.slug}) }} + {{ url('reservation_product_show', {id: item.slug}) }} + Produit + {% else %} + {{ url('reservation_formule_show', {slug: item.slug}) }} + {{ url('reservation_formule_show', {slug: item.slug}) }} + Formule + {% endif %} + + + {{ item.updatedAt|date('r') }} + + {% set image_url = item.imageName + ? absolute_url(vich_uploader_asset(item, 'imageFile')|imagine_filter('webp')) + : absolute_url(asset('provider/images/favicon.webp')) + %} + + + {% endfor %} + + diff --git a/templates/revervation/base.twig b/templates/revervation/base.twig index 846f808..f0dcc1e 100644 --- a/templates/revervation/base.twig +++ b/templates/revervation/base.twig @@ -39,6 +39,10 @@ {{ vite_asset('reserve.js',{}) }} {% block stylesheets %}{% endblock %} + + + +