* redirect to single awardee from the menu, if there is only one in a year

This commit is contained in:
Danyi Dávid 2018-05-06 21:44:44 +02:00
parent 03f8116bd2
commit 622a4e1ebb
2 changed files with 22 additions and 4 deletions

View File

@ -9,6 +9,8 @@ use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Zend\Diactoros\Response\HtmlResponse;
use Zend\Diactoros\Response\RedirectResponse;
use Zend\Expressive\Helper\UrlHelper;
use Zend\Expressive\Template\TemplateRendererInterface;
class AwardeeHandler implements RequestHandlerInterface
@ -19,18 +21,32 @@ class AwardeeHandler implements RequestHandlerInterface
/** @var AwardeeManager */
private $awardeeManager;
/** @var UrlHelper */
private $urlHelper;
public function __construct(
TemplateRendererInterface $template,
AwardeeManager $awardeeManager
) {
AwardeeManager $awardeeManager,
UrlHelper $urlHelper
)
{
$this->template = $template;
$this->awardeeManager = $awardeeManager;
$this->urlHelper = $urlHelper;
}
public function handle(ServerRequestInterface $request) : ResponseInterface
public function handle(ServerRequestInterface $request): ResponseInterface
{
$year = $request->getAttribute('year');
$awardees = $this->awardeeManager->getJudgesByYear((int)$year);
if (count($awardees) === 1) {
$url = $this->urlHelper->generate('awardee', [
'slug' => $awardees[0]->getSlug(),
]);
return new RedirectResponse($url);
}
return new HtmlResponse($this->template->render("app::awardees", [
'year' => $year,
'awardees' => $awardees,

View File

@ -7,6 +7,7 @@ namespace App\Handler;
use App\Service\AwardeeManager;
use Psr\Container\ContainerInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Zend\Expressive\Helper\UrlHelper;
use Zend\Expressive\Template\TemplateRendererInterface;
class AwardeeHandlerFactory
@ -15,6 +16,7 @@ class AwardeeHandlerFactory
{
$template = $container->get(TemplateRendererInterface::class);
$awardeeManager = $container->get(AwardeeManager::class);
return new AwardeeHandler($template, $awardeeManager);
$urlHelper = $container->get(UrlHelper::class);
return new AwardeeHandler($template, $awardeeManager, $urlHelper);
}
}