Reduce cognitive complexity: extract computeEventStats from editEvent

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Serreau Jovann
2026-03-21 22:36:57 +01:00
parent 06dcc95a32
commit 233f3d5067

View File

@@ -390,24 +390,8 @@ class AccountController extends AbstractController
: $em->getRepository(BilletBuyer::class)->findBy(['event' => $event], ['createdAt' => 'DESC']);
$eventOrders = $paginator->paginate($ordersQuery, $request->query->getInt('page', 1), 20);
$eventTotalHT = 0;
$eventTotalSold = 0;
$billetStats = [];
$paidEventOrders = $em->getRepository(BilletBuyer::class)->findBy(['event' => $event, 'status' => BilletBuyer::STATUS_PAID]);
foreach ($paidEventOrders as $paidOrder) {
$eventTotalHT += $paidOrder->getTotalHT();
foreach ($paidOrder->getItems() as $item) {
$eventTotalSold += $item->getQuantity();
$billetId = $item->getBillet()?->getId();
if ($billetId) {
if (!isset($billetStats[$billetId])) {
$billetStats[$billetId] = ['name' => $item->getBilletName(), 'sold' => 0, 'revenue' => 0];
}
$billetStats[$billetId]['sold'] += $item->getQuantity();
$billetStats[$billetId]['revenue'] += $item->getLineTotalHT();
}
}
}
$eventStats = $this->computeEventStats($paidEventOrders);
return $this->render('account/edit_event.html.twig', [
'event' => $event,
@@ -418,10 +402,10 @@ class AccountController extends AbstractController
'billet_design' => $em->getRepository(BilletDesign::class)->findOneBy(['event' => $event]),
'event_orders' => $eventOrders,
'invitations' => $em->getRepository(BilletBuyer::class)->findBy(['event' => $event, 'isInvitation' => true], ['createdAt' => 'DESC']),
'event_total_ht' => $eventTotalHT / 100,
'event_total_sold' => $eventTotalSold,
'event_total_ht' => $eventStats['totalHT'] / 100,
'event_total_sold' => $eventStats['totalSold'],
'event_total_orders' => \count($paidEventOrders),
'billet_stats' => $billetStats,
'billet_stats' => $eventStats['billetStats'],
'search_query' => $searchQuery,
'breadcrumbs' => [
self::BREADCRUMB_HOME,
@@ -1104,6 +1088,36 @@ class AccountController extends AbstractController
}
}
/**
* @param list<BilletBuyer> $paidOrders
*
* @return array{totalHT: int, totalSold: int, billetStats: array<int, array{name: string, sold: int, revenue: int}>}
*/
private function computeEventStats(array $paidOrders): array
{
$totalHT = 0;
$totalSold = 0;
$billetStats = [];
foreach ($paidOrders as $order) {
$totalHT += $order->getTotalHT();
foreach ($order->getItems() as $item) {
$totalSold += $item->getQuantity();
$billetId = $item->getBillet()?->getId();
if (!$billetId) {
continue;
}
if (!isset($billetStats[$billetId])) {
$billetStats[$billetId] = ['name' => $item->getBilletName(), 'sold' => 0, 'revenue' => 0];
}
$billetStats[$billetId]['sold'] += $item->getQuantity();
$billetStats[$billetId]['revenue'] += $item->getLineTotalHT();
}
}
return ['totalHT' => $totalHT, 'totalSold' => $totalSold, 'billetStats' => $billetStats];
}
private function hydrateEventFromRequest(Event $event, Request $request): void
{
$event->setTitle(trim($request->request->getString('title')));