Reduce cognitive complexity: extract computeEventStats from editEvent
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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')));
|
||||
|
||||
Reference in New Issue
Block a user