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