<?php
// src/EventSubscriber/KnpMenuBuilderSubscriber.php
namespace App\EventSubscriber;
use KevinPapst\AdminLTEBundle\Event\KnpMenuEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Core\Security;
class KnpMenuSubscriber implements EventSubscriberInterface
{
protected $security;
public function __construct(Security $security)
{
$this->security = $security;
}
public static function getSubscribedEvents(): array
{
return [
KnpMenuEvent::class => ['onSetupMenu', 100],
];
}
public function onSetupMenu(KnpMenuEvent $event)
{
if (null === $this->security->getUser()) {
return;
}
/* @var $myUser User */
$myUser = $this->security->getUser();
$menu = $event->getMenu();
if($this->security->isGranted('ROLE_VENDEUR')== null){
//Menu Personnel
$menu->addChild('personnels', [
'route' => 'app_personnel_index',
'label' => 'menu.personnel',
'childOptions' => $event->getChildOptions(),
])->setLabelAttribute('class', 'icon ti ti-users')
->setAttributes(['class' => 'nav-item dropdown show'])
->setLinkAttributes(['class' => 'nav-link dropdown-toggle', 'data-bs-toggle'=>'dropdown', 'data-bs-auto-close'=>'false', 'role'=>'button', 'aria-expanded'=>'true']);
$menu->getChild('personnels')->addChild('personnel-liste', [
'route' => 'app_personnel_index',
'label' => 'menu.liste',
'childOptions' => $event->getChildOptions()
])->setLabelAttribute('class', 'icon ti ti-list')
->setLinkAttribute('class', 'dropdown-item');
$menu->getChild('personnels')->addChild('pointage', [
'route' => 'pointage_app',
'label' => 'menu.pointageJournee',
'childOptions' => $event->getChildOptions()
])->setLabelAttribute('class', 'icon ti ti-calendar-plus')
->setLinkAttribute('class', 'dropdown-item');
$menu->getChild('personnels')->addChild('mission', [
'route' => 'app_tbl_mission_index',
'label' => 'menu.pointageMissions',
'childOptions' => $event->getChildOptions()
])->setLabelAttribute('class', 'icon ti ti-hourglass-high')
->setLinkAttribute('class', 'dropdown-item');
//Menu Operations
$menu->addChild('Opérations', [
'route' => 'app_tbl_operations_index',
'label' => 'menu.operations',
'childOptions' => $event->getChildOptions(),
])->setLabelAttribute('class', 'icon ti ti-clipboard-data')
->setAttributes(['class' => 'nav-item dropdown'])
->setLinkAttributes(['class' => 'nav-link dropdown-toggle', 'data-bs-toggle'=>'dropdown', 'data-bs-auto-close'=>'false', 'role'=>'button', 'aria-expanded'=>'false']);
$menu->getChild('Opérations')->addChild('operations-liste', [
'route' => 'app_tbl_operations_index',
'label' => 'menu.liste',
'extras' => [
'routes' => [
[
'route' => 'operations_edit'
]
]
],
'childOptions' => $event->getChildOptions()
])->setLabelAttribute('class', 'icon ti ti-list')->setLinkAttribute('class', 'dropdown-item');
$menu->getChild('Opérations')->addChild('operations-Ajouter', [
'route' => 'app_tbl_operations_new',
'label' => 'menu.ajouter',
'childOptions' => $event->getChildOptions()
])->setLabelAttribute('class', 'icon ti ti-plus')->setLinkAttribute('class', 'dropdown-item');
//Menu Operation Vente
$menu->addChild('Opérations Ventes', [
'route' => 'app_tbl_operation_vente_index',
'label' => 'menu.operationsVentes',
'childOptions' => $event->getChildOptions(),
])->setLabelAttribute('class', 'icon ti ti-shopping-cart')
->setAttributes(['class' => 'nav-item dropdown'])
->setLinkAttributes(['class' => 'nav-link dropdown-toggle', 'data-bs-toggle'=>'dropdown', 'data-bs-auto-close'=>'false', 'role'=>'button', 'aria-expanded'=>'false']);
$menu->getChild('Opérations Ventes')->addChild('operations-liste', [
'route' => 'app_tbl_operation_vente_index',
'label' => 'menu.liste',
'extras' => [
'routes' => [
[
'route' => 'app_tbl_operation_vente_edit'
]
]
],
'childOptions' => $event->getChildOptions()
])->setLabelAttribute('class', 'icon ti ti-list')->setLinkAttribute('class', 'dropdown-item');
$menu->getChild('Opérations Ventes')->addChild('operations-Ajouter', [
'route' => 'app_tbl_operation_vente_new',
'label' => 'menu.ajouter',
'childOptions' => $event->getChildOptions()
])->setLabelAttribute('class', 'icon ti ti-plus')->setLinkAttribute('class', 'dropdown-item');
//Menu Gestion Stock
$menu->addChild('stockCaisse', [
'route' => 'app_tbl_mouvement_caisse_index',
'label' => 'menu.stockCaisse',
'childOptions' => $event->getChildOptions(),
'extras' => [
'pere' => true
]
])->setLabelAttribute('class', 'icon ti ti-box');
//Menu Stock
$menu->addChild('stock', [
'route' => 'app_tbl_mouvement_index',
'label' => 'menu.stock',
'childOptions' => $event->getChildOptions(),
'extras' => [
'pere' => true
]
])->setLabelAttribute('class', 'icon ti ti-arrows-left-right');
if(!$this->security->isGranted('ROLE_ADMIN_FERME')){
$menu->addChild('lapin', [
'route' => 'app_lapin_production',
'label' => 'menu.lapin',
'childOptions' => $event->getChildOptions(),
'extras' => [
'pere' => true
]
])->setLabelAttribute('class', 'icon ti ti-calendar-time');
}
if($this->security->isGranted('ROLE_SUPER_ADMIN') || $this->security->isGranted('ROLE_ADMIN') || $this->security->isGranted('ROLE_ADMIN_FERME')){
$menu->addChild('admin', [
'route' => 'sonata_admin_redirect',
'label' => 'menu.administrationDonnees',
'childOptions' => $event->getChildOptions(),
'extras' => [
'pere' => true
]
])->setLabelAttribute('class', 'icon ti ti-home');
$menu->getChild('personnels')->addChild('salaire', [
'route' => 'app_tbl_paie_salaire_index',
'label' => 'menu.gestionSalaires',
'childOptions' => $event->getChildOptions()
])->setLabelAttribute('class', 'icon ti ti-credit-card')->setLinkAttribute('class', 'dropdown-item');
}
$menu->getChild('personnels')->addChild('paie-avance', [
'route' => 'paie_app',
'label' => 'menu.paieAvance',
'childOptions' => $event->getChildOptions()
])->setLabelAttribute('class', 'icon ti ti-calculator')->setLinkAttribute('class', 'dropdown-item');
$menu->getChild('personnels')->addChild('resultats', [
'route' => 'paie_resultats',
'label' => 'menu.resultats',
'childOptions' => $event->getChildOptions()
])->setLabelAttribute('class', 'icon ti ti-plus')->setLinkAttribute('class', 'dropdown-item');
}
}
}