src/Controller/Webmaster/DashboardController.php line 52

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Webmaster;
  3. use App\Dictionary\NewsRole;
  4. use App\Security\ApiUser;
  5. use App\Service\Client\Marketing\NewsService;
  6. use App\Service\Client\User\PersonService;
  7. use App\Service\Client\User\WebmasterService;
  8. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\RedirectResponse;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. /**
  13.  * @Route("/webmaster")
  14.  */
  15. class DashboardController extends AbstractController
  16. {
  17.     /**
  18.      * @var WebmasterService
  19.      */
  20.     protected WebmasterService $service;
  21.     /**
  22.      * @var NewsService
  23.      */
  24.     protected NewsService $newsService;
  25.     /**
  26.      * @var PersonService
  27.      */
  28.     protected PersonService $personService;
  29.     /**
  30.      * @param WebmasterService $service
  31.      * @param NewsService $newsService
  32.      * @param PersonService $personService
  33.      */
  34.     public function __construct(WebmasterService $serviceNewsService $newsServicePersonService $personService)
  35.     {
  36.         $this->service $service;
  37.         $this->newsService $newsService;
  38.         $this->personService $personService;
  39.     }
  40.     /**
  41.      * @Route("/", methods={"GET"})
  42.      * @Template()
  43.      * @return array|RedirectResponse
  44.      */
  45.     public function index()
  46.     {
  47.         /**
  48.          * @var $user ApiUser
  49.          */
  50.         $user $this->getUser();
  51.         if ($user && $user->hasRole('ROLE_WEBMASTER')) {
  52.             return $this->redirectToRoute('app_webmaster_dashboard_news');
  53.         }
  54.         return [];
  55.     }
  56.     /**
  57.      * @Route("/news/{page}", defaults={"page": 1}, requirements={"page": "\d+"}, methods={"GET"})
  58.      * @Template()
  59.      * @return array|RedirectResponse
  60.      */
  61.     public function news(int $page 1)
  62.     {
  63.         /**
  64.          * @var $user ApiUser
  65.          */
  66.         $user $this->getUser();
  67.         $perPage 5;
  68.         if (null === $webmasterId $user->getWebmasterId()) {
  69.             $this->addFlash('info''Sie sind kein Webmaster.');
  70.             return $this->redirectToRoute('app_user_dashboard_index');
  71.         }
  72.         return [
  73.             'person' => $this->personService->getCurrentPersonForWebmaster($webmasterId),
  74.             'newsEntries' => $this->newsService->getRoleNewsIndex(NewsRole::WEBMASTER$page$perPage),
  75.             'perPage' => $perPage
  76.         ];
  77.     }
  78. }