src/Controller/Admin/SessionsformationCrudController.php line 205

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Entity\User;
  4. use App\Service\NotificationManager;
  5. use DateTimeInterface;
  6. use Doctrine\ORM\Mapping\Id;
  7. use App\Entity\Sessionsformation;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use App\Entity\InscriptionSessionFormation;
  10. use Knp\Component\Pager\PaginatorInterface;
  11. use App\Form\InscriptionSessionFormationType;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
  16. use EasyCorp\Bundle\EasyAdminBundle\Field\Field;
  17. use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
  18. use EasyCorp\Bundle\EasyAdminBundle\Field\IdField;
  19. use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
  20. use EasyCorp\Bundle\EasyAdminBundle\Field\DateField;
  21. use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
  22. use EasyCorp\Bundle\EasyAdminBundle\Field\ImageField;
  23. use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField;
  24. use EasyCorp\Bundle\EasyAdminBundle\Field\IntegerField;
  25. use EasyCorp\Bundle\EasyAdminBundle\Field\DateTimeField;
  26. use EasyCorp\Bundle\EasyAdminBundle\Field\TextareaField;
  27. use EasyCorp\Bundle\EasyAdminBundle\Context\AdminContext;
  28. use EasyCorp\Bundle\EasyAdminBundle\Field\TextEditorField;
  29. use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
  30. use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
  31. use App\Controller\Admin\InscriptionSessionFormationCrudController;
  32. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
  33. class SessionsformationCrudController extends AbstractCrudController
  34. {
  35.     private AdminUrlGenerator $adminUrlGenerator;
  36.     public function __construct(
  37.         AdminUrlGenerator $adminUrlGenerator,
  38.     ) {
  39.         $this->adminUrlGenerator $adminUrlGenerator;
  40.     }
  41.     public static function getEntityFqcn(): string
  42.     {
  43.         return Sessionsformation::class;
  44.     }
  45.     public function configureFields(string $pageName): iterable
  46.     {
  47.         return [
  48.             IdField::new('id')->hideOnForm(),
  49.             NumberField::new('numsession''N° session')->setColumns('col-sm-12 col-md-12 col-lg-12 col-xxl-12')->setFormTypeOptions(["attr" => ['min' => '0','pattern'=>'[0-9]+''oninput'=>"this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"]])->setRequired(true),
  50.             TextField::new('titre''Titre')->setColumns('col-sm-12 col-md-12 col-lg-12 col-xxl-12'),
  51.             DateField::new('date_debut''Date Début')->setColumns('col-sm-12 col-md-12 col-lg-12 col-xxl-12'),
  52.             DateField::new('date_fin''Date Fin')->setColumns('col-sm-12 col-md-12 col-lg-12 col-xxl-12'),
  53.             TextField::new('formateur''Formateur')->setColumns('col-sm-12 col-md-12 col-lg-12 col-xxl-12'),
  54.             TextField::new('adresse''Adresse')->setColumns('col-sm-12 col-md-12 col-lg-12 col-xxl-12'),
  55.             TextareaField::new('description''description')->formatValue(function ($value) {
  56.                 return $value ;
  57.             })->setColumns('col-sm-12 col-md-12 coil-lg-12 col-xxl-12')
  58.             ->setTemplatePath('admin/fields/details.html.twig')->setRequired($pageName !== Crud::PAGE_EDIT)->hideOnIndex(),
  59.             ImageField::new('photo''Photo')->setUploadDir('public/imagees/galery')->setBasePath('imagees/galery')->setUploadedFileNamePattern('[randomhash].[extension]')->setRequired($pageName !== Crud::PAGE_EDIT)
  60.             ->setFormTypeOptions(["attr" => ['accept' => 'image/*']])->setRequired($pageName !== Crud::PAGE_EDIT),
  61.             ImageField::new('document_prog''Programme de formation')->setUploadDir('/public/upload/galerie/images')->setBasePath('upload/galerie/images')->setUploadedFileNamePattern('[randomhash].[extension]')
  62.             ->setFormTypeOptions(["attr" => ['accept' => 'image/*, application/pdf, application/vnd.ms-excel']])->hideOnIndex()
  63.             ->setTemplatePath('admin/fields/vich_uploader_pdf.html.twig')->setRequired($pageName !== Crud::PAGE_EDIT),
  64.       ];
  65.     }
  66.     public function configureCrud(Crud $crud): Crud
  67.     {
  68.         return $crud ->setPageTitle('index''Liste des  Sessions de formation')
  69.             ->setPageTitle('detail''Détails des Sessions de formation')
  70.             ->setPageTitle('new''Créer une Session de formation')
  71.             ->setPageTitle('edit''Modifier une   Session de formation');
  72.     }
  73.     public function configureActions(Actions $actions): Actions
  74.     {
  75.         $inscri Action::new('ConsulterINSCRI''Consulter la liste Inscription à cette session') ->linkToCrudAction('ConsulterINSCRI') ;
  76.         $actions->add(Crud::PAGE_INDEXAction::DETAIL)
  77.         ->update(Crud::PAGE_NEWAction::SAVE_AND_RETURN, function (Action $action) {
  78.             return $action->setLabel('Enregistrer');
  79.         })
  80.             ->update(Crud::PAGE_INDEXAction::NEW, function (Action $action) {
  81.                 return $action->setIcon('fa fa-plus')->setLabel('Créer une Session de formation');
  82.             })
  83.             ->add(Crud::PAGE_INDEX$inscri)
  84.         ;
  85.         return $actions;
  86.     }
  87.     public function ConsulterINSCRI(AdminContext $context)
  88.     {
  89.         $entityInstance $context->getEntity()->getInstance();
  90.         $url =
  91.             $this->adminUrlGenerator
  92.                 ->setController(InscriptionSessionFormationCrudController::class)
  93.                 ->setAction(Action::INDEX)
  94.                 ->unset('entityId')
  95.                 ->set('sessionFormation'$entityInstance->getId())
  96.                 ->generateUrl();
  97.         return $this->redirect($url);
  98.     }
  99.     #[Route('/show/formation/detail/{id}'name'show_formation_detail')]
  100.     public function showByFormationDetail(Sessionsformation $sessionformationRequest $requestEntityManagerInterface $entityManager): Response
  101.     {
  102.         $isInscri false;
  103.         if ($this->getUser() !== null) {
  104.             foreach ($this->getUser()->getInscriptionSessionFormations() as $inscriptionSession) {
  105.                 if ($inscriptionSession->getSessionFormation() === $sessionformation) {
  106.                     $isInscri true;
  107.                 }
  108.             }
  109.         }
  110.         return $this->render('sessionformation/detail.html.twig', [
  111.              'formation'=>$sessionformation,
  112.              'isInscri'=> $isInscri,
  113.          ]);
  114.     }
  115.     #[Route('/inscritSessionFormation/{id}'name'app_inscrit_session')]
  116.     public function inscritSessionFormation(Sessionsformation $sessionformationRequest $request,
  117.      EntityManagerInterface $entityManager,
  118.      NotificationManager $notificationManager
  119.      ): Response
  120.     {
  121.         $inscriptionSessionFormation = new InscriptionSessionFormation();
  122.         $form $this->createForm(InscriptionSessionFormationType::class, $inscriptionSessionFormation);
  123.         if ($request->getMethod() == 'POST') {
  124.             $inscriptionSessionFormation->setMail($request->request->all()['inscription_session_formation']['mail']);
  125.             $inscriptionSessionFormation->setTel($request->request->all()['inscription_session_formation']['tel']);
  126.             if($request->request->all()['inscription_session_formation']['autres'] != null){
  127.                 $inscriptionSessionFormation->setFonction($request->request->all()['inscription_session_formation']['autres']);
  128.             }else{
  129.                 $inscriptionSessionFormation->setFonction($request->request->all()['inscription_session_formation']['fonction']);
  130.             }
  131.             $inscriptionSessionFormation->setUser($this->getUser());
  132.             $inscriptionSessionFormation->setSessionformation($sessionformation);
  133.             $entityManager->persist($inscriptionSessionFormation);
  134.             $entityManager->flush();
  135.             $this->addFlash('success''inscription effectuée avec succès!');
  136.             // Send Comment
  137.             $edit_demande_url =  $this->adminUrlGenerator
  138.             ->setController(SessionsformationCrudController::class)            
  139.             ->setAction('ConsulterINSCRI')
  140.             ->setEntityId($inscriptionSessionFormation->getSessionFormation()->getId())
  141.             ->generateUrl();
  142.             $notification_message 'Inscription session effectuée!   ';
  143.             $admins $entityManager->getRepository(User::class)->findByRole('ROLE_ADMIN');
  144.             foreach($admins as $admin){
  145.                 $notificationManager->pushMessage('Inscription session effectuée ! '$notification_message$admin$edit_demande_url);
  146.             }
  147.             // End send comment
  148.             return $this->redirectToRoute('app_listInscri');
  149.         }
  150.         return $this->render('sessionformation/inscritSessionFormation.html.twig', [
  151.              'formation'=>$sessionformation,
  152.              'form' => $form->createView()
  153.          ]);
  154.     }
  155.     #[Route('/listInscriptionSession'name'app_listInscri')]
  156.     public function ListeInscriptionSession(EntityManagerInterface $entityManager): Response
  157.     {
  158.         $InscriptionSession $entityManager->getRepository(InscriptionSessionFormation::class)->findBy(['user' => $this->getUser()]);
  159.         return $this->render('sessionformation/list.html.twig', [
  160.             "InscriptionSession" => $InscriptionSession,
  161.         ]);
  162.     }
  163.     #[Route('/deleteInscriSessionFormation/{id}'name'inscriSessionFormation_delete')]
  164.     public function deleteAction($idEntityManagerInterface $entityManager)
  165.     {
  166.         $inscriSessionFormation $entityManager->getRepository(InscriptionSessionFormation::class);
  167.         $inscriSessionFormation $inscriSessionFormation->find($id);
  168.         if (!$inscriSessionFormation) {
  169.             throw $this->createNotFoundException(
  170.                 'Il n\'y a aucun inscriSessionFormation avec l\'identifiant suivant : ' $id
  171.             );
  172.         }
  173.         $entityManager->remove($inscriSessionFormation);
  174.         $entityManager->flush();
  175.         $this->addFlash('success''suppression effectuée avec succès');
  176.         return $this->redirect($this->generateUrl('app_listInscri'));
  177.     }
  178.     #[Route('/list/formation/index/'name'index_formation')]
  179.     public function listFormations(Request $requestEntityManagerInterface $entityManagerPaginatorInterface $paginator): Response
  180.     {
  181.         $donnees $entityManager->getRepository(Sessionsformation::class)->getAllFormations();
  182.         $formations $paginator->paginate(
  183.             $donnees,
  184.             $request->query->getInt('page'1),
  185.             12
  186.         );
  187.         return $this->render('sessionformation/index.html.twig', [
  188.              'formations'=>$formations,
  189.          ]);
  190.     }
  191. }