<?php
namespace App\Controller\Webmaster;
use App\Dictionary\NewsRole;
use App\Security\ApiUser;
use App\Service\Client\Marketing\NewsService;
use App\Service\Client\User\PersonService;
use App\Service\Client\User\WebmasterService;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/webmaster")
*/
class DashboardController extends AbstractController
{
/**
* @var WebmasterService
*/
protected WebmasterService $service;
/**
* @var NewsService
*/
protected NewsService $newsService;
/**
* @var PersonService
*/
protected PersonService $personService;
/**
* @param WebmasterService $service
* @param NewsService $newsService
* @param PersonService $personService
*/
public function __construct(WebmasterService $service, NewsService $newsService, PersonService $personService)
{
$this->service = $service;
$this->newsService = $newsService;
$this->personService = $personService;
}
/**
* @Route("/", methods={"GET"})
* @Template()
* @return array|RedirectResponse
*/
public function index()
{
/**
* @var $user ApiUser
*/
$user = $this->getUser();
if ($user && $user->hasRole('ROLE_WEBMASTER')) {
return $this->redirectToRoute('app_webmaster_dashboard_news');
}
return [];
}
/**
* @Route("/news/{page}", defaults={"page": 1}, requirements={"page": "\d+"}, methods={"GET"})
* @Template()
* @return array|RedirectResponse
*/
public function news(int $page = 1)
{
/**
* @var $user ApiUser
*/
$user = $this->getUser();
$perPage = 5;
if (null === $webmasterId = $user->getWebmasterId()) {
$this->addFlash('info', 'Sie sind kein Webmaster.');
return $this->redirectToRoute('app_user_dashboard_index');
}
return [
'person' => $this->personService->getCurrentPersonForWebmaster($webmasterId),
'newsEntries' => $this->newsService->getRoleNewsIndex(NewsRole::WEBMASTER, $page, $perPage),
'perPage' => $perPage
];
}
}