From ac297dc0a2c56fca76737590763900de68729af3 Mon Sep 17 00:00:00 2001 From: Alexey Skobkin Date: Tue, 23 Jun 2015 13:41:29 +0300 Subject: [PATCH] Moar refactoring. --- .../Controller/UserController.php | 2 +- .../Entity/SubscriptionRepository.php | 17 --------------- .../Entity/UserRepository.php | 21 +++++++++++++++++++ 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/src/Skobkin/Bundle/PointToolsBundle/Controller/UserController.php b/src/Skobkin/Bundle/PointToolsBundle/Controller/UserController.php index 22d2e12..8f442e3 100644 --- a/src/Skobkin/Bundle/PointToolsBundle/Controller/UserController.php +++ b/src/Skobkin/Bundle/PointToolsBundle/Controller/UserController.php @@ -38,7 +38,7 @@ class UserController extends Controller public function topAction() { return $this->render('@SkobkinPointTools/User/top.html.twig', [ - 'top_users' => $this->getDoctrine()->getManager()->getRepository('SkobkinPointToolsBundle:Subscription')->getTopUsers(), + 'top_users' => $this->getDoctrine()->getManager()->getRepository('SkobkinPointToolsBundle:User')->getTopUsers(), ]); } diff --git a/src/Skobkin/Bundle/PointToolsBundle/Entity/SubscriptionRepository.php b/src/Skobkin/Bundle/PointToolsBundle/Entity/SubscriptionRepository.php index 1dcd55f..3bc7064 100644 --- a/src/Skobkin/Bundle/PointToolsBundle/Entity/SubscriptionRepository.php +++ b/src/Skobkin/Bundle/PointToolsBundle/Entity/SubscriptionRepository.php @@ -25,21 +25,4 @@ class SubscriptionRepository extends EntityRepository ->getQuery()->getSingleScalarResult() ; } - - /** - * @return TopUserDTO[] - */ - public function getTopUsers() - { - $qb = $this->createQueryBuilder('s'); - - return $qb - ->select(['COUNT(s.subscriber) as cnt', 'NEW SkobkinPointToolsBundle:TopUserDTO(a.login, COUNT(s.subscriber))']) - ->innerJoin('s.author', 'a') - ->orderBy('cnt', 'desc') - ->groupBy('a.id') - ->setMaxResults(30) - ->getQuery()->getResult() - ; - } } \ No newline at end of file diff --git a/src/Skobkin/Bundle/PointToolsBundle/Entity/UserRepository.php b/src/Skobkin/Bundle/PointToolsBundle/Entity/UserRepository.php index 92f047e..e8092eb 100644 --- a/src/Skobkin/Bundle/PointToolsBundle/Entity/UserRepository.php +++ b/src/Skobkin/Bundle/PointToolsBundle/Entity/UserRepository.php @@ -57,4 +57,25 @@ class UserRepository extends EntityRepository ->getQuery()->getResult() ; } + + /** + * @return TopUserDTO[] + */ + public function getTopUsers($limit = 30) + { + if (!is_int($limit)) { + throw new \InvalidArgumentException('$limit must be an integer'); + } + + $qb = $this->createQueryBuilder('s'); + + return $qb + ->select(['COUNT(s.subscriber) as cnt', 'NEW SkobkinPointToolsBundle:TopUserDTO(a.login, COUNT(s.subscriber))']) + ->innerJoin('s.author', 'a') + ->orderBy('cnt', 'desc') + ->groupBy('a.id') + ->setMaxResults($limit) + ->getQuery()->getResult() + ; + } } \ No newline at end of file