src/Component/Core/Shop/MenuListener.php line 20

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace BitBag\OpenMarketplace\Component\Core\Shop;
  4. use BitBag\OpenMarketplace\Component\Acl\Checker\PrivilegeCheckerInterface;
  5. use BitBag\OpenMarketplace\Component\Vendor\Entity\ShopUserInterface;
  6. use Sylius\Bundle\ApiBundle\Context\UserContextInterface;
  7. use Sylius\Bundle\UiBundle\Menu\Event\MenuBuilderEvent;
  8. class MenuListener
  9. {
  10.     public function __construct(
  11.         private UserContextInterface $userContext,
  12.         private PrivilegeCheckerInterface $privilegeChecker,
  13.     ) {
  14.     }
  15.     public function addAccountMenuItems(MenuBuilderEvent $event): void
  16.     {
  17.         $menu $event->getMenu();
  18.         $menu->removeChild('organization_orders');
  19.         $menu->removeChild('address_book');
  20.         $menu->removeChild('order_history');
  21.         $menu->removeChild('dashboard');
  22.         $menu
  23.             ->addChild('logout', ['route' => 'sylius_shop_logout'])
  24.             ->setLabel('sylius.ui.logout')
  25.             ->setLabelAttribute('icon''sign-out')
  26.         ;
  27.     }
  28.     public function addBuyerMenu(MenuBuilderEvent $event): void
  29.     {
  30.         $menu $event->getMenu();
  31.         $menu->removeChild('organization_orders');
  32.         /** @var ShopUserInterface $shopUser */
  33.         $shopUser $this->userContext->getUser();
  34.         $menu->removeChild('address_book');
  35.         $menu->removeChild('order_history');
  36.         if ($shopUser->isOrganizationAdmin()) {
  37.             $menu
  38.                 ->addChild('organization_management', [
  39.                     'route' => 'bitbag_sylius_organization_plugin_shop_account_organization_index',
  40.                 ])
  41.                 ->setLabel('bitbag_sylius_organization_plugin.ui.manage_your_organization')
  42.                 ->setLabelAttribute('icon''briefcase');
  43.             $menu
  44.                 ->addChild('organization_billing_address', [
  45.                     'route' => 'bitbag_sylius_organization_plugin_shop_account_organization_billing_data_update',
  46.                 ])
  47.                 ->setLabel('sylius.ui.billing_address')
  48.                 ->setLabelAttribute('icon''world');
  49.             $menu
  50.                 ->addChild('organization_update', [
  51.                     'route' => 'bitbag_sylius_organization_plugin_shop_account_organization_update',
  52.                 ])
  53.                 ->setLabel('open_marketplace.menu.shop.account.organization_update.header')
  54.                 ->setLabelAttribute('icon''book');
  55.             $menu
  56.                 ->addChild('organization_address_book', [
  57.                     'route' => 'bitbag_sylius_organization_plugin_shop_account_organization_address_book_index',
  58.                 ])
  59.                 ->setLabel('bitbag_sylius_organization_plugin.ui.organization_address_book')
  60.                 ->setLabelAttribute('icon''book');
  61.         }
  62.         if ($this->privilegeChecker->hasPrivilege('sylius_shop_account_order_index')) {
  63.             $menu
  64.                 ->addChild('organization_orders', [
  65.                     'route' => 'sylius_shop_account_order_index',
  66.                 ])
  67.                 ->setLabel('bitbag_sylius_organization_plugin.ui.organization_orders')
  68.                 ->setLabelAttribute('icon''shopping bag');
  69.         }
  70.         if ($this->privilegeChecker->hasPrivilege('app_shop_rfq_index')) {
  71.             $menu
  72.                 ->addChild('rfq', ['route' => 'app_shop_rfq_index'])
  73.                 ->setLabel('app.ui.rfq')
  74.                 ->setLabelAttribute('icon''handshake');
  75.         }
  76.         if ($this->privilegeChecker->hasPrivilege('app_shop_inquiry_index')) {
  77.             $menu
  78.                 ->addChild('inquiry', ['route' => 'app_shop_inquiry_index'])
  79.                 ->setLabel('app.ui.inquiry')
  80.                 ->setLabelAttribute('icon''question circle');
  81.         }
  82.         $menu
  83.             ->addChild('logout', ['route' => 'sylius_shop_logout'])
  84.             ->setLabel('sylius.ui.logout')
  85.             ->setLabelAttribute('icon''sign-out')
  86.         ;
  87.     }
  88. }