src/Controller/Admin/DashboardBaseController.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Entity\Article;
  4. use App\Entity\Center;
  5. use App\Entity\Log;
  6. use App\Entity\PactGroup;
  7. use App\Entity\Reader;
  8. use App\Entity\Service;
  9. use App\Entity\User;
  10. use App\Entity\Warehouse;
  11. use App\Service\Article\ArticleService as ArticleService;
  12. use App\Service\Center\CenterService;
  13. use App\Service\Service\ServiceService;
  14. use App\Service\Warehouse\WarehouseService;
  15. use App\Util\StateOrderWarehouse;
  16. use App\Util\UserRole;
  17. use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
  18. use EasyCorp\Bundle\EasyAdminBundle\Config\Assets;
  19. use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
  20. use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
  21. use EasyCorp\Bundle\EasyAdminBundle\Config\UserMenu;
  22. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
  23. use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
  24. use Symfony\Component\HttpFoundation\Response;
  25. use Symfony\Component\Security\Core\User\UserInterface;
  26. use Symfony\Contracts\Translation\TranslatorInterface;
  27. abstract class DashboardBaseController extends AbstractDashboardController
  28. {
  29.     use UserRole;
  30.     use StateOrderWarehouse;
  31.     protected TranslatorInterface $translator;
  32.     protected AdminUrlGenerator $adminUrlGenerator;
  33.     protected CenterService $centerService;
  34.     protected WarehouseService $warehouseService;
  35.     protected ServiceService $serviceService;
  36.     protected ArticleService $articleService;
  37.     public function __construct(
  38.         TranslatorInterface $translator,
  39.         AdminUrlGenerator $adminUrlGenerator,
  40.         CenterService $centerService,
  41.         WarehouseService $warehouseService,
  42.         ServiceService $serviceService,
  43.         ArticleService $articleService
  44.     ) {
  45.         $this->translator $translator;
  46.         $this->adminUrlGenerator $adminUrlGenerator;
  47.         $this->centerService $centerService;
  48.         $this->warehouseService $warehouseService;
  49.         $this->serviceService $serviceService;
  50.         $this->articleService $articleService;
  51.     }
  52.     public function configureDashboard(): Dashboard
  53.     {
  54.         return Dashboard::new()
  55.             ->setTitle('')
  56.             ->setFaviconPath('images/favicon.png');
  57.     }
  58.     public function configureAssets(): Assets
  59.     {
  60.         return Assets::new()
  61.             ->addCssFile('css/admin.css');
  62.     }
  63.     public function configureMenuItems(): iterable
  64.     {
  65.         return [
  66.             MenuItem::linktoDashboard('Dashboard''fa fa-home'),
  67.             MenuItem::subMenu($this->translator->trans('menu.order-warehouse.order'), 'fas fa-pallet')->setSubItems([
  68.                 MenuItem::linkToUrl($this->translator->trans('menu.order-warehouse.new'), 'fas fa-pallet'$this->getUrlNewOrdersWarehouse($this->pendingStatus)),
  69.                 MenuItem::linkToUrl($this->translator->trans('menu.order-warehouse.pending'), 'fas fa-hourglass-start'$this->getUrlOrdersWarehouseByState($this->pendingStatus)),
  70.                 MenuItem::linkToUrl($this->translator->trans('menu.order-warehouse.validated'), 'fas fa-check-circle'$this->getUrlOrdersWarehouseByState($this->validatedStatus)),
  71.                 MenuItem::linkToUrl($this->translator->trans('menu.order-warehouse.issued'), 'fas fa-share'$this->getUrlOrdersWarehouseByState($this->issuedStatus)),
  72.                 MenuItem::linkToUrl($this->translator->trans('menu.order-warehouse.processed'), 'fas fa-list'$this->getUrlOrdersWarehouseByState($this->processedStatus)),
  73.                 MenuItem::linkToUrl($this->translator->trans('menu.order-warehouse.canceled'), 'fas fa-window-close'$this->getUrlOrdersWarehouseByState($this->canceledStatus)),
  74.             ]),
  75.             MenuItem::linkToCrud($this->translator->trans('menu.center'), 'fas fa-hospital'Center::class),
  76.             MenuItem::linkToCrud($this->translator->trans('menu.warehouse'), 'fas fa-warehouse'Warehouse::class),
  77.             MenuItem::linkToCrud($this->translator->trans('menu.service'), 'fas fa-stethoscope'Service::class),
  78.             MenuItem::linkToCrud($this->translator->trans('menu.article'), 'fas fa-syringe'Article::class),
  79.             MenuItem::linkToCrud($this->translator->trans('menu.pact'), 'fas fa-handshake'PactGroup::class),
  80.             MenuItem::linkToRoute($this->translator->trans('menu.navigation-map'), 'fas fa-sitemap''navigation_map'),
  81.             MenuItem::subMenu($this->translator->trans('menu.label.title'), 'fa fa-file-alt')->setSubItems([
  82.                 MenuItem::linkToRoute($this->translator->trans('menu.label.reel'), 'fas fa-dot-circle''label_template', ['type' => 'reel'])->setPermission($this->roleAdmin),
  83.                 MenuItem::linkToRoute($this->translator->trans('menu.label.a4'), 'fas fa-file''label_template', ['type' => 'a4'])->setPermission($this->roleAdmin),
  84.             ]),
  85.             MenuItem::subMenu($this->translator->trans('menu.utilities.title'), 'fa fa-file-upload')->setSubItems([
  86.                 MenuItem::linkToRoute($this->translator->trans('menu.utilities.article-import'), 'fas fa-syringe''article_import')->setPermission($this->roleAdmin),
  87.                 MenuItem::linkToRoute($this->translator->trans('menu.utilities.location-import'), 'fas fa-map-marker-alt''location_import')->setPermission($this->roleAdmin),
  88.                 MenuItem::linkToRoute($this->translator->trans('menu.utilities.pact-import'), 'fas fa-handshake''pact_import')->setPermission($this->roleAdmin),
  89.             ]),
  90.             MenuItem::subMenu($this->translator->trans('menu.configuration.title'), 'fa fa-cog')->setSubItems([
  91.                 MenuItem::linkToCrud($this->translator->trans('menu.configuration.user'), 'fa fa-user'User::class)->setPermission($this->roleSuperAdmin),
  92.                 MenuItem::linkToRoute($this->translator->trans('menu.configuration.rfid'), 'fas fa-broadcast-tower''assign-rfid-location')->setPermission($this->roleService),
  93.                 MenuItem::linkToCrud($this->translator->trans('menu.configuration.reader'), 'fas fa-bezier-curve'Reader::class),
  94.                 MenuItem::linkToRoute($this->translator->trans('menu.configuration.appointment'), 'fas fa-clock''program_appointments'),
  95.                 MenuItem::linkToCrud($this->translator->trans('menu.configuration.log'), 'fa fa-list'Log::class)->setPermission($this->roleSuperAdmin),
  96.                 MenuItem::linkToRoute($this->translator->trans('menu.configuration.help-editor'), 'fas fa-question-circle''help_page')->setPermission($this->roleSuperAdmin),
  97.             ]),
  98.             MenuItem::linkToRoute($this->translator->trans('menu.help'), 'fas fa-question-circle''help_page_index'),
  99.         ];
  100.     }
  101.     public function configureUserMenu(UserInterface $user): UserMenu
  102.     {
  103.         $profileUrl $this->adminUrlGenerator
  104.             ->unsetAll()
  105.             ->setController(UserCrudController::class)
  106.             ->setAction(Action::EDIT)
  107.             ->setEntityId($user->getId())
  108.             ->generateUrl();
  109.         return parent::configureUserMenu($user)
  110.             ->setName($user->getUsername())
  111.             ->displayUserAvatar(false)
  112.             ->addMenuItems([
  113.                 MenuItem::linkToUrl($this->translator->trans('user_menu.profile'), 'fa fa-id-card'$profileUrl),
  114.             ]);
  115.     }
  116.     public function index(): Response
  117.     {
  118.         $centers $this->centerService->getAllCentersByUser($this->getUser());
  119.         $warehouses $this->warehouseService->getAllWarehousesByUser($this->getUser());
  120.         $articles $this->articleService->getAllArticlesByUser($this->getUser());
  121.         $services $this->serviceService->getAllServicesByUser($this->getUser());
  122.         $showGraph = !in_array($this->roleService$this->getUser()->getRoles());
  123.         return $this->render('admin/dashboard/welcome.html.twig', ['centers' => $centers'articles' => $articles'warehouses' => $warehouses'services' => $services'showGraph' => $showGraph]);
  124.     }
  125.     protected function getUrlNewOrdersWarehouse(string $state)
  126.     {
  127.         return $this->adminUrlGenerator
  128.             ->unsetAll()
  129.             ->setController(OrderCrudController::class)
  130.             ->setAction(Action::NEW)
  131.             ->setAll([
  132.                 'state' => $state,
  133.                 'menuIndex' => '1',
  134.                 'submenuIndex' => '0',
  135.             ])
  136.             ->generateUrl();
  137.     }
  138.     protected function getUrlOrdersWarehouseByState(string $state)
  139.     {
  140.         return $this->adminUrlGenerator
  141.             ->unsetAll()
  142.             ->setController(OrderCrudController::class)
  143.             ->setAction(Action::INDEX)
  144.             ->setAll([
  145.                 'state' => $state,
  146.                 'menuIndex' => '1',
  147.                 'submenuIndex' => $this->getPositionSubmenu($state),
  148.             ])
  149.             ->generateUrl();
  150.     }
  151.     protected function getPositionSubmenu(string $state): ?int
  152.     {
  153.         switch ($state) {
  154.             case $this->pendingStatus:
  155.                 return 1;
  156.             case $this->validatedStatus:
  157.                 return 2;
  158.             case $this->issuedStatus:
  159.                 return 3;
  160.             case $this->processedStatus:
  161.                 return 4;
  162.             case $this->canceledStatus:
  163.                 return 5;
  164.         }
  165.         return null;
  166.     }
  167. }