src/Aqarmap/Bundle/CreditBundle/EventListener/ConfigureMenuEventSubscriber.php line 42

Open in your IDE?
  1. <?php
  2. namespace Aqarmap\Bundle\CreditBundle\EventListener;
  3. use Aqarmap\Bundle\FeatureToggleBundle\Service\FeatureToggleManager;
  4. use Aqarmap\Bundle\MainBundle\Event\ConfigureMenuEvent;
  5. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  6. use Symfony\Contracts\Translation\TranslatorInterface;
  7. class ConfigureMenuEventSubscriber implements \Symfony\Component\EventDispatcher\EventSubscriberInterface
  8. {
  9.     /**
  10.      * Container instance.
  11.      */
  12.     protected $container;
  13.     /**
  14.      * Translator instance.
  15.      */
  16.     protected $translator;
  17.     /**
  18.      * @var FeatureToggleManager
  19.      */
  20.     private $featureToggleManager;
  21.     /**
  22.      * @var AuthorizationCheckerInterface
  23.      */
  24.     private $authorizationChecker;
  25.     public function __construct(TranslatorInterface $translatorFeatureToggleManager $featureToggleManagerAuthorizationCheckerInterface $authorizationChecker)
  26.     {
  27.         $this->translator $translator;
  28.         $this->featureToggleManager $featureToggleManager;
  29.         $this->authorizationChecker $authorizationChecker;
  30.     }
  31.     /**
  32.      * @throws \Doctrine\ORM\NonUniqueResultException
  33.      */
  34.     public function onAdminSidebarMenuConfigure(ConfigureMenuEvent $event): void
  35.     {
  36.         $menu $event->getMenu();
  37.         if ($this->authorizationChecker->isGranted('ROLE_ANALYSIS')) {
  38.             $menu['analysis']
  39.                 ->addChild('credit_analysis', ['route' => 'aqarmap_admin_analysis_credit'])
  40.                 ->setLabel('Credit Analysis')
  41.                 ->setExtra('icon''chart-line')
  42.                 ->setExtra('position'82);
  43.         }
  44.         if ($this->authorizationChecker->isGranted('ROLE_ANALYSIS')) {
  45.             $menu['analysis']
  46.                 ->addChild('impressions_analysis', ['route' => 'aqarmap_admin_analysis_impressions'])
  47.                 ->setLabel('Impressions Analysis')
  48.                 ->setExtra('icon''chart-line')
  49.                 ->setExtra('position'83);
  50.         }
  51.         if ($this->authorizationChecker->isGranted('ROLE_CHURN_EXPIRY')) {
  52.             $menu['analysis']
  53.                 ->addChild('churn_expiry', ['route' => 'aqarmap_admin_analysis_churn_expiry'])
  54.                 ->setLabel('Churn VS Expiry')
  55.                 ->setExtra('icon''users')
  56.                 ->setExtra('position'85);
  57.         }
  58.         if ($this->featureToggleManager->isEnabled('web.sales.analysis')) {
  59.             if ($this->authorizationChecker->isGranted('ROLE_SALES_ANALYSIS')) {
  60.                 $menu['analysis']
  61.                     ->addChild('sales_analysis', ['route' => 'aqarmap_admin_sales_analysis'])
  62.                     ->setLabel(' Sales Report')
  63.                     ->setExtra('icon''chart-line')
  64.                     ->setExtra('position'84);
  65.             }
  66.         }
  67.         if ($this->authorizationChecker->isGranted('ROLE_MARKETING')) {
  68.             $menu['settings']
  69.                 ->addChild('FAQs', ['route' => 'aqarmap_admin_credit_faq'])
  70.                 ->setLabel($this->translator->trans('layout.admin.faqs'))
  71.                 ->setExtra('icon''exclamation-triangle')
  72.                 ->setExtra('position'107);
  73.         }
  74.         if ($this->authorizationChecker->isGranted('ROLE_MARKETING')) {
  75.             $menu['settings']
  76.                 ->addChild('testimonials', ['route' => 'aqarmap_admin_testimonials'])
  77.                 ->setLabel($this->translator->trans('layout.admin.testimonials'))
  78.                 ->setExtra('icon''user-circle')
  79.                 ->setExtra('position'108);
  80.         }
  81.         if ($this->authorizationChecker->isGranted('ROLE_SUPER_ADMIN')) {
  82.             $menu['settings']
  83.                 ->addChild('settings', ['route' => 'aqarmap_admin_settings_index'])
  84.                 ->setLabel('settings')
  85.                 ->setExtra('icon''user-circle')
  86.                 ->setExtra('position'109);
  87.         }
  88.     }
  89.     /**
  90.      * @return array<string, mixed>
  91.      */
  92.     public static function getSubscribedEvents(): array
  93.     {
  94.         return ['aqarmap.main.admin_sidebar_menu_configure' => 'onAdminSidebarMenuConfigure'];
  95.     }
  96. }