From 622a4e1ebbb46343d36e601493b730cc8c38137a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danyi=20D=C3=A1vid?= Date: Sun, 6 May 2018 21:44:44 +0200 Subject: [PATCH] * redirect to single awardee from the menu, if there is only one in a year --- src/App/Handler/AwardeeHandler.php | 22 +++++++++++++++++++--- src/App/Handler/AwardeeHandlerFactory.php | 4 +++- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/App/Handler/AwardeeHandler.php b/src/App/Handler/AwardeeHandler.php index 5faef7e..625585a 100644 --- a/src/App/Handler/AwardeeHandler.php +++ b/src/App/Handler/AwardeeHandler.php @@ -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, diff --git a/src/App/Handler/AwardeeHandlerFactory.php b/src/App/Handler/AwardeeHandlerFactory.php index 3290573..9fba4c2 100644 --- a/src/App/Handler/AwardeeHandlerFactory.php +++ b/src/App/Handler/AwardeeHandlerFactory.php @@ -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); } }