src/Controller/Project/ProjetCrudController.php line 601

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Project;
  3. use App\Entity\Projet;
  4. use App\Entity\User;
  5. use App\Entity\UserRole;
  6. use App\Service\ProjetCSVService;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Doctrine\ORM\QueryBuilder;
  9. use Doctrine\Persistence\ManagerRegistry;
  10. use EasyCorp\Bundle\EasyAdminBundle\Collection\FieldCollection;
  11. use EasyCorp\Bundle\EasyAdminBundle\Collection\FilterCollection;
  12. use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
  13. use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
  14. use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
  15. use EasyCorp\Bundle\EasyAdminBundle\Context\AdminContext;
  16. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
  17. use EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto;
  18. use EasyCorp\Bundle\EasyAdminBundle\Dto\SearchDto;
  19. use EasyCorp\Bundle\EasyAdminBundle\Field\BooleanField;
  20. use EasyCorp\Bundle\EasyAdminBundle\Field\DateField;
  21. use EasyCorp\Bundle\EasyAdminBundle\Field\EmailField;
  22. use EasyCorp\Bundle\EasyAdminBundle\Field\FormField;
  23. use EasyCorp\Bundle\EasyAdminBundle\Field\IntegerField;
  24. use EasyCorp\Bundle\EasyAdminBundle\Field\TextareaField;
  25. use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
  26. use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
  27. use Flasher\SweetAlert\Prime\SweetAlertFactory;
  28. class ProjetCrudController extends AbstractCrudController
  29. {
  30.     private SweetAlertFactory $flasher;
  31.     private AdminUrlGenerator $adminUrlGenerator;
  32.     private ProjetCSVService $csvService;
  33.     public function __construct(
  34.         AdminUrlGenerator $adminUrlGenerator,
  35.         SweetAlertFactory $flasher,
  36.         ProjetCSVService $csvService,
  37.         ManagerRegistry $manager,
  38.         EntityManagerInterface $entityManager
  39.     ) {
  40.         $this->flasher $flasher;
  41.         $this->adminUrlGenerator $adminUrlGenerator;
  42.         $this->csvService $csvService;
  43.         $this->manager $manager;
  44.         $this->entityManager $entityManager;
  45.     }
  46.     public static function getEntityFqcn(): string
  47.     {
  48.         return Projet::class;
  49.     }
  50.     public function configureFields(string $pageName): iterable
  51.     {
  52.         if ($this->isGranted('ROLE_SUPER_ADMIN')) {
  53.             return [
  54.                 FormField::addTab('General'),
  55.                 TextField::new('projet')->stripTags()->hideOnDetail()->setColumns('col-sm-6 col-lg-5 col-xxl-6'),
  56.                 DateField::new('dateDebut')->setColumns('col-sm-6 col-lg-3 col-xxl-2')->hideOnIndex(),
  57.                 DateField::new('dateFin')->setColumns('col-sm-6 col-lg-3 col-xxl-2'),
  58.                 BooleanField::new('switchEnLigne')->setLabel('Passer en ligne')->setColumns('col-sm-6 col-lg-3 col-xxl-2'),
  59.                 FormField::addPanel('')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
  60.                 TextareaField::new('remarque')->setColumns('col-sm-6 col-lg-6 col-xxl-12')->hideOnIndex(),
  61.                 FormField::addPanel('')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
  62.                 IntegerField::new('nbrPage')->setColumns('col-sm-12 col-lg-4 col-xxl-12')->hideOnIndex()->setLabel('Nombre de pages proposé'),
  63.                 IntegerField::new('nbrArticle')->setColumns('col-sm-12 col-lg-4 col-xxl-12')->hideOnIndex()->setLabel('Nombre d\'arcticles proposé'),
  64.                 IntegerField::new('nbrMainNav')->setColumns('col-sm-12 col-lg-4 col-xxl-12')->hideOnIndex()->setLabel('Nombre proposé de menus principaux'),
  65.                 // Home
  66.                 FormField::addTab('Home'),
  67.                 TextField::new('homeTitlePrefix')->setRequired(true)->setHelp('Home Title (avant le "|" = Titre du projet)')->setColumns('col-sm-12 col-lg-12 col-xxl-6')->hideOnIndex(),
  68.                 TextField::new('homeTitleSuffix')->setRequired(true)->setHelp('Home Title (après le "|")')->setColumns('col-sm-12 col-lg-12 col-xxl-6')->hideOnIndex(),
  69.                 FormField::addRow(),
  70.                 TextareaField::new('homeDescription')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-6')->hideOnIndex(),
  71.                 TextareaField::new('homeKeywords')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-6')->hideOnIndex(),
  72.                 // Logo
  73.                 FormField::addTab('Logo')->hideWhenCreating(),
  74.                 TextField::new('logo')
  75.                     ->addCssClass('pe-3')
  76.                     ->addCssClass('projectLogoGallery')
  77.                     ->setColumns('col-sm-6 col-lg-6 col-xxl-6')
  78.                     ->hideOnIndex()
  79.                     ->hideWhenCreating(),
  80.                 TextField::new('logoVertical')
  81.                     ->addCssClass('pe-3')
  82.                     ->addCssClass('projectLogoVerticalGallery')
  83.                     ->setColumns('col-sm-6 col-lg-6 col-xxl-6')
  84.                     ->hideOnIndex()
  85.                     ->hideWhenCreating(),
  86.                 TextField::new('logoDark')
  87.                     ->addCssClass('pe-3')
  88.                     ->addCssClass('projectLogoDarkGallery')
  89.                     ->setColumns('col-sm-6 col-lg-6 col-xxl-6')
  90.                     ->hideOnIndex()
  91.                     ->hideWhenCreating(),
  92.                 TextField::new('logoVerticalDark')
  93.                     ->addCssClass('pe-3')
  94.                     ->addCssClass('projectLogoDarkVerticalGallery')
  95.                     ->setColumns('col-sm-6 col-lg-6 col-xxl-6')
  96.                     ->hideOnIndex()
  97.                     ->hideWhenCreating(),
  98.                 TextField::new('logoFavicon')
  99.                     ->setHelp('Logo FavIcon (icon)')
  100.                     ->addCssClass('pe-3')
  101.                     ->addCssClass('projectLogoFaviconGallery')
  102.                     ->setColumns('col-sm-12 col-md-6 col-lg-6 col-xxl-6')
  103.                     ->hideOnIndex()
  104.                     ->hideWhenCreating(),
  105.                 TextField::new('logoOpenGraph')
  106.                     ->setHelp('Logo Open Graph (image jpeg de dimension 360 / 360) nom = "logo-open-graph"')
  107.                     ->addCssClass('pe-3')
  108.                     ->addCssClass('projectLogoOpenGraphGallery')
  109.                     ->setColumns('col-sm-12 col-md-6 col-lg-6 col-xxl-6')
  110.                     ->hideOnIndex()
  111.                     ->hideWhenCreating(),
  112.                 TextField::new('logoPdf')
  113.                     // ->setLabel('Logo Open Graph (image jpeg de dimension 360 / 360) nom = "logo-open-graph"')
  114.                     ->addCssClass('pe-3')
  115.                     ->addCssClass('projectLogoPdfGallery')
  116.                     ->setColumns('col-sm-12 col-md-6 col-lg-6 col-xxl-6')
  117.                     ->hideOnIndex()
  118.                     ->hideWhenCreating(),
  119.                 // Serveur Local
  120.                 FormField::addTab('Serveur Local'),
  121.                 FormField::addPanel('Serveur Image')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
  122.                 TextField::new('imageFtpServer')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  123.                 TextField::new('imageHttpServer')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  124.                 TextField::new('imageFtpLogin')->setColumns('col-sm-6 col-lg-6 col-xxl-6')->hideOnIndex(),
  125.                 TextField::new('imageFtpMdp')->setColumns('col-sm-6 col-lg-6 col-xxl-6')->hideOnIndex(),
  126.                 FormField::addPanel('Serveur Web')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
  127.                 TextField::new('webFtpServer')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  128.                 TextField::new('webFtpLogin')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  129.                 TextField::new('webFtpMdp')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  130.                 // PARAM mysql
  131.                 FormField::addPanel('Parametrage database'),
  132.                 TextField::new('databaseUrl')
  133.                     ->setHelp('Database Url exple: "mysql://root:@127.0.0.1:3306/nomBaseDeDonnee?serverVersion=10.4.20-MariaDB&charset=utf8mb4"')
  134.                     ->setColumns('col-sm-12 col-lg-12 col-xxl-12')
  135.                     ->hideOnIndex(),
  136.                 // Serveur En Ligne
  137.                 FormField::addTab('Serveur En Ligne'),
  138.                 FormField::addPanel('Serveur Image')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
  139.                 TextField::new('imageFtpServerEnligne')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  140.                 TextField::new('imageHttpServerEnligne')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  141.                 TextField::new('imageFtpLoginEnligne')->setColumns('col-sm-6 col-lg-6 col-xxl-6')->hideOnIndex(),
  142.                 TextField::new('imageFtpMdpEnligne')->setColumns('col-sm-6 col-lg-6 col-xxl-6')->hideOnIndex(),
  143.                 FormField::addPanel('Serveur Web')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
  144.                 TextField::new('webFtpServerEnligne')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  145.                 TextField::new('webFtpLoginEnligne')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  146.                 TextField::new('webFtpMdpEnligne')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  147.                 // PARAM 
  148.                 FormField::addPanel('Parametrage database En ligne'),
  149.                 TextField::new('databaseUrlEnligne')
  150.                     ->setHelp('Database Url En ligne exple: "mysql://devilinf44551688:motPasse@devilinf44551688.mysql.db:3306/devilinf44551688"')
  151.                     ->setColumns('col-sm-12 col-lg-12 col-xxl-12')
  152.                     ->hideOnIndex(),
  153.                 // Contact
  154.                 FormField::addTab('Contact'),
  155.                 FormField::addPanel('Contact 1')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
  156.                 TextField::new('contact1Label')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  157.                 TextField::new('contact1Tel')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  158.                 EmailField::new('contact1Email')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  159.                 TextField::new('contact1Adresse')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  160.                 TextField::new('contact1Remarque')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  161.                 FormField::addPanel('Contact 2')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
  162.                 TextField::new('contact2Label')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  163.                 TextField::new('contact2Tel')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  164.                 EmailField::new('contact2Email')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  165.                 TextField::new('contact2Adresse')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  166.                 TextField::new('contact2Remarque')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  167.                 FormField::addPanel('Contact 3')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
  168.                 TextField::new('contact3Label')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  169.                 TextField::new('contact3Tel')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  170.                 EmailField::new('contact3Email')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  171.                 TextField::new('contact3Adresse')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  172.                 TextField::new('contact3Remarque')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  173.                 // SMTP & SMS
  174.                 FormField::addTab('SMTP & SMS'),
  175.                 TextField::new('smtpServer')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  176.                 IntegerField::new('smtpPort')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  177.                 TextField::new('smtpLogin')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  178.                 TextField::new('smtpMdp')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  179.                 FormField::addPanel('Email')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
  180.                 TextField::new('smtpEmailApiKey')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  181.                 TextField::new('emailSender')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  182.                 TextField::new('emailRecipient')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  183.                 FormField::addPanel('SMS')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
  184.                 TextField::new('smsApiKey')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  185.                 TextField::new('smsSender')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  186.                 //Google
  187.                 FormField::addTab('Google'),
  188.                 FormField::addPanel('Recaptcha')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
  189.                 TextField::new('recaptchaSiteKey')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  190.                 TextField::new('recaptchaProjectId')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  191.                 TextField::new('recaptchaConfigFile')
  192.                     ->addCssClass('setrecaptchafile')
  193.                     ->setColumns('col-sm-12 col-lg-12 col-xxl-12')
  194.                     ->hideOnIndex()
  195.                     ->hideWhenCreating(),
  196.                 FormField::addPanel('Analytics')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
  197.                 TextareaField::new('googleAnalytics')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  198.             ];
  199.         } else {
  200.             $activate false;
  201.             $user $this->getUser();
  202.             $project $user->getProjet();
  203.             $roles $this->manager->getRepository(UserRole::class)->findBy(['user' => $user'projet' => $project]);
  204.             foreach ($roles as $role) {
  205.                 $groupe $role->getGroupe();
  206.                 $label $groupe->getLabel();
  207.                 if ($label == 'ROLE_ADMIN') {
  208.                     $activate true;
  209.                 }
  210.             }
  211.             if ($activate) {
  212.                 return [
  213.                     FormField::addTab('General'),
  214.                     TextField::new('projet')->stripTags()->hideOnDetail()->setColumns('col-sm-6 col-lg-5 col-xxl-6'),
  215.                     DateField::new('dateDebut')->setColumns('col-sm-6 col-lg-3 col-xxl-2')->hideOnIndex(),
  216.                     DateField::new('dateFin')->setColumns('col-sm-6 col-lg-3 col-xxl-2'),
  217.                     BooleanField::new('switchEnLigne')->setLabel('Passer en ligne')->setColumns('col-sm-6 col-lg-3 col-xxl-2'),
  218.                     FormField::addPanel('')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
  219.                     TextareaField::new('remarque')->setColumns('col-sm-6 col-lg-6 col-xxl-12')->hideOnIndex(),
  220.                     FormField::addPanel('')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
  221.                     IntegerField::new('nbrPage')->setColumns('col-sm-12 col-lg-4 col-xxl-12')->hideOnIndex()->setLabel('Nombre de pages proposé'),
  222.                     IntegerField::new('nbrArticle')->setColumns('col-sm-12 col-lg-4 col-xxl-12')->hideOnIndex()->setLabel('Nombre d\'arcticles proposé'),
  223.                     IntegerField::new('nbrMainNav')->setColumns('col-sm-12 col-lg-4 col-xxl-12')->hideOnIndex()->setLabel('Nombre proposé de menus principaux'),
  224.                     // Home
  225.                     FormField::addTab('Home'),
  226.                     TextField::new('homeTitlePrefix')->setRequired(true)->setHelp('Home Title (avant le "|" = Titre du projet)')->setColumns('col-sm-12 col-lg-12 col-xxl-6')->hideOnIndex(),
  227.                     TextField::new('homeTitleSuffix')->setRequired(true)->setHelp('Home Title (après le "|")')->setColumns('col-sm-12 col-lg-12 col-xxl-6')->hideOnIndex(),
  228.                     FormField::addRow(),
  229.                     TextareaField::new('homeDescription')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-6')->hideOnIndex(),
  230.                     TextareaField::new('homeKeywords')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-6')->hideOnIndex(),
  231.                     // Logo
  232.                     FormField::addTab('Logo')->hideWhenCreating(),
  233.                     TextField::new('logo')
  234.                         ->addCssClass('pe-3')
  235.                         ->addCssClass('projectLogoGallery')
  236.                         ->setColumns('col-sm-6 col-lg-6 col-xxl-6')
  237.                         ->hideOnIndex()
  238.                         ->hideWhenCreating(),
  239.                     TextField::new('logoVertical')
  240.                         ->addCssClass('pe-3')
  241.                         ->addCssClass('projectLogoVerticalGallery')
  242.                         ->setColumns('col-sm-6 col-lg-6 col-xxl-6')
  243.                         ->hideOnIndex()
  244.                         ->hideWhenCreating(),
  245.                     TextField::new('logoDark')
  246.                         ->addCssClass('pe-3')
  247.                         ->addCssClass('projectLogoDarkGallery')
  248.                         ->setColumns('col-sm-6 col-lg-6 col-xxl-6')
  249.                         ->hideOnIndex()
  250.                         ->hideWhenCreating(),
  251.                     TextField::new('logoVerticalDark')
  252.                         ->addCssClass('pe-3')
  253.                         ->addCssClass('projectLogoDarkVerticalGallery')
  254.                         ->setColumns('col-sm-6 col-lg-6 col-xxl-6')
  255.                         ->hideOnIndex()
  256.                         ->hideWhenCreating(),
  257.                     TextField::new('logoFavicon')
  258.                         ->setHelp('Logo FavIcon (icon)')
  259.                         ->addCssClass('pe-3')
  260.                         ->addCssClass('projectLogoFaviconGallery')
  261.                         ->setColumns('col-sm-12 col-md-6 col-lg-6 col-xxl-6')
  262.                         ->hideOnIndex()
  263.                         ->hideWhenCreating(),
  264.                     TextField::new('logoOpenGraph')
  265.                         ->setHelp('Logo Open Graph (image jpeg de dimension 360 / 360) nom = "logo-open-graph"')
  266.                         ->addCssClass('pe-3')
  267.                         ->addCssClass('projectLogoOpenGraphGallery')
  268.                         ->setColumns('col-sm-12 col-md-6 col-lg-6 col-xxl-6')
  269.                         ->hideOnIndex()
  270.                         ->hideWhenCreating(),
  271.                     TextField::new('logoPdf')
  272.                         // ->setLabel('Logo Open Graph (image jpeg de dimension 360 / 360) nom = "logo-open-graph"')
  273.                         ->addCssClass('pe-3')
  274.                         ->addCssClass('projectLogoPdfGallery')
  275.                         ->setColumns('col-sm-12 col-md-6 col-lg-6 col-xxl-6')
  276.                         ->hideOnIndex()
  277.                         ->hideWhenCreating(),
  278.                     // Serveur Local
  279.                     FormField::addTab('Serveur Local'),
  280.                     FormField::addPanel('Serveur Image')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
  281.                     TextField::new('imageFtpServer')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  282.                     TextField::new('imageHttpServer')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  283.                     TextField::new('imageFtpLogin')->setColumns('col-sm-6 col-lg-6 col-xxl-6')->hideOnIndex(),
  284.                     TextField::new('imageFtpMdp')->setColumns('col-sm-6 col-lg-6 col-xxl-6')->hideOnIndex(),
  285.                     FormField::addPanel('Serveur Web')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
  286.                     TextField::new('webFtpServer')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  287.                     TextField::new('webFtpLogin')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  288.                     TextField::new('webFtpMdp')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  289.                     // PARAM mysql
  290.                     FormField::addPanel('Parametrage database'),
  291.                     TextField::new('databaseUrl')
  292.                         ->setHelp('Database Url exple: "mysql://root:@127.0.0.1:3306/nomBaseDeDonnee?serverVersion=10.4.20-MariaDB&charset=utf8mb4"')
  293.                         ->setColumns('col-sm-12 col-lg-12 col-xxl-12')
  294.                         ->hideOnIndex(),
  295.                     // Serveur En Ligne
  296.                     FormField::addTab('Serveur En Ligne'),
  297.                     FormField::addPanel('Serveur Image')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
  298.                     TextField::new('imageFtpServerEnligne')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  299.                     TextField::new('imageHttpServerEnligne')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  300.                     TextField::new('imageFtpLoginEnligne')->setColumns('col-sm-6 col-lg-6 col-xxl-6')->hideOnIndex(),
  301.                     TextField::new('imageFtpMdpEnligne')->setColumns('col-sm-6 col-lg-6 col-xxl-6')->hideOnIndex(),
  302.                     FormField::addPanel('Serveur Web')->addCssClass('col-sm-12 col-lg-6 col-xxl-6'),
  303.                     TextField::new('webFtpServerEnligne')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  304.                     TextField::new('webFtpLoginEnligne')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  305.                     TextField::new('webFtpMdpEnligne')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  306.                     // PARAM 
  307.                     FormField::addPanel('Parametrage database En ligne'),
  308.                     TextField::new('databaseUrlEnligne')
  309.                         ->setHelp('Database Url En ligne exple: "mysql://devilinf44551688:motPasse@devilinf44551688.mysql.db:3306/devilinf44551688"')
  310.                         ->setColumns('col-sm-12 col-lg-12 col-xxl-12')
  311.                         ->hideOnIndex(),
  312.                     // Contact
  313.                     FormField::addTab('Contact'),
  314.                     FormField::addPanel('Contact 1')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
  315.                     TextField::new('contact1Label')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  316.                     TextField::new('contact1Tel')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  317.                     EmailField::new('contact1Email')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  318.                     TextField::new('contact1Adresse')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  319.                     TextareaField::new('contact1Remarque')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  320.                     FormField::addPanel('Contact 2')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
  321.                     TextField::new('contact2Label')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  322.                     TextField::new('contact2Tel')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  323.                     EmailField::new('contact2Email')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  324.                     TextField::new('contact2Adresse')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  325.                     TextareaField::new('contact2Remarque')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  326.                     FormField::addPanel('Contact 3')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
  327.                     TextField::new('contact3Label')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  328.                     TextField::new('contact3Tel')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  329.                     EmailField::new('contact3Email')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  330.                     TextField::new('contact3Adresse')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  331.                     TextareaField::new('contact3Remarque')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  332.                     // SMTP & SMS
  333.                     FormField::addTab('SMTP & SMS'),
  334.                     TextField::new('smtpServer')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  335.                     IntegerField::new('smtpPort')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  336.                     TextField::new('smtpLogin')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  337.                     TextField::new('smtpMdp')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  338.                     FormField::addPanel('Email')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
  339.                     TextField::new('smtpEmailApiKey')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  340.                     TextField::new('emailSender')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  341.                     TextField::new('emailRecipient')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  342.                     FormField::addPanel('SMS')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
  343.                     TextField::new('smsApiKey')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  344.                     TextField::new('smsSender')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  345.                     //Google
  346.                     FormField::addTab('Google'),
  347.                     FormField::addPanel('Recaptcha')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
  348.                     TextField::new('recaptchaSiteKey')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  349.                     TextField::new('recaptchaProjectId')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  350.                     TextField::new('recaptchaConfigFile')
  351.                         ->addCssClass('setrecaptchafile')
  352.                         ->setColumns('col-sm-12 col-lg-12 col-xxl-12')
  353.                         ->hideOnIndex()
  354.                         ->hideWhenCreating(),
  355.                     FormField::addPanel('Analytics')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
  356.                     TextareaField::new('googleAnalytics')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  357.                 ];
  358.             } else {
  359.                 return [
  360.                     TextField::new('projet')
  361.                         ->stripTags()
  362.                         ->hideOnDetail()
  363.                         ->setColumns('col-sm-6 col-lg-5 col-xxl-6')
  364.                         ->onlyOnIndex(),
  365.                     // Home
  366.                     FormField::addTab('Home'),
  367.                     TextField::new('homeTitlePrefix')->setRequired(true)->setHelp('Home Title (avant le "|" = Titre du projet)')->setColumns('col-sm-12 col-lg-12 col-xxl-6'),
  368.                     TextField::new('homeTitleSuffix')->setRequired(true)->setHelp('Home Title (après le "|")')->setColumns('col-sm-12 col-lg-12 col-xxl-6'),
  369.                     FormField::addRow(),
  370.                     TextareaField::new('homeDescription')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-6')->hideOnIndex(),
  371.                     TextareaField::new('homeKeywords')->setRequired(true)->setColumns('col-sm-12 col-lg-12 col-xxl-6')->hideOnIndex(),
  372.                     // Logo
  373.                     FormField::addTab('Logo')->hideWhenCreating(),
  374.                     TextField::new('logo')
  375.                         ->addCssClass('pe-3')
  376.                         ->addCssClass('projectLogoGallery')
  377.                         ->setColumns('col-sm-6 col-lg-6 col-xxl-6')
  378.                         ->hideOnIndex()
  379.                         ->hideWhenCreating(),
  380.                     TextField::new('logoVertical')
  381.                         ->addCssClass('pe-3')
  382.                         ->addCssClass('projectLogoVerticalGallery')
  383.                         ->setColumns('col-sm-6 col-lg-6 col-xxl-6')
  384.                         ->hideOnIndex()
  385.                         ->hideWhenCreating(),
  386.                     TextField::new('logoDark')
  387.                         ->addCssClass('pe-3')
  388.                         ->addCssClass('projectLogoDarkGallery')
  389.                         ->setColumns('col-sm-6 col-lg-6 col-xxl-6')
  390.                         ->hideOnIndex()
  391.                         ->hideWhenCreating(),
  392.                     TextField::new('logoVerticalDark')
  393.                         ->addCssClass('pe-3')
  394.                         ->addCssClass('projectLogoDarkVerticalGallery')
  395.                         ->setColumns('col-sm-6 col-lg-6 col-xxl-6')
  396.                         ->hideOnIndex()
  397.                         ->hideWhenCreating(),
  398.                     TextField::new('logoFavicon')
  399.                         ->setHelp('Logo FavIcon (icon)')
  400.                         ->addCssClass('pe-3')
  401.                         ->addCssClass('projectLogoFaviconGallery')
  402.                         ->setColumns('col-sm-6 col-lg-6 col-xxl-6')
  403.                         ->hideOnIndex()
  404.                         ->hideWhenCreating(),
  405.                     TextField::new('logoOpenGraph')
  406.                         ->setHelp('Logo Open Graph (image jpeg de dimension 360 / 360) nom = "logo-open-graph"')
  407.                         ->addCssClass('pe-3')
  408.                         ->addCssClass('projectLogoOpenGraphGallery')
  409.                         ->setColumns('col-sm-6 col-lg-6 col-xxl-6')
  410.                         ->hideOnIndex()
  411.                         ->hideWhenCreating(),
  412.                     TextField::new('logoPdf')
  413.                         // ->setLabel('Logo Open Graph (image jpeg de dimension 360 / 360) nom = "logo-open-graph"')
  414.                         ->addCssClass('pe-3')
  415.                         ->addCssClass('projectLogoPdfGallery')
  416.                         ->setColumns('col-sm-6 col-lg-6 col-xxl-6')
  417.                         ->hideOnIndex()
  418.                         ->hideWhenCreating(),
  419.                     // Contact
  420.                     FormField::addTab('Contact'),
  421.                     FormField::addPanel('Contact 1')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
  422.                     TextField::new('contact1Label')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  423.                     TextField::new('contact1Tel')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  424.                     EmailField::new('contact1Email')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  425.                     TextField::new('contact1Adresse')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  426.                     TextareaField::new('contact1Remarque')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  427.                     FormField::addPanel('Contact 2')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
  428.                     TextField::new('contact2Label')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  429.                     TextField::new('contact2Tel')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  430.                     EmailField::new('contact2Email')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  431.                     TextField::new('contact2Adresse')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  432.                     TextareaField::new('contact2Remarque')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  433.                     FormField::addPanel('Contact 3')->addCssClass('col-sm-12 col-lg-12 col-xxl-6'),
  434.                     TextField::new('contact3Label')->setColumns('col-sm-12 col-lg-12 col-xxl-12')->hideOnIndex(),
  435.                     TextField::new('contact3Tel')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  436.                     EmailField::new('contact3Email')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  437.                     TextField::new('contact3Adresse')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  438.                     TextareaField::new('contact3Remarque')->setColumns('col-sm-12 col-lg-6 col-xxl-6')->hideOnIndex(),
  439.                 ];
  440.             }
  441.         }
  442.     }
  443.     public function configureCrud(Crud $crud): Crud
  444.     {
  445.         return $crud
  446.             // the labels used to refer to this entity in titles, buttons, etc.
  447.             ->overrideTemplate('crud/index''project/crud/indexv2.html.twig')
  448.             ->overrideTemplate('crud/edit''project/crud/edit.html.twig')
  449.             ->showEntityActionsInlined()
  450.             ->setEntityLabelInSingular('Projet')
  451.             ->setEntityLabelInPlural('Projets')
  452.             ->renderContentMaximized()
  453.             ->setPaginatorPageSize(1000);
  454.     }
  455.     public function configureActions(Actions $actions): Actions
  456.     {
  457.         $exportCSV Action::new('exportCSV''Export')
  458.             ->setIcon('fa fa-file-csv')
  459.             ->linkToCrudAction('export')
  460.             ->addCssClass('btn btn-info');
  461.         if (!$this->isGranted('ROLE_SUPER_ADMIN')) {
  462.             return $actions
  463.                 ->add(Crud::PAGE_INDEX$exportCSV)
  464.                 ->update(Crud::PAGE_INDEXAction::EDIT, function (Action $action) {
  465.                     return $action->setIcon('fa fa-pen')->addCssClass('btn crud-action-edit px-3 py-1 me-2');
  466.                 })
  467.                 ->remove(Crud::PAGE_INDEXAction::NEW)
  468.                 ->remove(Crud::PAGE_INDEXAction::DELETE);
  469.         } else {
  470.             return $actions
  471.                 ->add(Crud::PAGE_INDEX$exportCSV)
  472.                 ->update(Crud::PAGE_INDEXAction::EDIT, function (Action $action) {
  473.                     return $action->setIcon('fa fa-pen')->addCssClass('btn crud-action-edit px-3 py-1 me-2');
  474.                 })
  475.                 ->update(Crud::PAGE_INDEXAction::DELETE, function (Action $action) {
  476.                     return $action->setIcon('fa fa-trash')->addCssClass('btn px-3 py-1');
  477.                 });
  478.         }
  479.     }
  480.     public function export(AdminContext $context)
  481.     {
  482.         $data = [];
  483.         $data[] = $context->getEntity()->getInstance()->getExportData();
  484.         // dd($data);
  485.         $projet $context->getEntity()->getInstance();
  486.         $res $this->csvService->exportProjet($projet);
  487.         if ($res == 'probleme ftp') {
  488.             $this->flasher->addError('Probleme FTP verifier les parametrages');
  489.         } else if ($res == 'ok') {
  490.             $this->flasher->addSuccess('projet ' $projet->getProjet() . ' exportée avec succès');
  491.         } else if ($res == 'no recaptcha no env') {
  492.             $this->flasher->addInfo('le fichier recaptcha et .env.local n\'est pas généré verifier les parametrages projet');
  493.         } else if ($res == 'no recaptcha') {
  494.             $this->flasher->addSuccess('le fichier recaptcha n\'est pas généré verifier les parametrages projet');
  495.         } else if ($res == 'no env') {
  496.             $this->flasher->addSuccess('le fichier .env.local n\'est pas généré verifier les parametrages projet');
  497.         } else {
  498.             $this->flasher->addError('Quelque chose s\'est mal passé');
  499.         }
  500.         $url $this->adminUrlGenerator
  501.             ->setController(ProjetCrudController::class)
  502.             ->setAction(Action::INDEX)
  503.             ->generateUrl();
  504.         return $this->redirect($url);
  505.     }
  506.     public function createIndexQueryBuilder(SearchDto $searchDtoEntityDto $entityDtoFieldCollection $fieldsFilterCollection $filters): QueryBuilder
  507.     {
  508.         $queryBuilder parent::createIndexQueryBuilder($searchDto$entityDto$fields$filters);
  509.         $projet $this->manager->getRepository(Projet::class)->findOneBy(
  510.             ['id' => $this->getUser()->getProjet()->getId()]
  511.         );
  512.         if (!$this->isGranted('ROLE_SUPER_ADMIN')) {
  513.             if ($projet != null) {
  514.                 $queryBuilder
  515.                     ->andWhere('entity.id = :val')->setParameter('val'$this->getUser()->getProjet()->getId());
  516.             }
  517.         }
  518.         return $queryBuilder;
  519.     }
  520. }