mirror of
https://github.com/werkraum-media/events.git
synced 2024-11-22 16:36:11 +01:00
Daniel Siepmann
f111884299
Make controller smaller, remove unused code. Move creation of demand object into its own factory. Reduce npath complexity in repository and move parts into named methods.
76 lines
2.1 KiB
PHP
76 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace Wrm\Events\Controller;
|
|
|
|
use TYPO3\CMS\Extbase\Annotation as Extbase;
|
|
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
|
|
use Wrm\Events\Domain\Model\Dto\EventDemand;
|
|
use Wrm\Events\Domain\Model\Dto\EventDemandFactory;
|
|
use Wrm\Events\Domain\Model\Event;
|
|
use Wrm\Events\Domain\Repository\EventRepository;
|
|
use Wrm\Events\Service\DataProcessingForModels;
|
|
|
|
class EventController extends ActionController
|
|
{
|
|
/**
|
|
* @var EventRepository
|
|
*/
|
|
protected $eventRepository;
|
|
|
|
/**
|
|
* @var DataProcessingForModels
|
|
*/
|
|
protected $dataProcessing;
|
|
|
|
/**
|
|
* @var EventDemandFactory
|
|
*/
|
|
protected $demandFactory;
|
|
|
|
public function __construct(
|
|
EventRepository $eventRepository,
|
|
DataProcessingForModels $dataProcessing,
|
|
EventDemandFactory $demandFactory
|
|
) {
|
|
$this->eventRepository = $eventRepository;
|
|
$this->dataProcessing = $dataProcessing;
|
|
$this->demandFactory = $demandFactory;
|
|
}
|
|
|
|
protected function initializeAction()
|
|
{
|
|
$this->dataProcessing->setConfigurationManager($this->configurationManager);
|
|
}
|
|
|
|
public function listAction(): void
|
|
{
|
|
$demand = $this->demandFactory->fromSettings($this->settings);
|
|
$events = $this->eventRepository->findByDemand($demand);
|
|
$this->view->assign('events', $events);
|
|
}
|
|
|
|
/**
|
|
* @Extbase\IgnoreValidation("event")
|
|
*/
|
|
public function showAction(Event $event): void
|
|
{
|
|
$this->view->assign('event', $event);
|
|
}
|
|
|
|
/**
|
|
* @deprecated Use listAction instead and configure settings properly.
|
|
* Use Settings or something else to switch between list and teaser rendering.
|
|
*/
|
|
public function teaserAction(): void
|
|
{
|
|
$this->view->assignMultiple([
|
|
'events' => $this->eventRepository->findByUids($this->settings['eventUids']),
|
|
]);
|
|
}
|
|
|
|
public function searchAction(string $search = ''): void
|
|
{
|
|
$this->view->assign('search', $search);
|
|
$this->view->assign('events', $this->eventRepository->findSearchWord($search));
|
|
}
|
|
}
|