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', 'facturas', [], 'fa-solid fa-file-invoice-dollar');
  47. $facturas->addChild(new MenuItemModel('facturasId', 'Facturas Recibidas', 'facturas', [], '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. $vacaciones = new MenuItemModel('vacacionesId', 'Vacaciones', 'vacaciones', [], 'fa-solid fa-calendar');
  56. $nominas = new MenuItemModel('nominasId', 'Nominas', 'nominas', [], 'fa-solid fa-file-invoice-dollar');
  57. $vistaSolicitudes = new MenuItemModel('vistaSolicitudesId', 'Vacaciones solicitadas', 'app_vista_solicitudes', [], 'fa-solid fa-calendar-check');
  58. // $items [] = $presupuesto;
  59. // $items [] = $producto;
  60. // $items [] = $facturas;
  61. // $items [] = $mesas;
  62. // $items [] = $caja;
  63. // $items [] = $dashboard;
  64. // $items [] = $stock;
  65. // $items [] = $proveedores;
  66. $items[] = $personal;
  67. // $items [] = $cocina;
  68. // $items [] = $estadisticas;
  69. // $items [] = $ventas;
  70. // $items [] = $reservas;
  71. // $items [] = $tienda;
  72. $items [] = $vacaciones;
  73. $items[] = $vistaSolicitudes;
  74. $items [] = $nominas;
  75. $items [] = $ajustes;
  76. $items [] = $logout;
  77. foreach ($items as $item) {
  78. $event->addItem($item);
  79. }
  80. $this->activateByRoute(
  81. $event->getRequest()->get('_route'),
  82. $event->getItems()
  83. );
  84. }
  85. /**
  86. * @param string $route
  87. * @param MenuItemModel[] $items
  88. */
  89. protected function activateByRoute($route, $items)
  90. {
  91. foreach ($items as $item) {
  92. if ($item->hasChildren()) {
  93. $this->activateByRoute($route, $item->getChildren());
  94. } elseif ($item->getRoute() == $route) {
  95. $item->setIsActive(true);
  96. }
  97. }
  98. }
  99. }