src/Controller/DefaultController.php line 37

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Model\User;
  4. use App\Repository\NewsRepository;
  5. use App\Service\News\ChartFormatter;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  10. use Symfony\Component\Cache\Adapter\FilesystemAdapter;
  11. use Symfony\Contracts\Cache\ItemInterface;
  12. /**
  13.  * Class DefaultController
  14.  *
  15.  * @package App\Controller
  16.  *
  17.  */
  18. class DefaultController extends AbstractController
  19. {
  20.     /**
  21.      * @var NewsRepository
  22.      */
  23.     private $newsRepository;
  24.     public function __construct(NewsRepository $newsRepository)
  25.     {
  26.         $this->newsRepository $newsRepository;
  27.     }
  28.     /**
  29.      * @Route("/", name="HOMEPAGE")
  30.      */
  31.     public function index(): Response
  32.     {
  33.         /** @var User $user */
  34.         $user  $this->getUser();
  35.         $email $this->getUser()->getEmail();
  36.         $cache = new FilesystemAdapter();
  37.         $beta  INF;
  38.         $key         md5('chartNewsByMonth' $email);
  39.         $newsByMOnth $cache->get($key, function (ItemInterface $item) {
  40.             $item->expiresAfter(3600 6);
  41.             return $this->newsRepository->getNewsByMonthForChart();
  42.         }, $beta);
  43.         $key          md5('chartNewsByTarget' $email);
  44.         $newsByTarget $cache->get($key, function (ItemInterface $item) {
  45.             $item->expiresAfter(3600 6);
  46.             return $this->newsRepository->getNewsByType();
  47.         }, $beta);
  48.         $key            md5('chartNewsByCategory' $email);
  49.         $newsByCategory $cache->get($key, function (ItemInterface $item) {
  50.             $item->expiresAfter(3600 6);
  51.             return $this->newsRepository->getNewsByCategory();
  52.         }, $beta);
  53.         return $this->render('default/index.html.twig', [
  54.             'chart' => [
  55.                 'newsByMonth'    => ChartFormatter::getNewsByMonth($newsByMOnth),
  56.                 'newsByTarget'   => ChartFormatter::getNewsByTargets($newsByTarget$user),
  57.                 'newsByCategory' => ChartFormatter::getNewsByCategory($newsByCategory),
  58.             ],
  59.         ]);
  60.     }
  61.     /**
  62.      * @Route("/test-user", name="TEST_USER", methods={"GET"})
  63.      * @IsGranted("ROLE_USER")
  64.      * @return Response
  65.      */
  66.     public function testUser(): Response
  67.     {
  68.         return $this->render('default/test-user.html.twig', []);
  69.     }
  70. }