From 097488446a52ab12a88242ee64303d0836b300e5 Mon Sep 17 00:00:00 2001 From: Alexey Skobkin Date: Sat, 30 May 2015 09:22:06 +0300 Subject: [PATCH] Statistics for main page. --- .../Controller/MainController.php | 51 +++++++++++++++++++ .../Resources/config/routing.yml | 6 +-- .../Resources/views/Main/index.html.twig | 9 ++++ .../Tests/Controller/MainControllerTest.php | 16 ++++++ 4 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 src/Skobkin/Bundle/PointToolsBundle/Controller/MainController.php create mode 100644 src/Skobkin/Bundle/PointToolsBundle/Resources/views/Main/index.html.twig create mode 100644 src/Skobkin/Bundle/PointToolsBundle/Tests/Controller/MainControllerTest.php diff --git a/src/Skobkin/Bundle/PointToolsBundle/Controller/MainController.php b/src/Skobkin/Bundle/PointToolsBundle/Controller/MainController.php new file mode 100644 index 0000000..4a050b6 --- /dev/null +++ b/src/Skobkin/Bundle/PointToolsBundle/Controller/MainController.php @@ -0,0 +1,51 @@ +getDoctrine()->getManager(); + + /** @var QueryBuilder $qb */ + $qb = $em->getRepository('SkobkinPointToolsBundle:User')->createQueryBuilder('u'); + + // All users in the system count + $usersCount = $qb->select('COUNT(u)')->getQuery()->getSingleScalarResult(); + + $qb = $em->getRepository('SkobkinPointToolsBundle:Subscription')->createQueryBuilder('s'); + + // Service subscribers count + $subscribersCount = $qb + ->select('COUNT(s)') + ->join('s.author', 'a') + ->where('a.login = :login') + ->setParameter('login', $this->container->getParameter('point_login')) + ->getQuery()->getSingleScalarResult() + ; + + $qb = $em->getRepository('SkobkinPointToolsBundle:SubscriptionEvent')->createQueryBuilder('se'); + + $now = new \DateTime(); + + $eventsCount = $qb + ->select('COUNT(se)') + ->where('se.date > :time') + ->setParameter('time', $now->sub(new \DateInterval('PT24H'))) + ->getQuery()->getSingleScalarResult() + ; + + return $this->render('SkobkinPointToolsBundle:Main:index.html.twig', [ + 'users_count' => $usersCount, + 'subscribers_count' => $subscribersCount, + 'events_count' => $eventsCount, + ]); + } + +} diff --git a/src/Skobkin/Bundle/PointToolsBundle/Resources/config/routing.yml b/src/Skobkin/Bundle/PointToolsBundle/Resources/config/routing.yml index 130a5a2..7bb42eb 100644 --- a/src/Skobkin/Bundle/PointToolsBundle/Resources/config/routing.yml +++ b/src/Skobkin/Bundle/PointToolsBundle/Resources/config/routing.yml @@ -1,3 +1,3 @@ -#skobkin_point_tools_homepage: -# path: /hello/{name} -# defaults: { _controller: SkobkinPointToolsBundle:Default:index } +index: + path: / + defaults: { _controller: SkobkinPointToolsBundle:Main:index } diff --git a/src/Skobkin/Bundle/PointToolsBundle/Resources/views/Main/index.html.twig b/src/Skobkin/Bundle/PointToolsBundle/Resources/views/Main/index.html.twig new file mode 100644 index 0000000..b1f7162 --- /dev/null +++ b/src/Skobkin/Bundle/PointToolsBundle/Resources/views/Main/index.html.twig @@ -0,0 +1,9 @@ +{% extends "::base.html.twig" %} + +{% block title %}SkobkinPointToolsBundle:Main:index{% endblock %} + +{% block body %} +

{{ users_count }}

+

{{ subscribers_count }}

+

{{ events_count }}

+{% endblock %} diff --git a/src/Skobkin/Bundle/PointToolsBundle/Tests/Controller/MainControllerTest.php b/src/Skobkin/Bundle/PointToolsBundle/Tests/Controller/MainControllerTest.php new file mode 100644 index 0000000..49b12c0 --- /dev/null +++ b/src/Skobkin/Bundle/PointToolsBundle/Tests/Controller/MainControllerTest.php @@ -0,0 +1,16 @@ +request('GET', '/'); + } + +}