src/Controller/Admin/EquipeCrudController.php line 112

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Entity\Equipe;
  4. use App\Entity\DomainEquipe;
  5. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
  6. use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
  7. use EasyCorp\Bundle\EasyAdminBundle\Field\DateField;
  8. use EasyCorp\Bundle\EasyAdminBundle\Field\ImageField;
  9. use EasyCorp\Bundle\EasyAdminBundle\Field\IntegerField;
  10. use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
  11. use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Doctrine\ORM\EntityManagerInterface;
  16. use EasyCorp\Bundle\EasyAdminBundle\Field\CollectionField;
  17. use App\Form\DomainEquipeType;
  18. use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField;
  19. use EasyCorp\Bundle\EasyAdminBundle\Config\Assets;
  20. use EasyCorp\Bundle\EasyAdminBundle\Config\Asset;
  21. use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
  22. use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
  23. class EquipeCrudController extends AbstractCrudController
  24. {
  25.     public static function getEntityFqcn(): string
  26.     {
  27.         return Equipe::class;
  28.     }
  29.     public function configureAssets(Assets $assets): Assets
  30.     {
  31.         return $assets->addJsFile(Asset::new('js/equipeJs.js')->defer());
  32.     }
  33.     public function configureActions(Actions $actions): Actions
  34.     {
  35.         $actions->add(Crud::PAGE_INDEXAction::DETAIL)
  36.         ->update(Crud::PAGE_NEWAction::SAVE_AND_RETURN, function (Action $action) {
  37.             return $action->setLabel('Enregistrer');
  38.         });
  39.         return $actions;
  40.     }
  41.     public function configureCrud(Crud $crud): Crud
  42.     {
  43.         return $crud->setPageTitle('detail''Détails membre');
  44.     }
  45.     public function configureFields(string $pageName): iterable
  46.     {
  47.         return [
  48.             TextField::new('nom''Nom et prénom'),
  49.             ImageField::new('image''Photo')->setUploadDir('public/imagees/galery')->setBasePath('imagees/galery')
  50.             ->setUploadedFileNamePattern('[randomhash].[extension]')
  51.             ->setFormTypeOptions(["attr" => ['accept' => 'image/*, application/pdf, application/vnd.ms-excel']])
  52.             ->setRequired($pageName !== Crud::PAGE_EDIT),
  53.             TextField::new('diplome''Diplôme'),
  54.             TextField::new('poste''Poste')
  55.             ->setColumns('col-sm-6 col-md-6 col-lg-5 col-xxl-3'),
  56.         NumberField::new('experience''Expérience (ans)')->setFormTypeOptions(["attr" => ['min' => '0','pattern'=>'[0-9]+''oninput'=>"this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"]])->setRequired(true),
  57.         CollectionField::new('domains''Domaine de compétences')
  58.                 ->allowAdd(true)
  59.                 ->allowDelete(true)
  60.                 ->setEntryIsComplex(true)
  61.                 ->setEntryType(DomainEquipeType::class)
  62.                 ->setFormTypeOptions([
  63.                     'by_reference' => 'true',
  64.                     'mapped' => true
  65.             ])->hideOnIndex()->setRequired($pageName !== Crud::PAGE_EDIT)
  66.             ->setColumns('custom_class_domain col-sm-12 col-md-12 col-lg-12 col-xxl-12'),
  67.             ChoiceField::new('regional''Régional/Central')
  68.     ->setChoices([
  69.         'Régional' => 'Regional',
  70.         'Central' => 'Central',])
  71.         ->setFormTypeOptions(['placeholder' => 'Veuillez sélectionner la Regional/Central'])->setColumns('col-sm-6 col-md-6 col-lg-5 col-xxl-3'),
  72.         ChoiceField::new('unite''Unité régionale')
  73.         ->addCssClass('equipe_unite_field')
  74.         ->setRequired($pageName !== Crud::PAGE_EDIT || $pageName !== Crud::PAGE_NEW)
  75.         ->setChoices([
  76.             'Tunis' => 'Tunis',
  77.             'Beja' => 'Beja',
  78.             'Ben Arous' => 'Ben Arous',
  79.             'Ariana' => 'Ariana',
  80.             'Bizerte' => 'Bizerte',
  81.             'Gabes' => 'Gabes',
  82.             'Gafsa' => 'Gafsa',
  83.             'Jendouba' => 'Jendouba',
  84.             'Kairouan' => 'Kairouan',
  85.             'Kasserine' => 'Kasserine',
  86.             'Kebilli' => 'Kebilli',
  87.             'Kef' => 'Kef',
  88.             'Mahdia' => 'Mahdia',
  89.             'Manouba' => 'Manouba',
  90.             'Medenine' => 'Medenine',
  91.             'Monastir' => 'Monastir',
  92.             'Nabeul' => 'Nabeul',
  93.             'Sfax' => 'Sfax',
  94.             'Sidi Bouzid' => 'Sidi Bouzid',
  95.             'Siliana' => 'Siliana',
  96.             'Sousse' => 'Sousse',
  97.             'Tataouine' => 'Tataouine',
  98.             'Tozeur' => 'Tozeur',
  99.             'Zaghouan' => 'Zaghouan'])
  100.             ->setFormTypeOptions(['placeholder' => 'Veuillez sélectionner l\'Unité régionale'])->setColumns('col-sm-6 col-md-6 col-lg-5 col-xxl-3'),
  101.         ];
  102.     }
  103.     #[Route('/show/equipe/detail/{id}'name'show_equipe_detail')]
  104.     public function showByEquipeDetail(Equipe $equipeMemberRequest $requestEntityManagerInterface $entityManager): Response
  105.     {
  106.         $equipe $entityManager->getRepository(Equipe::class)->findAll();
  107.         return $this->render('equipe/detail.html.twig', [
  108.              'equipe' => $equipe,
  109.              'equipeMember' => $equipeMember,
  110.          ]);
  111.     }
  112.     public function persistEntity(EntityManagerInterface $entityManager$entityInstance): void
  113.     {
  114.         $oldDomains= clone $entityInstance->getDomains();
  115.         foreach ($entityInstance->getDomains() as $Domain) {
  116.             $entityInstance->removeDomain($Domain);
  117.         }
  118.         $entityManager->persist($entityInstance);
  119.         $entityManager->flush();
  120.         foreach ($oldDomains as $Domain2) {
  121.             $Domain2->setEquipe($entityInstance);
  122.             $entityManager->persist($Domain2);
  123.             $entityManager->flush();
  124.         }
  125.     }
  126.     public function updateEntity(EntityManagerInterface $entityManager$entityInstance): void
  127.     {
  128.         /** check if FormUserNotes instances was updated */
  129.         if ($entityInstance->getDomains()) {
  130.             foreach ($entityInstance->getDomains()->getSnapshot() as $Domain) {
  131.                 /** check if the FormUserNotes instance is to remove */
  132.                 if (!$entityInstance->getDomains()->contains($Domain)) {
  133.                     /* $Domain->setUser(null); */
  134.                     $entityManager->remove($Domain);
  135.                 }
  136.             }
  137.             /** mapping of created User */
  138.             foreach ($entityInstance->getDomains() as $Domain) {
  139.                 $Domain->setEquipe($entityInstance);
  140.             }
  141.         }
  142.         $entityManager->persist($entityInstance);
  143.         $entityManager->flush();
  144.     }
  145. }