src/Controller/Admin/DashboardController.php line 57

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Entity\Article;
  4. use App\Entity\ArticleCategorie;
  5. use App\Entity\ArticleCritere;
  6. use App\Entity\ArticleCritereValeur;
  7. use App\Entity\ArticleType;
  8. use App\Entity\Formulaire;
  9. use App\Entity\FormulaireChamp;
  10. use App\Entity\FormulaireInput;
  11. use App\Entity\FormulaireRecap;
  12. use App\Entity\Page;
  13. use App\Entity\Projet;
  14. use App\Entity\User;
  15. use App\Entity\Combi;
  16. use App\Entity\UserRole;
  17. use App\Entity\Groupe;
  18. use App\Entity\Objet;
  19. use App\Entity\Section;
  20. use Doctrine\Persistence\ManagerRegistry;
  21. use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
  22. use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
  23. use EasyCorp\Bundle\EasyAdminBundle\Config\Assets;
  24. use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
  25. use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
  26. use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
  27. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
  28. use EasyCorp\Bundle\EasyAdminBundle\Provider\AdminContextProvider;
  29. use Flasher\SweetAlert\Prime\SweetAlertFactory;
  30. use Symfony\Component\HttpFoundation\Response;
  31. use Symfony\Component\Routing\Annotation\Route;
  32. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  33. class DashboardController extends AbstractDashboardController
  34. {
  35.     private ManagerRegistry $manager;
  36.     private $adminContextProvider;
  37.     private SweetAlertFactory $flasher;
  38.     public function __construct(
  39.         ManagerRegistry $manager,
  40.         AdminContextProvider $adminContextProvider,
  41.         SweetAlertFactory $flasher
  42.     ) {
  43.         $this->manager $manager;
  44.         $this->adminContextProvider $adminContextProvider;
  45.         $this->flasher $flasher;
  46.     }
  47.     /**
  48.      * @Security("is_granted('ROLE_SUPER_ADMIN') or is_granted('ROLE_UTILISATEUR') ")
  49.      * @Route("/admin", name="admin")
  50.      */
  51.     public function index(): Response
  52.     {
  53.         /* return parent::index(); */
  54.         $projects $this->manager->getRepository(Projet::class)->findAll();
  55.         return $this->render('admin/index.html.twig', ['projects' => $projects,]);
  56.     }
  57.     public function configureDashboard(): Dashboard
  58.     {
  59.         return Dashboard::new()
  60.             ->setTitle('Devil It Applications');
  61.     }
  62.     public function configureMenuItems(): iterable
  63.     {
  64.         $article false;
  65.         $page false;
  66.         $formulaire false;
  67.         $objet false;
  68.         $combi false;
  69.         $projet false;
  70.         $param_article false;
  71.         $utilisateur false;
  72.         $import_export false;
  73.         $droits false;
  74.         $p null;
  75.         $bool false;
  76.         $userRoles $this->getUser()->getUserRoles();
  77.         if (!$this->isGranted('ROLE_SUPER_ADMIN')) {
  78.             if (count($userRoles) == 0) {
  79.                 $this->getUser()->setProjet(null);
  80.                 yield MenuItem::linkToRoute(strtoupper($this->getUser()->getProjet()), 'fa fa-check''app_admin_change_project')->setCssClass('menu-header mb-3');
  81.             } else {
  82.                 foreach ($userRoles as $r) {
  83.                     $p $r->getProjet();
  84.                     if ($p == $this->getUser()->getProjet()) {
  85.                         $bool true;
  86.                     }
  87.                 }
  88.                 if ($bool) {
  89.                     yield MenuItem::linkToRoute(strtoupper($this->getUser()->getProjet()), 'fa fa-check''app_admin_change_project')->setCssClass('menu-header mb-3');
  90.                 } else {
  91.                     yield MenuItem::linkToRoute('''fa fa-check''app_admin_change_project')->setCssClass('menu-header mb-3');
  92.                 }
  93.             }
  94.         } else {
  95.             yield MenuItem::linkToRoute(strtoupper($this->getUser()->getProjet()), 'fa fa-check''app_admin_change_project')->setCssClass('menu-header mb-3');
  96.         }
  97.         yield MenuItem::linkToDashboard('Tableau de bord''fa fa-dashboard');
  98.         if ($this->getUser()->getProjet() != null) {
  99.             if ($this->isGranted('ROLE_SUPER_ADMIN')) {
  100.                 $article true;
  101.                 $page true;
  102.                 $formulaire true;
  103.                 $objet true;
  104.                 $combi true;
  105.                 $projet true;
  106.                 $param_article true;
  107.                 $utilisateur true;
  108.                 $import_export true;
  109.                 $droits true;
  110.             } else {
  111.                 $user $this->getUser();
  112.                 $project $user->getProjet();
  113.                 $roles $this->manager->getRepository(UserRole::class)->findBy(['user' => $user'projet' => $project]);
  114.                 foreach ($roles as $role) {
  115.                     $r_user $role->getGroupe();
  116.                     $label $r_user->getLabel();
  117.                     if ($label == 'ROLE_ADMIN') {
  118.                         $page true;
  119.                         $article true;
  120.                         $formulaire true;
  121.                         $objet true;
  122.                         $projet true;
  123.                         $combi true;
  124.                         $param_article true;
  125.                         $utilisateur true;
  126.                         $import_export true;
  127.                         $droits true;
  128.                     }
  129.                     if ($r_user->getPage()) {
  130.                         $page true;
  131.                     }
  132.                     if ($r_user->getArticle()) {
  133.                         $article true;
  134.                     }
  135.                     if ($r_user->getFormulaire()) {
  136.                         $formulaire true;
  137.                     }
  138.                     if ($r_user->getObjet()) {
  139.                         $objet true;
  140.                     }
  141.                     if ($r_user->getCombi()) {
  142.                         $combi true;
  143.                     }
  144.                     if ($r_user->getProjet()) {
  145.                         $projet true;
  146.                     }
  147.                     if ($r_user->getParamArticle()) {
  148.                         $param_article true;
  149.                     }
  150.                     if ($r_user->getUtilisateur()) {
  151.                         $utilisateur true;
  152.                     }
  153.                     if ($r_user->getImportExport()) {
  154.                         $import_export true;
  155.                     }
  156.                 }
  157.             }
  158.             /**************** Page************************************************/
  159.             if ($page) {
  160.                 yield MenuItem::section('Redaction''fa fa-keyboard');
  161.                 yield MenuItem::linkToCrud('Page''fa fa-map'Page::class);
  162.             }
  163.             /**************** Article************************************************/
  164.             $types $this->manager->getRepository(ArticleType::class)->findBy(['projet' => $this->getUser()->getProjet()->getId()]);
  165.             if ($article) {
  166.                 if (count($types) > 0) {
  167.                     foreach ($types as $type) {
  168.                         if ($type->getIcon() != null && $type->getIcon() != '') {
  169.                             yield MenuItem::linkToCrud($type->getType(), $type->getIcon(), Article::class)->setQueryParameter('typeid'$type->getId());
  170.                         } else {
  171.                             yield MenuItem::linkToCrud($type->getType(), 'fa fa-newspaper'Article::class)->setQueryParameter('typeid'$type->getId());
  172.                         }
  173.                     }
  174.                 }
  175.             }
  176.             /**************** Paramètrage Article************************************************/
  177.             if ($param_article) {
  178.                 yield MenuItem::section('Paramétrage Article''');
  179.                 yield MenuItem::linkToCrud('Type''fa fa-columns'ArticleType::class);
  180.                 if (count($types) > 0) {
  181.                     foreach ($types as $type) {
  182.                         if ($type->getIcon() != null && $type->getIcon() != '') {
  183.                             yield MenuItem::subMenu($type->getType(), $type->getIcon())->setSubItems([
  184.                                 MenuItem::linkToCrud('Categorie''fa fa-layer-group'ArticleCategorie::class)->setQueryParameter('typeid'$type->getId()),
  185.                                 MenuItem::linkToCrud('Critère''fa fa-paperclip'ArticleCritere::class)->setQueryParameter('typeid'$type->getId()),
  186.                                 MenuItem::linkToCrud('Valeur Critère''fa fa-hashtag'ArticleCritereValeur::class)->setQueryParameter('typeid'$type->getId()),
  187.                             ]);
  188.                         } else {
  189.                             yield MenuItem::subMenu($type->getType(), 'fa fa-pager')->setSubItems([
  190.                                 MenuItem::linkToCrud('Categorie''fa fa-layer-group'ArticleCategorie::class)->setQueryParameter('typeid'$type->getId()),
  191.                                 MenuItem::linkToCrud('Critère''fa fa-paperclip'ArticleCritere::class)->setQueryParameter('typeid'$type->getId()),
  192.                                 MenuItem::linkToCrud('Valeur Critère''fa fa-hashtag'ArticleCritereValeur::class)->setQueryParameter('typeid'$type->getId()),
  193.                             ]);
  194.                         }
  195.                     }
  196.                 }
  197.             }
  198.             /**************** Formulaire************************************************/
  199.             if ($formulaire) {
  200.                 yield MenuItem::section('Formulaire''');
  201.                 yield MenuItem::linkToCrud('Formulaire''fa fa-file-contract'Formulaire::class);
  202.                 yield MenuItem::linkToCrud('Input''fa fa-bars'FormulaireInput::class);
  203.                 yield MenuItem::linkToCrud('Recap''fa fa-id-card'FormulaireRecap::class);
  204.                 yield MenuItem::linkToCrud('Champs''fa fa-clipboard-list'FormulaireChamp::class);
  205.             }
  206.             /*******************************************/
  207.             if (($objet) || ($combi)) {
  208.                 yield MenuItem::section('Contenu''');
  209.             }
  210.             /*******************************************/
  211.             /**************** Combi************************************************/
  212.             if ($combi) {
  213.                 yield MenuItem::linkToCrud('Combi''fa fa-sitemap'Combi::class);
  214.             }
  215.             /****************Objet************************************************/
  216.             if ($objet) {
  217.                 // yield MenuItem::linkToDashboard('Objet', 'fa fa-object-ungroup');
  218.                 yield MenuItem::linkToCrud('Objet''fa fa-object-group'Objet::class);
  219.                 // yield MenuItem::linkToCrud('config Objet', 'fa fa-object-ungroup', Objet::class)->setPermission('ROLE_OBJET');
  220.                 yield MenuItem::linkToCrud('Code Section''fa fa-vector-square'Section::class);
  221.             }
  222.             /*******************************************/
  223.             if (($projet) || ($utilisateur) || ($import_export)) {
  224.                 yield MenuItem::section('Paramétrage''');
  225.             }
  226.             /*******************************************/
  227.             /**************** Import--Export ************************************************/
  228.             if ($import_export) {
  229.                 yield MenuItem::linkToRoute('Import / Export''fa fa-file-csv''app_import_export');
  230.             }
  231.             /**************** Projet************************************************/
  232.             if ($projet) {
  233.                 yield MenuItem::linkToCrud('Projets''fa fa-lightbulb'Projet::class);
  234.             }
  235.             /**************** Utilisateurs************************************************/
  236.             if ($utilisateur) {
  237.                 yield MenuItem::linkToCrud('Utilisateurs''fas fa-users'User::class);
  238.             }
  239.         }
  240.         if ($droits) {
  241.             yield MenuItem::section('Droits''');
  242.             yield MenuItem::linkToCrud('Groupe''fa fa-users'Groupe::class);
  243.             yield MenuItem::linkToCrud('User Role''fas fa-id-badge'UserRole::class);
  244.         }
  245.         yield MenuItem::section('Personnel''');
  246.         yield MenuItem::linkToDashboard('Changer mot de passe''fa fa-key');
  247.         yield MenuItem::linkToLogout('Déconnecter''fa fa-fw fa-sign-out');
  248.     }
  249.     public function configureAssets(): Assets
  250.     {
  251.         return parent::configureAssets()
  252.             ->addCssFile('node_modules/bootstrap-icons/font/bootstrap-icons.css')
  253.             ->addCssFile('node_modules/datatables.net-dt/css/jquery.dataTables.min.css')
  254.             ->addCssFile('css/trixcss.css')
  255.             ->addJsFile('node_modules/jquery/dist/jquery.js')
  256.             ->addJsFile('node_modules/datatables.net/js/jquery.dataTables.min.js')
  257.             ->addJsFile('js/trixjs.js')
  258.             ->addCssFile('css/admin-dashboard.css');
  259.     }
  260.     public function configureActions(): Actions
  261.     {
  262.         return parent::configureActions()
  263.             ->update(Crud::PAGE_NEWAction::SAVE_AND_ADD_ANOTHER, function (Action $action) {
  264.                 return $action->addCssClass('btn-success');
  265.             })
  266.             ->update(Crud::PAGE_EDITAction::SAVE_AND_CONTINUE, function (Action $action) {
  267.                 return $action->addCssClass('btn-success');
  268.             })
  269.             ->update(Crud::PAGE_INDEXAction::EDIT, function (Action $action) {
  270.                 return $action->setLabel('Modifier');
  271.             });
  272.     }
  273. }