src/Controller/Admin/DashboardController.php line 52

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Entity\Client;
  4. use App\Entity\ElementSettings;
  5. use App\Entity\FenceColorDictionary;
  6. use App\Entity\FenceElementDictionary;
  7. use App\Entity\FenceOffer;
  8. use App\Entity\Settings;
  9. use App\Repository\ClientRepository;
  10. use App\Repository\UserRepository;
  11. use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
  12. use EasyCorp\Bundle\EasyAdminBundle\Config\Assets;
  13. use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
  14. use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
  15. use EasyCorp\Bundle\EasyAdminBundle\Config\UserMenu;
  16. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use Symfony\Component\Routing\Annotation\Route;
  19. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  20. use App\Repository\FenceOfferRepository;
  21. use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
  22. use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
  23. use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
  24. use App\Entity\User;
  25. use Symfony\Component\Security\Core\User\UserInterface;
  26. class DashboardController extends AbstractDashboardController
  27. {
  28.     private $userRepository;
  29.     private $fenceOfferRepository;
  30.     private $clientRepository;
  31.     private $adminUrlGenerator;
  32.     public function __construct(UserRepository $userRepositoryFenceOfferRepository $fenceOfferRepositoryClientRepository $clientRepositoryAdminUrlGenerator $adminUrlGenerator)
  33.     {
  34.         $this->userRepository $userRepository;
  35.         $this->fenceOfferRepository $fenceOfferRepository;
  36.         $this->clientRepository $clientRepository;
  37.         $this->adminUrlGenerator $adminUrlGenerator;
  38.     }
  39.     #[IsGranted('ROLE_ADMIN_EASY_ADMIN')]
  40.     #[Route('/admin'name'admin')]
  41.     public function index(): Response
  42.     {
  43.         return $this->redirect($this->adminUrlGenerator->setController(ClientCrudController::class)->generateUrl());
  44. ////        $users = $this->userRepository->findBy([], ['id' => 'DESC'], 3);
  45. //        $offers = $this->fenceOfferRepository->findBy([], ['id' => 'DESC'], 3);
  46. //        $clients = $this->clientRepository->findBy([], ['id' => 'DESC'], 3);
  47. //        return $this->render('admin/index.html.twig', [
  48. ////            'users' => $users,
  49. //            'offers' => $offers,
  50. //            'clients' => $clients,
  51. //        ]);
  52.     }
  53.     public function configureDashboard(): Dashboard
  54.     {
  55.         return Dashboard::new()
  56.             ->disableDarkMode()
  57.             ->setTitle('Falcon system');
  58.     }
  59.     public function configureUserMenu(UserInterface $user): UserMenu
  60.     {
  61.         return parent::configureUserMenu($user)
  62.             ->setName($user->getFirstName() . ' - ' $user->getEmail());
  63.     }
  64.     public function configureMenuItems(): iterable
  65.     {
  66. //        yield MenuItem::linkToUrl('Home page', 'fa fa-link', '/');
  67. //        yield MenuItem::linkToDashboard('Dashboard', 'fa fa-dashboard');
  68.         yield MenuItem::section('Clients');
  69.         yield MenuItem::linkToCrud('Clients''fas fa-users'Client::class);
  70.         yield MenuItem::section('Offer');
  71.         yield MenuItem::linkToCrud('Fence Offer''fas fa-rectangle-list'FenceOffer::class);
  72.         yield MenuItem::section('Offer settings')->setPermission('ROLE_SYSTEM_CONFIG');
  73.         yield MenuItem::linkToCrud('Custom colors''fas fa-gears'null::class)
  74.             ->setAction('fenceColorDictionaryPage')
  75.             ->setController(FenceColorDictionaryCrudController::class)
  76.             ->setPermission('ROLE_SYSTEM_CONFIG');
  77.         yield MenuItem::section('Quotation settings')->setPermission('ROLE_SYSTEM_CONFIG');
  78.         yield MenuItem::linkToCrud('Elements settings''fas fa-gears'ElementSettings::class)
  79.             ->setPermission('ROLE_SYSTEM_CONFIG');
  80.         yield MenuItem::linkToCrud('General settings''fas fa-gear'null::class)
  81.             ->setAction('generalSettings')
  82.             ->setController(SettingsCrudController::class)
  83.             ->setPermission('ROLE_SYSTEM_CONFIG');
  84.         yield MenuItem::linkToCrud('Predefined items''fas fa-gear'null::class)
  85.             ->setAction('predefinedItemsPage')
  86.             ->setController(PredefnedItemsCrudController::class)
  87.             ->setPermission('ROLE_SYSTEM_CONFIG');
  88.         yield MenuItem::linkToCrud('Elements Descriptions''fas fa-gear'null::class)
  89.             ->setAction('elementsDescriptions')
  90.             ->setController(SettingsCrudController::class)
  91.             ->setPermission('ROLE_SYSTEM_CONFIG');
  92.         yield MenuItem::section('Admin');
  93.         yield MenuItem::linkToCrud('Users''fas fa-users'User::class);
  94. //        yield MenuItem::linkToCrud('Fence Color Dictionary', 'fas fa-palette', FenceColorDictionary::class);
  95. //        yield MenuItem::linkToCrud('Fence Element Dictionary', 'fas fa-xmark', FenceElementDictionary::class);
  96.     }
  97.     public function configureActions(): Actions
  98.     {
  99.         return parent::configureActions()
  100.             ->add(Crud::PAGE_INDEXAction::DETAIL)
  101.             ->add(Crud::PAGE_NEWAction::INDEX);
  102.     }
  103.     public function configureAssets(): Assets
  104.     {
  105.         return parent::configureAssets()
  106.             ->addWebpackEncoreEntry('admin');
  107.     }
  108.     public function configureCrud(): Crud
  109.     {
  110.         return parent::configureCrud()
  111.             ->setDefaultSort([
  112.                 'id' => 'DESC'
  113.             ])
  114.             ->showEntityActionsInlined();
  115.     }
  116. }