<?php
namespace App\EventSubscriber;
use App\Entity\Department;
use App\Entity\Establishment;
use App\Entity\Model;
use App\Manager\DepartmentManager;
use App\Manager\EstablishmentManager;
use App\Manager\FormsManager;
use App\Manager\InfoManager;
use App\Manager\ModelManager;
use App\Manager\ServiceManager;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ControllerEvent;
use Twig\Environment;
class TwigEventSubscriber implements EventSubscriberInterface
{
private Environment $twig;
private InfoManager $infoManager;
private FormsManager $formsManager;
private EstablishmentManager $establishmentManager;
private DepartmentManager $departmentManager;
private ModelManager $modelManager;
private ServiceManager $serviceManager;
public function __construct(
Environment $twig,
InfoManager $infoManager,
FormsManager $formsManager,
DepartmentManager $departmentManager,
EstablishmentManager $establishmentManager,
ModelManager $modelManager,
ServiceManager $serviceManager
)
{
$this->twig = $twig;
$this->infoManager = $infoManager;
$this->formsManager = $formsManager;
$this->departmentManager = $departmentManager;
$this->establishmentManager = $establishmentManager;
$this->modelManager = $modelManager;
$this->serviceManager = $serviceManager;
}
public function onControllerEvent(ControllerEvent $event)
{
$info = $this->infoManager->find(1);
$forms = $this->formsManager->find(1);
$departments = $this->departmentManager->all();
$departments = array_map(function (Department $department) {
return $department->toArray();
}, $departments);
$establishments = $this->establishmentManager->showInServiceForm();
$establishments = array_map(function (Establishment $establishment) {
return $establishment->toArray();
}, $establishments);
$models = $this->modelManager->valid();
$models = array_map(function (Model $model) {
return $model->toArray();
}, $models);
$services = $this->serviceManager->inHeader();
$this->twig->addGlobal('info', $info);
$this->twig->addGlobal('forms', $forms);
$this->twig->addGlobal('departmentsArray', $departments);
$this->twig->addGlobal('establishmentsArray', $establishments);
$this->twig->addGlobal('modelsArray', $models);
$this->twig->addGlobal('headerServices', $services);
$this->twig->addGlobal('menu_active', []);
}
public static function getSubscribedEvents(): array
{
return [
ControllerEvent::class => 'onControllerEvent',
];
}
}