src/EventSubscriber/MenuBuilderSubscriber.php line 31

Open in your IDE?
  1. <?php
  2. // src/EventSubscriber/MenuBuilderSubscriber.php
  3. namespace App\EventSubscriber;
  4. use KevinPapst\AdminLTEBundle\Event\SidebarMenuEvent;
  5. use KevinPapst\AdminLTEBundle\Model\MenuItemModel;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  8. class MenuBuilderSubscriber implements EventSubscriberInterface
  9. {
  10. private $urlGenerator;
  11. public function __construct(UrlGeneratorInterface $urlGenerator)
  12. {
  13. $this->urlGenerator = $urlGenerator;
  14. }
  15. public static function getSubscribedEvents(): array
  16. {
  17. return [
  18. SidebarMenuEvent::class => ['onSetupMenu', 100],
  19. ];
  20. }
  21. /**
  22. * Generate the main menu.
  23. *
  24. * @param SidebarMenuEvent $event
  25. */
  26. public function onSetupMenu(SidebarMenuEvent $event)
  27. {
  28. $logoutUrl = $this->urlGenerator->generate('fos_user_security_logout');
  29. $items = [];
  30. $dashboard = new MenuItemModel('dashboardId', 'Dashboard', 'dashboard', [], 'fas fa-tachometer-alt');
  31. $stock = new MenuItemModel('stockId', 'Stock', 'stock', [], 'fas fa-boxes');
  32. $proveedores = new MenuItemModel('proveedoresId', 'Clientes', 'proveedores', [], 'fas fa-handshake');
  33. $personal = new MenuItemModel('personalId', 'Personal', 'personal', [], 'fas fa-users');
  34. $personal->addChild(new MenuItemModel('fihajeId', 'Fichaje', 'fichaje', [], 'fa-solid fa-clock'))
  35. ->addChild(new MenuItemModel('personalId', 'Registro', 'personal', [], 'fa-solid fa-book'));
  36. $estadisticas = new MenuItemModel('estadisticasId', 'Estadísticas', 'estadisticas', [], 'fas fa-chart-line');
  37. $estadisticas->addChild(new MenuItemModel('comidaId', 'Estadística Comida', 'statscomida', [], 'fa-solid fa-chart-pie'))
  38. ->addChild(new MenuItemModel('bebidaId', 'Estadística Bebida', 'statsbebida', [], 'fa-solid fa-chart-pie'))
  39. ->addChild(new MenuItemModel('comensalesId', 'Estadística Comensales', 'statscomensales', [], 'fa-solid fa-chart-pie'));
  40. $ventas = new MenuItemModel('ventasId', 'Ventas', 'ventas', [], 'fas fa-euro-sign');
  41. $cocina = new MenuItemModel('cocinaId', 'Cocina', 'app_cocina', [], 'fas fa-fire-burner');
  42. $mesas = new MenuItemModel('mesasId', 'Mesas', 'mesas', [], 'fas fa-utensils');
  43. $caja = new MenuItemModel('cajaId', 'Caja', 'caja', [], 'fa-solid fa-cash-register');
  44. $tienda = new MenuItemModel('tiendaId', 'Tienda', 'productostienda', [], 'fa-solid fa-cart-shopping');
  45. $reservas = new MenuItemModel('reservasId', 'Reservas', 'reservas', [], 'fa-solid fa-calendar-days');
  46. $facturas = new MenuItemModel('facturasId', 'Facturas', '', [], 'fa-solid fa-file-invoice-dollar');
  47. $facturas->addChild(new MenuItemModel('facturasId', 'Facturas Recibidas', 'facturasrecibidas', [], 'fa-solid fa-file-import'))
  48. ->addChild(new MenuItemModel('tickettofacturaId', 'Facturas Emitidas', 'tickettofactura', [], 'fa-solid fa-file-export'));
  49. $ajustes = new MenuItemModel('ajustesId', 'Ajustes', 'app_ajustes', [], 'fa-solid fa-gears');
  50. $ajustes->addChild(new MenuItemModel('ajustesId', 'Gestión Usuarios', 'app_ajustes', [], 'fa-solid fa-user-group'))
  51. ->addChild(new MenuItemModel('ajustesAvanzadosId', 'Información del negocio', 'ajustesavanzados', [], 'fa-solid fa-sliders'));
  52. $logout = new MenuItemModel('logoutId', 'Logout', $logoutUrl, [], 'fas fa-sign-out-alt');
  53. $presupuesto = new MenuItemModel('presupuestoId', 'Presupuesto', 'presupuesto', [], 'fa-solid fa-clipboard');
  54. $producto = new MenuItemModel('productoId', 'Productos', 'producto', [], 'fas fa-boxes');
  55. $albaran = new MenuItemModel('albaranId', 'Albaranes', 'albaran', [], 'fa-regular fa-clipboard');
  56. $mensualidades = new MenuItemModel('mensualidadesId', 'Mensualidades', 'mensualidades', [], 'fa-solid fa-calendar-check');
  57. $items [] = $presupuesto;
  58. $items [] = $albaran;
  59. $items [] = $producto;
  60. $items [] = $facturas;
  61. $items [] = $mensualidades;
  62. // $items [] = $mesas;
  63. // $items [] = $caja;
  64. // $items [] = $dashboard;
  65. // $items [] = $stock;
  66. $items [] = $proveedores;
  67. $items [] = $personal;
  68. // $items [] = $cocina;
  69. // $items [] = $estadisticas;
  70. $items [] = $ventas;
  71. // $items [] = $reservas;
  72. // $items [] = $tienda;
  73. $items [] = $ajustes;
  74. $items [] = $logout;
  75. foreach ($items as $item) {
  76. $event->addItem($item);
  77. }
  78. $this->activateByRoute(
  79. $event->getRequest()->get('_route'),
  80. $event->getItems()
  81. );
  82. }
  83. /**
  84. * @param string $route
  85. * @param MenuItemModel[] $items
  86. */
  87. protected function activateByRoute($route, $items)
  88. {
  89. foreach ($items as $item) {
  90. if ($item->hasChildren()) {
  91. $this->activateByRoute($route, $item->getChildren());
  92. } elseif ($item->getRoute() == $route) {
  93. $item->setIsActive(true);
  94. }
  95. }
  96. }
  97. }