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