src/Menu/AdminMenuListener.php line 24

Open in your IDE?
  1. <?php
  2. namespace App\Menu;
  3. use App\Entity\Partner\Partner;
  4. use App\Entity\User\AdminUser;
  5. use App\RBAC\PermissionsInterface;
  6. use App\Service\SystemService;
  7. use Sylius\Bundle\UiBundle\Menu\Event\MenuBuilderEvent;
  8. use Symfony\Component\DependencyInjection\ContainerInterface;
  9. final class AdminMenuListener
  10. {
  11.     protected $container;
  12.     const ROLE_PARTNER 'ROLE_PARTNER';
  13.     public function __construct(ContainerInterface $container)
  14.     {
  15.         $this->container $container;
  16.     }
  17.     public function addAdminMenuItems(MenuBuilderEvent $event): void
  18.     {
  19.         $user $this->container->get('security.token_storage')->getToken()->getUser();
  20.         $partner $partnerRole null;
  21.         $role null;
  22.         $rolesArray null;
  23.         if ($user instanceof AdminUser) {
  24.             $isPartner SystemService::isUserPartner($user);
  25.             $hasCustomRoles SystemService::isUserCustomRoles($user);
  26.             if ($isPartner) {
  27.                 $role self::ROLE_PARTNER;
  28.                 if ($partner $user->getPartner()) {
  29.                     $partnerRole $partner->getRole();
  30.                 }
  31.             } elseif ($hasCustomRoles) {
  32.                 $rolesArray $user->getCustomRoleRule()->getCustomRoleRule();
  33.             }
  34.         }
  35.         $menu $event->getMenu();
  36.         switch (true) {
  37.             case $user->hasPermission(PermissionsInterface::TYPE_RCA_PARTNER):
  38.                 $newSubmenu $menu->addChild('reports')->setLabel('Rapoarte');
  39.                 $newSubmenu->addChild('admin_report_products', ['route' => 'admin_report_products'])->setLabel('Raport produse')->setLabelAttribute('icon''list');
  40.                 $newSubmenu->addChild('admin_report_order_products', ['route' => 'admin_report_order_products'])->setLabel('Raport comenzi produse')->setLabelAttribute('icon''list');
  41.                 $menu->removeChild('bitbag_cms');
  42.                 break;
  43.             case $user->hasPermission(PermissionsInterface::TYPE_OBSIDIAN_PARTNER):
  44.                 $newSubmenu $menu->addChild('reports')->setLabel('Rapoarte');
  45.                 $newSubmenu->addChild('admin_report_products', ['route' => 'admin_report_products'])->setLabel('Raport produse')->setLabelAttribute('icon''list');
  46.                 $newSubmenu->addChild('admin_report_order_products', ['route' => 'admin_report_order_products'])->setLabel('Raport comenzi produse')->setLabelAttribute('icon''list');
  47.                 $newSubmenu $menu->addChild('death_insurance')->setLabel('Asigurare de deces');
  48.                 $newSubmenu->addChild('death_insurance', ['route' => 'app_admin_cms_death_insurance_index'])->setLabel('Asigurare de deces NN')->setLabelAttribute('icon''user');
  49.                 $menu->removeChild('bitbag_cms');
  50.                 break;
  51.             case $role === 'ROLE_PARTNER':
  52.                 if ($partnerRole->getCanIssueRoVignette()) {
  53.                     $newSubmenu $menu->addChild('ro_vignette')->setLabel('RO-viniete');
  54.                     $newSubmenu->addChild('app_admin_ro_vignette_partner_index', ['route' => 'app_admin_ro_vignette_partner_index'])->setLabel('RO-viniete')->setLabelAttribute('icon''star');
  55.                 }
  56.                 if ($partnerRole->getCanIssueHuVignette()) {
  57.                     $newSubmenu $menu->addChild('hu_vignette')->setLabel('Hu-viniete');
  58.                     $newSubmenu->addChild('hu_vignette', ['route' => 'app_admin_hu_vignette_index'])->setLabel('Hu-viniete')->setLabelAttribute('icon''taxi');
  59.                 }
  60.                 if ($partnerRole->getCanIssueRca()) {
  61.                     $newSubmenu $menu->addChild('rca')->setLabel('RCA');
  62.                     $newSubmenu->addChild('rca', ['route' => 'app_admin_cms_rca_index'])->setLabel('Comenzi RCA')->setLabelAttribute('icon''car');
  63.                     $newSubmenu->addChild('rca_emise', ['route' => 'app_admin_cms_issued_rca_index'])->setLabel('RCA Emise')->setLabelAttribute('icon''star');
  64.                     $newSubmenu->addChild('broker-rca-commissions', ['route' => 'app_admin_broker_rca_commissions''routeParameters' => ['type' => 'rcaCommissions']])->setLabel('Comisioane Asiguratori RCA')->setLabelAttribute('icon''file outline alternate');
  65.                     if ($partner->hasFlag(Partner::FLAG_HAS_EVIGNETTE_ACCOUNT)) {
  66.                         $newSubmenu->addChild(
  67.                             'app_admin_partner_qr_rca',
  68.                             [
  69.                                 'route' => 'app_admin_partner_qr',
  70.                                 'routeParameters' => [
  71.                                     'type' => 'rca',
  72.                                     'id' => $user->getPartner()->getId()
  73.                                 ]
  74.                             ]
  75.                         )->setLabel('Cod QR RCA')->setLabelAttribute('icon''qrcode');
  76.                     } else {
  77.                         $newSubmenu->addChild('iframe-documentation', ['route' => 'app_admin_iframe_documentation''routeParameters' => ['type' => 'iframe']])->setLabel('Documentatie IFRAME')->setLabelAttribute('icon''file outline alternate');
  78.                         if ($partner->getRole()->getCanIssueRca()) {
  79.                             $newSubmenu->addChild(
  80.                                 'app_admin_partner_qr_rca',
  81.                                 [
  82.                                     'route' => 'app_admin_partner_qr',
  83.                                     'routeParameters' => [
  84.                                         'type' => 'rca',
  85.                                         'id' => $user->getPartner()->getId()
  86.                                     ]
  87.                                 ]
  88.                             )->setLabel('Cod QR RCA')->setLabelAttribute('icon''qrcode');
  89.                         }
  90.                         if ($partner->getRole()->getCanIssueRoVignette()) {
  91.                             $newSubmenu->addChild(
  92.                                 'app_admin_partner_qr_roviniete',
  93.                                 [
  94.                                     'route' => 'app_admin_partner_qr',
  95.                                     'routeParameters' => [
  96.                                         'type' => 'roviniete',
  97.                                         'id' => $user->getPartner()->getId()
  98.                                     ]
  99.                                 ]
  100.                             )->setLabel('Cod QR RoViniete')->setLabelAttribute('icon''qrcode');
  101.                         }
  102.                         if ($partner->getRole()->getCanIssueHuVignette()) {
  103.                             $newSubmenu->addChild(
  104.                                 'app_admin_partner_qr_huviniete',
  105.                                 [
  106.                                     'route' => 'app_admin_partner_qr',
  107.                                     'routeParameters' => [
  108.                                         'type' => 'huviniete',
  109.                                         'id' => $user->getPartner()->getId()
  110.                                     ]
  111.                                 ]
  112.                             )->setLabel('Cod QR HuViniete')->setLabelAttribute('icon''qrcode');
  113.                         }
  114.                     }
  115.                 }
  116.                 if ($partnerRole->getCanIssueRoadAssistance()) {
  117.                     $newSubmenu $menu->addChild('road_assistance')->setLabel('Asistenta Rutiera');
  118.                     $newSubmenu->addChild('app_admin_cms_road_assistance_index', ['route' => 'app_admin_cms_road_assistance_index'])->setLabel('Asistenta Rutiera')->setLabelAttribute('icon''star');
  119.                 }
  120.                 if ($partnerRole->getCanIssueDeathInsurance()) {
  121.                     $newSubmenu $menu->addChild('death_insurance')->setLabel('Asigurare sofer NN');
  122.                     $newSubmenu->addChild('death_insurance', ['route' => 'app_admin_cms_death_insurance_index'])->setLabel('Asigurare sofer NN')->setLabelAttribute('icon''user');
  123.                 }
  124.                 if ($partnerRole->getCanIssueLicenseRecovery()) {
  125.                     $newSubmenu $menu->addChild('license_recovery')->setLabel('Recuperare Permis');
  126.                     $newSubmenu->addChild('license_recovery', ['route' => 'app_admin_license_recovery_index'])->setLabel('Recuperare Permis')->setLabelAttribute('icon''cart');
  127.                 }
  128.                 if ($partnerRole->getCanIssueTelemedicine()) {
  129.                     $newSubmenu $menu->addChild('telemedicine')->setLabel('Telemedicină');
  130.                     $newSubmenu->addChild('telemedicine', ['route' => 'app_admin_cms_telemedicine_index'])->setLabel('Comenzi Telemedicină')->setLabelAttribute('icon''user');
  131.                 }
  132.                 $newSubmenu $menu->addChild('reports')->setLabel('Rapoarte');
  133.                 $newSubmenu->addChild('admin_report_products', ['route' => 'admin_report_products'])->setLabel('Raport produse')->setLabelAttribute('icon''list');
  134.                 $newSubmenu->addChild('admin_report_order_products', ['route' => 'admin_report_order_products'])->setLabel('Raport comenzi produse')->setLabelAttribute('icon''list');
  135.                 $newSubmenu $menu->addChild('administration')->setLabel('Administrare');
  136.                 $newSubmenu->addChild('app_admin_order_partner_index', ['route' => 'app_admin_order_partner_index'])
  137.                     ->setLabel('Comenzi')->setLabelAttribute('icon''star');
  138.                 $menu->removeChild('bitbag_cms');
  139.                 break;
  140.             default:
  141.                 $newSubmenu $menu->addChild('ro_vignette')->setLabel('RO-viniete');
  142.                 $newSubmenu->addChild('vignette', ['route' => 'app_admin_vignette_index'])->setLabel('RO-viniete')->setLabelAttribute('icon''star');
  143.                 $newSubmenu->addChild('vignette_alerts', ['route' => 'app_admin_vignette_alerts_index'])->setLabel('Vignette Alerts')->setLabelAttribute('icon''envelope');
  144.                 $newSubmenu->addChild('failed_vignettes', ['route' => 'app_admin_failed_vignette_index'])->setLabel('CRON - Viniete esuate')->setLabelAttribute('icon''car');
  145.                 $newSubmenu $menu->addChild('hu_vignette')->setLabel('Hu-viniete');
  146.                 $newSubmenu->addChild('hu_vignette', ['route' => 'app_admin_hu_vignette_index'])->setLabel('Hu-viniete')->setLabelAttribute('icon''taxi');
  147.                 $newSubmenu->addChild('failed_hu_vignettes', ['route' => 'app_admin_failed_hu_vignette_index'])->setLabel('CRON - Hu-Viniete esuate')->setLabelAttribute('icon''taxi');
  148.                 $newSubmenu $menu->addChild('rca')->setLabel('RCA');
  149.                 $newSubmenu->addChild('rca', ['route' => 'app_admin_cms_rca_index'])->setLabel('Comenzi RCA')->setLabelAttribute('icon''car');
  150.                 $newSubmenu->addChild('rca_emise', ['route' => 'app_admin_cms_issued_rca_index'])->setLabel('RCA Emise')->setLabelAttribute('icon''star');
  151.                 $newSubmenu->addChild('rca_alerts', ['route' => 'app_admin_rca_alerts_index'])->setLabel('RCA Alerts')->setLabelAttribute('icon''envelope');
  152.                 $newSubmenu->addChild('rca_api', ['route' => 'app_admin_rca_api_index'])->setLabel('API RCA 24 BROKER')->setLabelAttribute('icon''car');
  153.                 $newSubmenu->addChild('rca_expirari_manuale', ['route' => 'app_admin_rca_manual_expire_notification_index'])->setLabel('RCA Expirari Manuale')->setLabelAttribute('icon''star');
  154.                 $newSubmenu->addChild('log_rca_erori_oferte', ['route' => 'app_admin_log_rca_offer_index'])->setLabel('Log RCA Erori oferte')->setLabelAttribute('icon''warning');
  155.                 $newSubmenu->addChild('log_rca_erori_oferte_prelucrat', ['route' => 'app_admin_log_processed_offer_index'])->setLabel('Log oferte RCA (prelucrat)')->setLabelAttribute('icon''warning');
  156.                 $newSubmenu->addChild('failed_rca_show', ['route' => 'app_admin_failed_rca_show'])->setLabel('RCA Esuat')->setLabelAttribute('icon''sync');
  157.                 $newSubmenu->addChild('failed_cms_rca', ['route' => 'app_admin_failed_rca_index'])->setLabel('CRON - RCA esuate')->setLabelAttribute('icon''car');
  158.                 $newSubmenu->addChild('status_companii_asigurari', ['route' => 'app_admin_insurance_companies'])->setLabel('Status Companii Asigurari')->setLabelAttribute('icon''star');
  159.                 $newSubmenu->addChild('statistica_ocr', ['route' => 'app_admin_identity_card_show'])->setLabel('Statistica OCR')->setLabelAttribute('icon''chart line');
  160.                 $newSubmenu->addChild('app_admin_failed_road_assistance_index', ['route' => 'app_admin_failed_road_assistance_index'])->setLabel('CRON - Asisenta Ruitera esuat')->setLabelAttribute('icon''taxi');
  161.                 $newSubmenu->addChild('broker-rca-commissions', ['route' => 'app_admin_broker_rca_commissions''routeParameters' => ['type' => 'rcaCommissions']])->setLabel('Comisioane Asiguratori RCA')->setLabelAttribute('icon''file outline alternate');
  162.                 $newSubmenu->addChild('iframe-documentation', ['route' => 'app_admin_iframe_documentation''routeParameters' => ['type' => 'iframe']])->setLabel('Documentatie IFRAME')->setLabelAttribute('icon''file outline alternate');
  163.                 $newSubmenu $menu->addChild('road_assistance')->setLabel('Asistenta Rutiera');
  164.                 $newSubmenu->addChild('road_assistance', ['route' => 'app_admin_cms_road_assistance_index'])->setLabel('Asistenta Rutiera')->setLabelAttribute('icon''star');
  165.                 $newSubmenu->addChild('cron_asistenta_rutiera_esuat', ['route' => 'app_admin_failed_road_assistance_index'])->setLabel('CRON - Asisenta Ruitera esuat')->setLabelAttribute('icon''taxi');
  166.                 $newSubmenu $menu->addChild('license_recovery')->setLabel('Recuperare Permis');
  167.                 $newSubmenu->addChild('license_recovery', ['route' => 'app_admin_license_recovery_index'])->setLabel('Comenzi Recuperare Permis')->setLabelAttribute('icon''cart');
  168.                 $newSubmenu $menu->addChild('telemedicine')->setLabel('Telemedicină');
  169.                 $newSubmenu->addChild('telemedicine', ['route' => 'app_admin_cms_telemedicine_index'])->setLabel('Comenzi Telemedicină')->setLabelAttribute('icon''cart');
  170.                 $newSubmenu->addChild('tele_doc', ['route' => 'app_admin_tele_doc_list'])->setLabel('Coduri TeleDoc')->setLabelAttribute('icon''archive');
  171.                 $newSubmenu $menu->addChild('death_insurance')->setLabel('Asigurare de deces');
  172.                 $newSubmenu->addChild('death_insurance', ['route' => 'app_admin_cms_death_insurance_index'])->setLabel('Asigurare de deces NN')->setLabelAttribute('icon''user');
  173.                 $newSubmenu->addChild('death_insurance_issue_data', ['route' => 'app_admin_cms_death_insurance_issue_data'])->setLabel('Date emitere asigurare NN')->setLabelAttribute('icon''file alternate');
  174.                 $newSubmenu $menu->addChild('administration')->setLabel('Administrare');
  175.                 $newSubmenu->addChild('vignette_invoices', ['route' => 'app_admin_vignette_invoice_index'])->setLabel('Facturi Fiscale')->setLabelAttribute('icon''file outline alternate');
  176.                 $newSubmenu->addChild('proforma_invoices', ['route' => 'app_admin_proforma_invoice_index'])->setLabel('Facturi Proforme')->setLabelAttribute('icon''file alternate');
  177.                 $newSubmenu->addChild('invoice_classification', ['route' => 'app_admin_invoice_classification_index'])->setLabel('Facturi API KEYS')->setLabelAttribute('icon''archive');
  178.                 $newSubmenu->addChild('sms', ['route' => 'app_admin_sms_index'])->setLabel('SMS')->setLabelAttribute('icon''envelope outline');
  179.                 $newSubmenu->addChild('app_admin_short_url_index', ['route' => 'app_admin_short_url_index'])->setLabel('Short URLs')->setLabelAttribute('icon''star');
  180.                 $newSubmenu->addChild('app_admin_view_exports', ['route' => 'app_admin_view_exports'])->setLabel('Vizualizare Exporturi')->setLabelAttribute('icon''download');
  181.                 $newSubmenu->addChild('users_roles', ['route' => 'app_admin_view_exports'])->setLabel('Roluri Useri')->setLabelAttribute('icon''users');
  182.                 $newSubmenu $menu->addChild('options')->setLabel('Options');
  183.                 $newSubmenu->addChild('vignette_general_options', ['route' => 'app_admin_vignette_general_option_index'])->setLabel('General options')->setLabelAttribute('icon''options');
  184.                 $newSubmenu->addChild('vignette_alert_templates', ['route' => 'app_admin_vignette_alert_template_index'])->setLabel('Alert templates')->setLabelAttribute('icon''bell');
  185.                 $newSubmenu->addChild('vignette_maintenances', ['route' => 'app_admin_vignette_maintenance_index'])->setLabel('Maintenance')->setLabelAttribute('icon''cog');
  186.                 $newSubmenu->addChild('onesignal', ['route' => 'app_admin_onesignal_index'])->setLabel('Onesignal')->setLabelAttribute('icon''signal');
  187.                 $newSubmenu->addChild('alert_classification', ['route' => 'app_admin_alert_classification_index'])->setLabel('Alert Classification')->setLabelAttribute('icon''envelope');
  188.                 $newSubmenu->addChild('templates', ['route' => 'app_admin_template_index'])->setLabel('Templates')->setLabelAttribute('icon''edit');
  189.                 $subMenu $menu->getChild('catalog')->setLabel('Sylius Administration');
  190.                 $subMenu->removeChild('inventory');
  191.                 $subMenu $menu->getChild('sales');
  192.                 $subMenu->removeChild('payments');
  193.                 $subMenu $menu->getChild('configuration');
  194.                 $subMenu->addChild('app_admin_product_status', ['route' => 'app_admin_product_status'])->setLabel('Status Produse')->setLabelAttribute('icon''star');
  195.                 $subMenu->addChild('app_admin_template_status', ['route' => 'app_admin_template_status'])->setLabel('Status Template')->setLabelAttribute('icon''handshake');
  196.                 $subMenu->addChild('app_admin_campaign_status', ['route' => 'app_admin_campaign_status'])->setLabel('Status Campanii')->setLabelAttribute('icon''handshake');
  197.                 $subMenu->addChild('app_admin_payment_status', ['route' => 'app_admin_payment_status'])->setLabel('Status Metode de plata')->setLabelAttribute('icon''cart');
  198.                 $subMenu->addChild('app_admin_messages_translate_index', ['route' => 'app_admin_messages_translate_index'])->setLabel('Messages Translate')->setLabelAttribute('icon''language');
  199.                 $subMenu->removeChild('channels');
  200.                 $subMenu->removeChild('zones');
  201.                 $subMenu->removeChild('currencies');
  202.                 $subMenu->removeChild('exchange_rates');
  203.                 $subMenu->removeChild('payment_methods');
  204.                 $subMenu->removeChild('tax_categories');
  205.                 $subMenu->removeChild('tax_rates');
  206.                 $subMenu->removeChild('shipping_categories');
  207.                 $subMenu $menu->getChild('customers');
  208.                 $subMenu->addChild('customer_list', ['route' => 'app_admin_customer_list_index'])->setLabel('Lista Clienti')->setLabelAttribute('icon''list');
  209.                 $subMenu->addChild('app_admin_customer_commercial_template_index', ['route' => 'app_admin_customer_commercial_template_index'])->setLabel('Template-uri Commerciale')->setLabelAttribute('icon''star');
  210.                 $subMenu->addChild('app_admin_customer_log_customer_notification_index', ['route' => 'app_admin_customer_log_customer_notification_index'])->setLabel('Istoric Notificari Clienti')->setLabelAttribute('icon''history');
  211.                 $subMenu->addChild('app_admin_customer_commercial_notification', ['route' => 'app_admin_customer_commercial_notification'])->setLabel('Acord Comercial')->setLabelAttribute('icon''handshake');
  212.                 $subMenu->addChild('app_admin_customer_tracker_activity', ['route' => 'app_admin_customer_tracker_activity'])->setLabel('Tracker Clienti')->setLabelAttribute('icon''eye');
  213.                 $subMenu->removeChild('groups');
  214.                 $subMenu $menu->getChild('sales');
  215.                 $subMenu->addChild('custom_orders', ['route' => 'app_admin_export_order_by_sms_view'])->setLabel('Export Comenzi SMS')->setLabelAttribute('icon''download');
  216.                 $subMenu->addChild('admin_report_products', ['route' => 'admin_report_products'])->setLabel('Raport produse')->setLabelAttribute('icon''list');
  217.                 $subMenu->addChild('admin_report_order_products', ['route' => 'admin_report_order_products'])->setLabel('Raport comenzi produse')->setLabelAttribute('icon''list');
  218.                 $subMenu->addChild('admin_report_order_products_logs', ['route' => 'admin_report_order_products_logs'])->setLabel('Loguri import confirmare incasare')->setLabelAttribute('icon''list');
  219.                 $menu->removeChild('marketing');
  220.                 $newSubmenu $menu->addChild('vehicles')->setLabel('Vehicule');
  221.                 $newSubmenu->addChild('app_admin_export_vehicles', ['route' => 'app_admin_export_vehicles'])->setLabel('Export Vehicule')->setLabelAttribute('icon''download');
  222.                 $newSubmenu $menu->addChild('partner')->setLabel('Parteneri');
  223.                 $newSubmenu->addChild('partners', ['route' => 'app_admin_partner_index'])->setLabel('Parteneri')->setLabelAttribute('icon''handshake');
  224.                 $newSubmenu->addChild('partners_roles', ['route' => 'app_admin_partner_role_index'])->setLabel('Roluri')->setLabelAttribute('icon''user');
  225.                 $menu->reorderChildren(array(
  226.                     => 'ro_vignette',
  227.                     => 'hu_vignette',
  228.                     => 'rca',
  229.                     => 'road_assistance',
  230.                     => 'license_recovery',
  231.                     => 'telemedicine',
  232.                     => 'death_insurance',
  233.                     => 'partner',
  234.                     => 'administration',
  235.                     10 => 'sales',
  236.                     11 => 'vehicles',
  237.                     12 => 'customers',
  238.                     13 => 'options',
  239.                     14 => 'configuration',
  240.                     15 => 'bitbag_cms',
  241.                     16 => 'catalog'
  242.                 ));
  243.                 break;
  244.         }
  245.         if ($rolesArray) {
  246.             foreach ($menu as $subMenu) {
  247.                 if (!in_array($subMenu->getName(), $rolesArray)) {
  248.                     $menu->removeChild($subMenu->getName());
  249.                 }
  250.                 foreach ($subMenu as $child) {
  251.                     if (!in_array($child->getName(), $rolesArray)) {
  252.                         $subMenu->removeChild($child->getName());
  253.                     }
  254.                 }
  255.             }
  256.         }
  257.     }
  258. }