From 1393e2d53f928b06470eb2b3eea7bb9aab012462 Mon Sep 17 00:00:00 2001 From: Alexey Skobkin Date: Sat, 1 Apr 2023 21:00:16 +0300 Subject: [PATCH] Ported UserController. Fixed PhpDoc type hinting in SubscriptionEventRepository and UserRepository. --- .../Controller/UserController.php | 36 ++++++++----------- .../SubscriptionEventRepository.php | 5 +-- src/Repository/UserRepository.php | 7 ++-- 3 files changed, 21 insertions(+), 27 deletions(-) rename {old/src/PointToolsBundle => src}/Controller/UserController.php (80%) diff --git a/old/src/PointToolsBundle/Controller/UserController.php b/src/Controller/UserController.php similarity index 80% rename from old/src/PointToolsBundle/Controller/UserController.php rename to src/Controller/UserController.php index 6baa2e1..c46d4d5 100644 --- a/old/src/PointToolsBundle/Controller/UserController.php +++ b/src/Controller/UserController.php @@ -1,32 +1,24 @@ translator = $translator; + public function __construct( + private readonly TranslatorInterface $translator, + ) { } - /** - * @param string $login - */ public function showAction( Request $request, string $login, @@ -68,16 +60,16 @@ class UserController extends AbstractController } /** - * @todo move to the service + * @param DailyEventsDTO[] $eventsByDay + *@todo move to the service * - * @param DailyEvents[] $eventsByDay */ private function createEventsDynamicChart(array $eventsByDay = []): Highchart { $data = []; foreach ($eventsByDay as $dailyEvents) { - $data[$dailyEvents->getDate()->format('d.m')] = $dailyEvents->getEventsCount(); + $data[$dailyEvents->date->format('d.m')] = $dailyEvents->eventsCount; } return $this->createChart('eventschart', 'line', $data, 'Events by day', 'amount'); @@ -93,7 +85,7 @@ class UserController extends AbstractController $data = []; foreach ($topUsers as $topUser) { - $data[$topUser->getLogin()] = $topUser->getSubscribersCount(); + $data[$topUser->login] = $topUser->subscribersCount; } return $this->createChart('topchart', 'bar', $data, 'Top users', 'amount'); diff --git a/src/Repository/SubscriptionEventRepository.php b/src/Repository/SubscriptionEventRepository.php index 021e247..84fc711 100644 --- a/src/Repository/SubscriptionEventRepository.php +++ b/src/Repository/SubscriptionEventRepository.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Repository; +use App\DTO\DailyEventsDTO; use App\Entity\SubscriptionEvent; use App\Entity\User; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; @@ -101,14 +102,14 @@ class SubscriptionEventRepository extends ServiceEntityRepository return $qb->getQuery()->getResult(); } - /** @return SubscriptionEvent[] */ + /** @return DailyEventsDTO[] */ public function getLastEventsByDay(int $days = 30): array { $qb = $this->createQueryBuilder('se'); $rows = $qb ->select([ - 'NEW Skobkin\Bundle\PointToolsBundle\DTO\DailyEvents(DAY(se.date), COUNT(se))', + 'NEW App\DTO\DailyEventsDTO(DAY(se.date), COUNT(se))', 'DAY(se.date) as day', ]) ->groupBy('day') diff --git a/src/Repository/UserRepository.php b/src/Repository/UserRepository.php index 24c69e5..a0d5007 100644 --- a/src/Repository/UserRepository.php +++ b/src/Repository/UserRepository.php @@ -1,9 +1,10 @@ getEntityManager()->getRepository('SkobkinPointToolsBundle:Subscription')->createQueryBuilder('s'); + $qb = $this->getEntityManager()->getRepository(Subscription::class)->createQueryBuilder('s'); $rows = $qb ->select([ - 'NEW Skobkin\Bundle\PointToolsBundle\DTO\TopUserDTO(a.login, COUNT(s.subscriber))', + 'NEW App\DTO\TopUserDTO(a.login, COUNT(s.subscriber))', 'COUNT(s.subscriber) as subscribers_count' ]) ->innerJoin('s.author', 'a')