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\CmcmRequest;
  8. use PaperKite\Common\Entity\Company;
  9. use PaperKite\Common\Entity\Department;
  10. use PaperKite\Common\Entity\DocumentType;
  11. use PaperKite\Common\Entity\DossierType;
  12. use PaperKite\Common\Entity\FailedInquiryImport;
  13. use PaperKite\Common\Entity\HealthInsurance;
  14. use PaperKite\Common\Entity\HealthMutual;
  15. use PaperKite\Common\Entity\SportFederation;
  16. use PaperKite\Common\Entity\SubscriptionPlan;
  17. use PaperKite\Common\Entity\Support\DocumentGeneratorCallbackInfo;
  18. use PaperKite\Common\Entity\Support\Placeholder;
  19. use PaperKite\Common\Entity\Support\PredefinedMessage;
  20. use PaperKite\Common\Entity\Support\PredefinedTemplate;
  21. use PaperKite\CompanyApi\Entity\CompanyUser;
  22. use PaperKite\EmployeeApi\Entity\Employee;
  23. use PaperKite\EmployeeApi\Entity\EmployeeInterface;
  24. use PaperKite\ExchangeApi\Entity\ExchangeApiUser;
  25. use PaperKite\HealthMutualApi\Entity\HealthMutualUser;
  26. use PaperKite\Log\Entity\AuditLog;
  27. use PaperKite\MyCmcmApi\Entity\FaqEntry;
  28. use PaperKite\MyCmcmApi\Entity\MyCmcmRequestCategory;
  29. use PaperKite\MyCmcmApi\Entity\MyCmcmUser;
  30. use PaperKite\MyCmcmApi\Entity\MyCmcmUserInvitation;
  31. use PaperKite\MyCmcmApi\Entity\Page;
  32. use PaperKite\MyCmcmApi\Entity\SliderItem;
  33. use PaperKite\MyCmcmApi\Entity\TicketTopic;
  34. use PaperKite\PublicApi\Entity\PublicApiUser;
  35. use Symfony\Component\HttpFoundation\Response;
  36. use Symfony\Component\Routing\Annotation\Route;
  37. use Symfony\Component\Security\Core\User\UserInterface;
  38. class DashboardController extends AbstractDashboardController
  39. {
  40.     public function __construct(
  41.         private string $appUrl,
  42.         private string $companyExtranetUrl,
  43.         private string $mutualExtranetUrl,
  44.         private string $myCmcmAppUrl,
  45.     ) {
  46.     }
  47.     #[Route(path'/'name'admin_dashboard')]
  48.     public function index(): Response
  49.     {
  50.         //        $this->genericDocumentStoreAdapter->postFile(
  51.         //            new UploadedFile(__DIR__ . '/../../../data/sample.pdf', 'test2.pdf', 'application/pdf'),
  52.         //            'test2.pdf',
  53.         //            'FACTURE_PF_10',
  54.         //            'FACTURE_PF',
  55.         //            [
  56.         //                'numero_affiliation' => 'A-test000',
  57.         //                'numero_identification' => 'P-test000',
  58.         //            ],
  59.         //            'testing purpost',
  60.         //        );
  61.         //        $this->genericDocumentStoreAdapter->putFile(
  62.         //            'FACTURE_PF_10',
  63.         //            new UploadedFile(__DIR__ . '/../../../data/certificates/mariage.pdf', 'mariage.pdf', 'application/pdf'),
  64.         //        );
  65.         //        $this->genericDocumentStoreAdapter->deleteFile('FACTURE_PF_10');
  66.         return $this->render('admin/dashboard.html.twig');
  67.     }
  68.     public function configureDashboard(): Dashboard
  69.     {
  70.         return Dashboard::new()
  71.             ->setTitle(
  72.                 <<<EOT
  73. <img src="/cmcm-logo.svg">
  74. <span style="display: block; padding: 10px 0; text-align: center; color: #0033A0;">Admin Tool</span>
  75. EOT
  76.             )
  77.             ->setTranslationDomain('admin')
  78.             ->setFaviconPath('/favicon.ico')
  79.             ->renderContentMaximized(true);
  80.     }
  81.     public function configureMenuItems(): iterable
  82.     {
  83.         yield MenuItem::linkToDashboard('Dashboard''fa fa-home');
  84.         yield MenuItem::linkToUrl('Paperkite app''fa fa-mobile-alt'$this->appUrl)
  85.             ->setLinkTarget('_blank');
  86.         yield MenuItem::linkToUrl('Company extranet''fa fa-building'$this->companyExtranetUrl)
  87.             ->setLinkTarget('_blank');
  88.         yield MenuItem::linkToUrl('Mutual extranet''fa fa-hospital'$this->mutualExtranetUrl)
  89.             ->setLinkTarget('_blank');
  90.         yield MenuItem::linkToUrl('MyCMCM app''fa fa-user'$this->myCmcmAppUrl)
  91.             ->setLinkTarget('_blank');
  92.         if ($this->isGranted('ROLE_CMCM_ADMIN')) {
  93.             yield MenuItem::section('Configuration');
  94.             if ($this->isGranted('ROLE_ADMIN_EMPLOYEE_CRUD')) {
  95.                 yield MenuItem::linkToCrud('employees''fa fa-users'Employee::class);
  96.             }
  97.             if ($this->isGranted('ROLE_ADMIN_DEPARTMENT_CRUD')) {
  98.                 yield MenuItem::linkToCrud('departments''fa fa-building'Department::class);
  99.             }
  100.             if ($this->isGranted('ROLE_ADMIN_DOSSIER_TYPE_CRUD')) {
  101.                 yield MenuItem::linkToCrud('dossier_types''fa fa-folder'DossierType::class);
  102.             }
  103.             if ($this->isGranted('ROLE_ADMIN_DOCUMENT_TYPE_CRUD')) {
  104.                 yield MenuItem::linkToCrud('document_type.title''fa fa-folder'DocumentType::class);
  105.             }
  106.             yield MenuItem::linkToCrud('subscription_plans''fa fa-euro-sign'SubscriptionPlan::class);
  107.             yield MenuItem::linkToCrud('health_mutuals''fa fa-hospital'HealthMutual::class);
  108.             yield MenuItem::linkToCrud('health_mutual_users''fa fa-hospital-user'HealthMutualUser::class);
  109.             yield MenuItem::linkToCrud('federations''fa fa-futbol-o'SportFederation::class);
  110.             yield MenuItem::linkToCrud('health_insurances''fa fa-notes-medical'HealthInsurance::class);
  111.             yield MenuItem::linkToCrud('companies''fa fa-building'Company::class);
  112.             yield MenuItem::linkToCrud('company_users''fa fa-building-user'CompanyUser::class);
  113.             yield MenuItem::linkToCrud('mycmcm_users''fa fa-user'MyCmcmUser::class);
  114.             yield MenuItem::linkToCrud('mycmcm_user_invitation''fa fa-user-plus'MyCmcmUserInvitation::class);
  115.         }
  116.         if ($this->isGranted('ROLE_ADMIN_SUPPORT')) {
  117.             yield MenuItem::section('Support');
  118.             if ($this->isGranted('ROLE_ADMIN_PREDEFINED_TEMPLATE_CRUD')) {
  119.                 yield MenuItem::linkToCrud('predefined_templates''fa fa-file'PredefinedTemplate::class);
  120.             }
  121.             if ($this->isGranted('ROLE_ADMIN_PREDEFINED_MESSAGE_CRUD')) {
  122.                 yield MenuItem::linkToCrud('predefined_messages''fa fa-file'PredefinedMessage::class);
  123.             }
  124.             if ($this->isGranted('ROLE_ADMIN_PLACEHOLDER_CRUD')) {
  125.                 yield MenuItem::linkToCrud('placeholders''fa fa-file'Placeholder::class);
  126.             }
  127.             yield MenuItem::linkToCrud('ticket_topics''fa fa-clipboard-list'TicketTopic::class);
  128.         }
  129.         if ($this->isGranted('ROLE_ADMIN_MARKETING')) {
  130.             yield MenuItem::section('MyCMCM content');
  131.             if ($this->isGranted('ROLE_ADMIN_SLIDER_CRUD')) {
  132.                 yield MenuItem::linkToCrud('slider''fa fa-image'SliderItem::class);
  133.             }
  134.         }
  135.         if ($this->isGranted('ROLE_CMCM_ADMIN')) {
  136.             yield MenuItem::linkToCrud('request_categories''fa fa-folder-tree'MyCmcmRequestCategory::class);
  137.             yield MenuItem::linkToCrud('pages''fa fa-file-lines'Page::class);
  138.             yield MenuItem::linkToCrud('faq''fa fa-question'FaqEntry::class);
  139.         }
  140.         if ($this->isGranted('ROLE_CMCM_ADMIN')) {
  141.             yield MenuItem::section('IT');
  142.             yield MenuItem::linkToCrud('Audit logs''fa fa-road-barrier'AuditLog::class);
  143.             yield MenuItem::linkToCrud('Failed Inquiry Imports''fa fa-exclamation-triangle'FailedInquiryImport::class)
  144.                 ->setPermission('ROLE_ADMIN');
  145.             yield MenuItem::linkToCrud('Incomplete Document Generation''fa fa-file-exclamation'CmcmRequest::class)
  146.                 ->setController(IncompleteDocumentGenerationCrudController::class)
  147.                 ->setPermission('ROLE_ADMIN');
  148.             yield MenuItem::linkToCrud('Message Document generator info''fa fa-road-barrier'DocumentGeneratorCallbackInfo::class);
  149.             yield MenuItem::linkToRoute('Messenger queue''fa fa-road-barrier''admin_messenger_messages');
  150.         }
  151.         if ($this->isGranted('ROLE_SUPER_ADMIN')) {
  152.             yield MenuItem::linkToRoute('Api doc''fa fa-book''employee_show_apidoc')
  153.                 ->setLinkTarget('_blank');
  154.             yield MenuItem::linkToUrl('Openapi doc''fa fa-book-atlas''/openapi/index.html')
  155.                 ->setLinkTarget('_blank');
  156.             yield MenuItem::linkToRoute('Add inquiry'' fa fa-ban''admin_inquiry_new');
  157.             yield MenuItem::linkToCrud('Public API user''fa fa-user-secret'PublicApiUser::class);
  158.             yield MenuItem::linkToCrud('Exchange API user''fa fa-user-secret'ExchangeApiUser::class);
  159.             yield MenuItem::linkToRoute('Feature testing'' fa fa-ban''admin_feature_test');
  160.             if ('prod' !== $this->getParameter('kernel.environment')) {
  161.                 yield MenuItem::linkToCrud('Cmcm request'' fa fa-ban'CmcmRequest::class)
  162.                     ->setController(CmcmRequestCrudController::class);
  163.             }
  164.         }
  165.     }
  166.     public function configureUserMenu(UserInterface $user): UserMenu
  167.     {
  168.         $userMenu parent::configureUserMenu($user);
  169.         if ($user instanceof EmployeeInterface) {
  170.             $userMenu->setName($user->getFirstName() ?? $user->getUserIdentifier())
  171.                 ->displayUserName(true)
  172.                 ->setAvatarUrl($user->getAvatarImageUrl() ?? '');
  173.         }
  174.         return $userMenu;
  175.     }
  176. }