src/Admin/Controller/DashboardController.php line 45

Open in your IDE?
  1. <?php
  2. namespace PaperKite\Admin\Controller;
  3. use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
  4. use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
  5. use EasyCorp\Bundle\EasyAdminBundle\Config\UserMenu;
  6. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
  7. use PaperKite\Common\Entity\Company;
  8. use PaperKite\Common\Entity\Department;
  9. use PaperKite\Common\Entity\DocumentType;
  10. use PaperKite\Common\Entity\DossierType;
  11. use PaperKite\Common\Entity\HealthInsurance;
  12. use PaperKite\Common\Entity\HealthMutual;
  13. use PaperKite\Common\Entity\SportFederation;
  14. use PaperKite\Common\Entity\SubscriptionPlan;
  15. use PaperKite\Common\Entity\Support\MessageDocumentGeneratorInfo;
  16. use PaperKite\Common\Entity\Support\Placeholder;
  17. use PaperKite\Common\Entity\Support\PredefinedMessage;
  18. use PaperKite\Common\Entity\Support\PredefinedTemplate;
  19. use PaperKite\Common\Entity\Tariff;
  20. use PaperKite\CompanyApi\Entity\CompanyUser;
  21. use PaperKite\EmployeeApi\Entity\Employee;
  22. use PaperKite\EmployeeApi\Entity\EmployeeInterface;
  23. use PaperKite\HealthMutualApi\Entity\HealthMutualUser;
  24. use PaperKite\Log\Entity\AuditLog;
  25. use PaperKite\MyCmcmApi\Entity\FaqEntry;
  26. use PaperKite\MyCmcmApi\Entity\InquiryCategory;
  27. use PaperKite\MyCmcmApi\Entity\MyCmcmUser;
  28. use PaperKite\MyCmcmApi\Entity\Page;
  29. use PaperKite\MyCmcmApi\Entity\SliderItem;
  30. use PaperKite\MyCmcmApi\Entity\TicketTopic;
  31. use Symfony\Component\HttpFoundation\Response;
  32. use Symfony\Component\Routing\Annotation\Route;
  33. use Symfony\Component\Security\Core\User\UserInterface;
  34. class DashboardController extends AbstractDashboardController
  35. {
  36.     public function __construct(
  37.         private string $appUrl,
  38.     ) {
  39.     }
  40.     #[Route(path'/'name'admin_dashboard')]
  41.     public function index(): Response
  42.     {
  43.         return $this->render('admin/dashboard.html.twig');
  44.     }
  45.     public function configureDashboard(): Dashboard
  46.     {
  47.         return Dashboard::new()
  48.             ->setTitle(
  49.                 <<<EOT
  50. <img src="/cmcm-logo.svg">
  51. <span style="display: block; padding: 10px 0; text-align: center; color: #0033A0;">Admin Tool</span>
  52. EOT
  53.             )
  54.             ->setTranslationDomain('admin')
  55.             ->setFaviconPath('/favicon.ico')
  56.             ->renderContentMaximized(true);
  57.     }
  58.     public function configureMenuItems(): iterable
  59.     {
  60.         yield MenuItem::linkToDashboard('Dashboard''fa fa-home');
  61.         yield MenuItem::linkToUrl('Paperkite app''fa fa-mobile-alt'$this->appUrl)
  62.             ->setLinkTarget('_blank');
  63.         if ($this->isGranted('ROLE_CMCM_ADMIN')) {
  64.             yield MenuItem::section('Configuration');
  65.             if ($this->isGranted('ROLE_ADMIN_EMPLOYEE_CRUD')) {
  66.                 yield MenuItem::linkToCrud('employees''fa fa-users'Employee::class);
  67.             }
  68.             if ($this->isGranted('ROLE_ADMIN_DEPARTMENT_CRUD')) {
  69.                 yield MenuItem::linkToCrud('departments''fa fa-building'Department::class);
  70.             }
  71.             if ($this->isGranted('ROLE_ADMIN_DOSSIER_TYPE_CRUD')) {
  72.                 yield MenuItem::linkToCrud('dossier_types''fa fa-folder'DossierType::class);
  73.             }
  74.             if ($this->isGranted('ROLE_ADMIN_DOCUMENT_TYPE_CRUD')) {
  75.                 yield MenuItem::linkToCrud('document_type.title''fa fa-folder'DocumentType::class);
  76.             }
  77.             if ($this->isGranted('ROLE_ADMIN_TARIFF_CRUD')) {
  78.                 yield MenuItem::linkToCrud('Tariffs''fa fa-coins'Tariff::class);
  79.             }
  80.             yield MenuItem::linkToCrud('subscription_plans''fa fa-euro-sign'SubscriptionPlan::class);
  81.             yield MenuItem::linkToCrud('health_mutuals''fa fa-hospital'HealthMutual::class);
  82.             yield MenuItem::linkToCrud('health_mutual_users''fa fa-hospital-user'HealthMutualUser::class);
  83.             yield MenuItem::linkToCrud('federations''fa fa-futbol-o'SportFederation::class);
  84.             yield MenuItem::linkToCrud('health_insurances''fa fa-notes-medical'HealthInsurance::class);
  85.             yield MenuItem::linkToCrud('companies''fa fa-building'Company::class);
  86.             yield MenuItem::linkToCrud('company_users''fa fa-building-user'CompanyUser::class);
  87.             yield MenuItem::linkToCrud('mycmcm_users''fa fa-user'MyCmcmUser::class);
  88.         }
  89.         if ($this->isGranted('ROLE_ADMIN_SUPPORT')) {
  90.             yield MenuItem::section('Support');
  91.             if ($this->isGranted('ROLE_ADMIN_PREDEFINED_TEMPLATE_CRUD')) {
  92.                 yield MenuItem::linkToCrud('predefined_templates''fa fa-file'PredefinedTemplate::class);
  93.             }
  94.             if ($this->isGranted('ROLE_ADMIN_PREDEFINED_MESSAGE_CRUD')) {
  95.                 yield MenuItem::linkToCrud('predefined_messages''fa fa-file'PredefinedMessage::class);
  96.             }
  97.             if ($this->isGranted('ROLE_ADMIN_PLACEHOLDER_CRUD')) {
  98.                 yield MenuItem::linkToCrud('placeholders''fa fa-file'Placeholder::class);
  99.             }
  100.             yield MenuItem::linkToCrud('ticket_topics''fa fa-clipboard-list'TicketTopic::class);
  101.         }
  102.         if ($this->isGranted('ROLE_ADMIN_MARKETING')) {
  103.             yield MenuItem::section('MyCMCM content');
  104.             if ($this->isGranted('ROLE_ADMIN_SLIDER_CRUD')) {
  105.                 yield MenuItem::linkToCrud('slider''fa fa-image'SliderItem::class);
  106.             }
  107.         }
  108.         if ($this->isGranted('ROLE_CMCM_ADMIN')) {
  109.             yield MenuItem::linkToCrud('inquiry_categories''fa fa-tag'InquiryCategory::class);
  110.             yield MenuItem::linkToCrud('pages''fa fa-file-lines'Page::class);
  111.             yield MenuItem::linkToCrud('faq''fa fa-question'FaqEntry::class);
  112.         }
  113.         if ($this->isGranted('ROLE_CMCM_ADMIN')) {
  114.             yield MenuItem::section('IT');
  115.             yield MenuItem::linkToCrud('Audit logs''fa fa-road-barrier'AuditLog::class);
  116.             yield MenuItem::linkToCrud('Message Document generator info''fa fa-road-barrier'MessageDocumentGeneratorInfo::class);
  117.             yield MenuItem::linkToRoute('Messenger queue''fa fa-road-barrier''admin_messenger_messages');
  118.         }
  119.         if ($this->isGranted('ROLE_SUPER_ADMIN')) {
  120.             yield MenuItem::linkToRoute('Api doc''fa fa-book''employee_show_apidoc')
  121.                 ->setLinkTarget('_blank');
  122.             yield MenuItem::linkToUrl('Openapi doc''fa fa-book-atlas''/openapi/index.html')
  123.                 ->setLinkTarget('_blank');
  124.             yield MenuItem::linkToRoute('Add inquiry'' fa fa-ban''admin_inquiry_new');
  125.         }
  126.     }
  127.     public function configureUserMenu(UserInterface $user): UserMenu
  128.     {
  129.         $userMenu parent::configureUserMenu($user);
  130.         if ($user instanceof EmployeeInterface) {
  131.             $userMenu->setName($user->getFirstName() ?? $user->getUserIdentifier())
  132.                 ->displayUserName(true)
  133.                 ->setAvatarUrl($user->getAvatarImageUrl() ?? '')
  134.             ;
  135.         }
  136.         return $userMenu;
  137.     }
  138. }