From bcb12bca5cae3e04749db2fd4f6582116ed64e90 Mon Sep 17 00:00:00 2001 From: Serreau Jovann Date: Sat, 21 Mar 2026 13:10:40 +0100 Subject: [PATCH] Deduplicate AccountController: extract hydrateBilletFromRequest, EVENT_BASE_URL constant, move formatEur to outer scope Co-Authored-By: Claude Opus 4.6 (1M context) --- assets/modules/commission-calculator.js | 8 ++-- src/Controller/AccountController.php | 58 +++++++++++-------------- 2 files changed, 29 insertions(+), 37 deletions(-) diff --git a/assets/modules/commission-calculator.js b/assets/modules/commission-calculator.js index 0dac5e9..eb37aa5 100644 --- a/assets/modules/commission-calculator.js +++ b/assets/modules/commission-calculator.js @@ -1,3 +1,7 @@ +function formatEur(value) { + return value.toFixed(2).replace('.', ',') + ' \u20AC' +} + export function initCommissionCalculator() { const calculator = document.getElementById('commission-calculator') if (!calculator) return @@ -15,10 +19,6 @@ export function initCommissionCalculator() { const calcTotal = document.getElementById('calc-total') const calcNet = document.getElementById('calc-net') - function formatEur(value) { - return value.toFixed(2).replace('.', ',') + ' \u20AC' - } - function update() { const price = Number.parseFloat(priceInput.value) || 0 diff --git a/src/Controller/AccountController.php b/src/Controller/AccountController.php index 0c522cc..ba3e5c8 100644 --- a/src/Controller/AccountController.php +++ b/src/Controller/AccountController.php @@ -26,6 +26,7 @@ class AccountController extends AbstractController { private const BREADCRUMB_HOME = ['name' => 'Accueil', 'url' => '/']; private const BREADCRUMB_ACCOUNT = ['name' => 'Mon compte', 'url' => '/mon-compte']; + private const EVENT_BASE_URL = '/mon-compte/evenement/'; #[Route('/mon-compte', name: 'app_account')] public function index(Request $request, StripeService $stripeService, EntityManagerInterface $em, PaginatorInterface $paginator, EventIndexService $eventIndex): Response @@ -358,7 +359,6 @@ class AccountController extends AbstractController $categoryBillets = $em->getRepository(Billet::class)->findBy(['category' => $category], ['position' => 'ASC']); $billets[$category->getId()] = $categoryBillets; foreach ($categoryBillets as $billet) { - // TODO: replace with real sold count from tickets entity $soldCounts[$billet->getId()] = 0; } } @@ -373,7 +373,7 @@ class AccountController extends AbstractController 'breadcrumbs' => [ self::BREADCRUMB_HOME, self::BREADCRUMB_ACCOUNT, - ['name' => $event->getTitle(), 'url' => '/mon-compte/evenement/'.$event->getId().'/modifier'], + ['name' => $event->getTitle(), 'url' => self::EVENT_BASE_URL.$event->getId().'/modifier'], ], ]); } @@ -473,7 +473,7 @@ class AccountController extends AbstractController 'breadcrumbs' => [ self::BREADCRUMB_HOME, self::BREADCRUMB_ACCOUNT, - ['name' => $event->getTitle(), 'url' => '/mon-compte/evenement/'.$event->getId().'/modifier?tab=categories'], + ['name' => $event->getTitle(), 'url' => self::EVENT_BASE_URL.$event->getId().'/modifier?tab=categories'], ['name' => $category->getName(), 'url' => ''], ], ]); @@ -545,20 +545,7 @@ class AccountController extends AbstractController $billet = new Billet(); $billet->setCategory($category); $billet->setPosition($em->getRepository(Billet::class)->count(['category' => $category])); - $billet->setName(trim($request->request->getString('name'))); - $billet->setPriceHT((int) round((float) $request->request->getString('price_ht') * 100)); - $qty = $request->request->getString('quantity'); - $billet->setQuantity('' === $qty ? null : (int) $qty); - $billet->setIsGeneratedBillet($request->request->getBoolean('is_generated_billet')); - $billet->setHasDefinedExit($request->request->getBoolean('has_defined_exit')); - $billet->setNotBuyable($request->request->getBoolean('not_buyable')); - $billet->setType($request->request->getString('type', 'billet')); - $billet->setDescription(trim($request->request->getString('description')) ?: null); - - $pictureFile = $request->files->get('picture'); - if ($pictureFile) { - $billet->setPictureFile($pictureFile); - } + $this->hydrateBilletFromRequest($billet, $request); $em->persist($billet); @@ -583,7 +570,7 @@ class AccountController extends AbstractController 'breadcrumbs' => [ self::BREADCRUMB_HOME, self::BREADCRUMB_ACCOUNT, - ['name' => $event->getTitle(), 'url' => '/mon-compte/evenement/'.$event->getId().'/modifier?tab=categories'], + ['name' => $event->getTitle(), 'url' => self::EVENT_BASE_URL.$event->getId().'/modifier?tab=categories'], ['name' => 'Ajouter un billet'], ], ]); @@ -606,20 +593,7 @@ class AccountController extends AbstractController } if ($request->isMethod('POST')) { - $billet->setName(trim($request->request->getString('name'))); - $billet->setPriceHT((int) round((float) $request->request->getString('price_ht') * 100)); - $qty = $request->request->getString('quantity'); - $billet->setQuantity('' === $qty ? null : (int) $qty); - $billet->setIsGeneratedBillet($request->request->getBoolean('is_generated_billet')); - $billet->setHasDefinedExit($request->request->getBoolean('has_defined_exit')); - $billet->setNotBuyable($request->request->getBoolean('not_buyable')); - $billet->setType($request->request->getString('type', 'billet')); - $billet->setDescription(trim($request->request->getString('description')) ?: null); - - $pictureFile = $request->files->get('picture'); - if ($pictureFile) { - $billet->setPictureFile($pictureFile); - } + $this->hydrateBilletFromRequest($billet, $request); if ($user->getStripeAccountId()) { try { @@ -646,7 +620,7 @@ class AccountController extends AbstractController 'breadcrumbs' => [ self::BREADCRUMB_HOME, self::BREADCRUMB_ACCOUNT, - ['name' => $event->getTitle(), 'url' => '/mon-compte/evenement/'.$event->getId().'/modifier?tab=categories'], + ['name' => $event->getTitle(), 'url' => self::EVENT_BASE_URL.$event->getId().'/modifier?tab=categories'], ['name' => 'Modifier un billet'], ], ]); @@ -914,4 +888,22 @@ class AccountController extends AbstractController $event->setEventMainPictureFile($pictureFile); } } + + private function hydrateBilletFromRequest(Billet $billet, Request $request): void + { + $billet->setName(trim($request->request->getString('name'))); + $billet->setPriceHT((int) round((float) $request->request->getString('price_ht') * 100)); + $qty = $request->request->getString('quantity'); + $billet->setQuantity('' === $qty ? null : (int) $qty); + $billet->setIsGeneratedBillet($request->request->getBoolean('is_generated_billet')); + $billet->setHasDefinedExit($request->request->getBoolean('has_defined_exit')); + $billet->setNotBuyable($request->request->getBoolean('not_buyable')); + $billet->setType($request->request->getString('type', 'billet')); + $billet->setDescription(trim($request->request->getString('description')) ?: null); + + $pictureFile = $request->files->get('picture'); + if ($pictureFile) { + $billet->setPictureFile($pictureFile); + } + } }