Deduplicate AccountController: extract hydrateBilletFromRequest, EVENT_BASE_URL constant, move formatEur to outer scope

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Serreau Jovann
2026-03-21 13:10:40 +01:00
parent ca9af3e020
commit bcb12bca5c
2 changed files with 29 additions and 37 deletions

View File

@@ -1,3 +1,7 @@
function formatEur(value) {
return value.toFixed(2).replace('.', ',') + ' \u20AC'
}
export function initCommissionCalculator() { export function initCommissionCalculator() {
const calculator = document.getElementById('commission-calculator') const calculator = document.getElementById('commission-calculator')
if (!calculator) return if (!calculator) return
@@ -15,10 +19,6 @@ export function initCommissionCalculator() {
const calcTotal = document.getElementById('calc-total') const calcTotal = document.getElementById('calc-total')
const calcNet = document.getElementById('calc-net') const calcNet = document.getElementById('calc-net')
function formatEur(value) {
return value.toFixed(2).replace('.', ',') + ' \u20AC'
}
function update() { function update() {
const price = Number.parseFloat(priceInput.value) || 0 const price = Number.parseFloat(priceInput.value) || 0

View File

@@ -26,6 +26,7 @@ class AccountController extends AbstractController
{ {
private const BREADCRUMB_HOME = ['name' => 'Accueil', 'url' => '/']; private const BREADCRUMB_HOME = ['name' => 'Accueil', 'url' => '/'];
private const BREADCRUMB_ACCOUNT = ['name' => 'Mon compte', 'url' => '/mon-compte']; private const BREADCRUMB_ACCOUNT = ['name' => 'Mon compte', 'url' => '/mon-compte'];
private const EVENT_BASE_URL = '/mon-compte/evenement/';
#[Route('/mon-compte', name: 'app_account')] #[Route('/mon-compte', name: 'app_account')]
public function index(Request $request, StripeService $stripeService, EntityManagerInterface $em, PaginatorInterface $paginator, EventIndexService $eventIndex): Response 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']); $categoryBillets = $em->getRepository(Billet::class)->findBy(['category' => $category], ['position' => 'ASC']);
$billets[$category->getId()] = $categoryBillets; $billets[$category->getId()] = $categoryBillets;
foreach ($categoryBillets as $billet) { foreach ($categoryBillets as $billet) {
// TODO: replace with real sold count from tickets entity
$soldCounts[$billet->getId()] = 0; $soldCounts[$billet->getId()] = 0;
} }
} }
@@ -373,7 +373,7 @@ class AccountController extends AbstractController
'breadcrumbs' => [ 'breadcrumbs' => [
self::BREADCRUMB_HOME, self::BREADCRUMB_HOME,
self::BREADCRUMB_ACCOUNT, 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' => [ 'breadcrumbs' => [
self::BREADCRUMB_HOME, self::BREADCRUMB_HOME,
self::BREADCRUMB_ACCOUNT, 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' => ''], ['name' => $category->getName(), 'url' => ''],
], ],
]); ]);
@@ -545,20 +545,7 @@ class AccountController extends AbstractController
$billet = new Billet(); $billet = new Billet();
$billet->setCategory($category); $billet->setCategory($category);
$billet->setPosition($em->getRepository(Billet::class)->count(['category' => $category])); $billet->setPosition($em->getRepository(Billet::class)->count(['category' => $category]));
$billet->setName(trim($request->request->getString('name'))); $this->hydrateBilletFromRequest($billet, $request);
$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);
}
$em->persist($billet); $em->persist($billet);
@@ -583,7 +570,7 @@ class AccountController extends AbstractController
'breadcrumbs' => [ 'breadcrumbs' => [
self::BREADCRUMB_HOME, self::BREADCRUMB_HOME,
self::BREADCRUMB_ACCOUNT, 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'], ['name' => 'Ajouter un billet'],
], ],
]); ]);
@@ -606,20 +593,7 @@ class AccountController extends AbstractController
} }
if ($request->isMethod('POST')) { if ($request->isMethod('POST')) {
$billet->setName(trim($request->request->getString('name'))); $this->hydrateBilletFromRequest($billet, $request);
$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);
}
if ($user->getStripeAccountId()) { if ($user->getStripeAccountId()) {
try { try {
@@ -646,7 +620,7 @@ class AccountController extends AbstractController
'breadcrumbs' => [ 'breadcrumbs' => [
self::BREADCRUMB_HOME, self::BREADCRUMB_HOME,
self::BREADCRUMB_ACCOUNT, 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'], ['name' => 'Modifier un billet'],
], ],
]); ]);
@@ -914,4 +888,22 @@ class AccountController extends AbstractController
$event->setEventMainPictureFile($pictureFile); $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);
}
}
} }