src/Controller/AproposController.php line 137

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\ChefsEquipes;
  4. use App\Entity\ChefsProjets;
  5. use App\Entity\DirecteursProfesseurs;
  6. use App\Entity\Doctorants;
  7. use App\Entity\MaitresConferences;
  8. use App\Entity\Membre;
  9. use App\Entity\PresentationLabo;
  10. use App\Entity\Professeurs;
  11. use App\Entity\Publications;
  12. use App\Form\ChefsEquipesType;
  13. use App\Form\ChefsProjetsType;
  14. use App\Form\DirecteursProfesseursType;
  15. use App\Form\DoctorantsType;
  16. use App\Form\MaitresConferencesType;
  17. use App\Form\PresentationLaboType;
  18. use App\Form\ProfesseursType;
  19. use App\Repository\ChefsEquipesRepository;
  20. use App\Repository\ChefsProjetsRepository;
  21. use App\Repository\DirecteursProfesseursRepository;
  22. use App\Repository\DoctorantsRepository;
  23. use App\Repository\MaitresConferencesRepository;
  24. use App\Repository\MembreRepository;
  25. use App\Repository\PresentationLaboRepository;
  26. use App\Repository\ProfesseursRepository;
  27. use App\Repository\PublicationsRepository;
  28. use App\Repository\TitlesMembersRepository;
  29. use App\Service\UtilsService;
  30. use Doctrine\ORM\EntityManagerInterface;
  31. use Knp\Component\Pager\PaginatorInterface;
  32. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  33. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  34. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  35. use Symfony\Component\HttpFoundation\Request;
  36. use Symfony\Component\HttpFoundation\Response;
  37. use Symfony\Component\Process\Process;
  38. use Symfony\Component\Routing\Annotation\Route;
  39. use App\Service\ScholarService;
  40. class AproposController extends AbstractController
  41. {
  42.     private $utilsService;
  43.     
  44.     private $scholarService;
  45.     public function __construct(UtilsService $utilsService,ScholarService $scholarService)
  46.     {
  47.         $this->utilsService $utilsService;
  48.         $this->scholarService $scholarService;
  49.     }
  50.     /**
  51.      * @Route("/show", name="labo_a_propos")
  52.      */
  53.     public function showOld(PresentationLaboRepository $repoProfesseursRepository $repo1MaitresConferencesRepository $repo2DoctorantsRepository $repo3DirecteursProfesseursRepository $repo4ChefsProjetsRepository $repo5ChefsEquipesRepository $repo6): Response
  54.     {
  55.         $presentations $repo->findBy(["isDeleted" => 0], ['id' => 'desc']);
  56.         $professeurs $repo1->findBy(["isDeleted" => 0], ['id' => 'desc']);
  57.         $maitresConferences $repo2->findBy(["isDeleted" => 0], ['id' => 'desc']);
  58.         $doctorants $repo3->findBy(["isDeleted" => 0], ['id' => 'desc']);
  59.         $directeursProfesseurs $repo4->findBy(["isDeleted" => 0], ['id' => 'desc']);
  60.         $chefsProjets $repo5->findBy(["isDeleted" => 0], ['id' => 'desc']);
  61.         $chefsEquipes $repo6->findBy(["isDeleted" => 0], ['id' => 'desc']);
  62.         return $this->render('apropos/show.html.twig', [
  63.             'presentations' => $presentations,
  64.             'professeurs' => $professeurs,
  65.             'maitresConferences' => $maitresConferences,
  66.             'doctorants' => $doctorants,
  67.             'directeursProfesseurs' => $directeursProfesseurs,
  68.             'chefsProjets' => $chefsProjets,
  69.             'chefsEquipes' => $chefsEquipes
  70.         ]);
  71.     }
  72.     /**
  73.      * @Route("/apropos", name="apropos_show")
  74.      */
  75.     public function show(PresentationLaboRepository $repoTitlesMembersRepository $titlesMembersRepositoryMembreRepository $membreRepository): Response
  76.     {
  77.         $titlesMembers $titlesMembersRepository->findBy(['is_deleted' => 0], ['id' => 'asc']);
  78.         $presentations $repo->findBy(["isDeleted" => 0], ['id' => 'desc']);
  79.         $membre $membreRepository->findBy(["isDeleted" => 0], ['id' => 'desc']);
  80.         //  $titlesProf=$titlesMembersRepository->findBy(['titre' => 'Professor'], ['id' => 'desc']);
  81.         //  $totalProfessors=$membreRepository->findBy(['titlesMembers' => $titlesProf, 'isDeleted' => 0], ['id' => 'desc']);
  82.         $totalProfessors $membreRepository->nbrProfessors();
  83.         $totalAssociateProfessors $membreRepository->nbrAssociateProf();
  84.         $totalPHDStudents $membreRepository->nbrPHDStudents();
  85.         $totalProjectManagers $membreRepository->nbrProjectManagers();
  86.         $totalPOSTDOCS $membreRepository->nbrPOSTDOC();
  87.         return $this->render('apropos/apropos.html.twig', [
  88.             'presentations' => $presentations,
  89.             'titlesMembers' => $titlesMembers,
  90.             'members' => $membre,
  91.             'totalProfessors' => $totalProfessors[0][1],
  92.             'totalAssociateProfessors' => $totalAssociateProfessors[0][1],
  93.             'totalOHDStudents' => $totalPHDStudents[1],
  94.             'totalProjectManagers' => $totalProjectManagers[1],
  95.             'totalPOSTDOCS' => $totalPOSTDOCS[1]
  96.         ]);
  97.     }
  98.     /**
  99.      * @Route("/members", name="members_show")
  100.      */
  101.     public function showMembers(PresentationLaboRepository $repoTitlesMembersRepository $titlesMembersRepositoryMembreRepository $membreRepositoryPaginatorInterface $paginatorRequest $request): Response
  102.     {
  103.         $titlesMembers $titlesMembersRepository->findByNotNull();
  104.         $page $request->query->getInt('page'1);
  105.         $letter $request->query->get('letter''');
  106.         $members $membreRepository->findAllMembersWithGroupTitle2();
  107.         $totalProfessors $membreRepository->nbrProfessors();
  108.         $totalAssociateProfessors $membreRepository->nbrAssociateProf();
  109.         $totalOHDStudents $membreRepository->nbrPHDStudents();
  110.         $totalProjectManagers $membreRepository->nbrProjectManagers();
  111.         return $this->render('members/members.html.twig', [
  112.             'titlesMembers' => $titlesMembers,
  113.             'groupedMembers' => $members,
  114.             'totalProfessors' => $totalProfessors[0][1],
  115.             'totalAssociateProfessors' => $totalAssociateProfessors[0][1],
  116.             'totalOHDStudents' => $totalOHDStudents[1],
  117.             'totalProjectManagers' => $totalProjectManagers[1],
  118.             'virtualTitle' => 'Permanent Research',
  119.             'letter' => $letter
  120.         ]);
  121.     }
  122.     /**
  123.      * @Route("/members/profile/{id}/{prenom}{nom}", name="profile_show", methods={"GET"})
  124.      */
  125.     public function showProfile(PaginatorInterface $paginatorpublicationsRepository $publicationsRepositoryMembreRepository $membreRepositoryRequest $requestMembre $membreEntityManagerInterface $manager): Response
  126.     {
  127.         $scholarId $membre->getScholarId();
  128.         $publications_membre = [];
  129.         $data_scholar= [];
  130.         $citationsYears= [];
  131.         $citationsCounts= [];
  132.         if ($scholarId != null) {
  133.             $publications_membre $this->utilsService->fetchPublications(
  134.                 $scholarId,
  135.                 $membre,
  136.                 $membreRepository,
  137.                 $this->scholarService
  138.             );
  139.             //$data_scholar['citations_per_year']=[];
  140.             
  141.             $data_scholar $this->scholarService->fetchScholarData($scholarId);
  142.             if($data_scholar['citations_per_year']){
  143.              $citationsYears array_keys($data_scholar['citations_per_year']);
  144.      $citationsCounts array_values($data_scholar['citations_per_year']);
  145.             }
  146.             }
  147.          usort($publications_membre, function($a$b) {
  148.             return $b['year'] <=> $a['year'];
  149.         });
  150.         $pagination $paginator->paginate(
  151.             $publications_membre,
  152.             $request->query->getInt('page'1),
  153.             5
  154.         );
  155.        
  156.         return $this->render('members/profile.html.twig', [
  157.             'profile' => $membre,
  158.             'publicationsMembre' => $publications_membre,
  159.             'pagination' => $pagination,
  160.             'h_index'=>$data_scholar['h_index']?? 0,
  161.             'total_citations'=>$data_scholar['total_citations']?? 0,
  162.              'citationsYears' => $citationsYears,
  163.              'citationsCounts' => $citationsCounts,
  164.              'publications' => $data_scholar['publications']?? [],
  165.         ]);
  166.     }
  167.     // PrĂ©sentation 
  168.     /**
  169.      * @Route("/dashboard/apropos/presentation/", name="presentation_index", methods={"GET"})
  170.      * @Security("is_granted('ROLE_ADMINISTRATEUR')")
  171.      */
  172.     public function indexPresentation(PresentationLaboRepository $presentationRepositoryRequest $request): Response
  173.     {
  174.         $present $presentationRepository->findBy(["isDeleted" => 0]);
  175.         $isEmpty = empty($present);
  176.         return $this->render('apropos/presentation/index.html.twig', ['title' => 'PrĂ©sentation',
  177.             'present' => $present,
  178.             'isEmpty' => $isEmpty,
  179.         ]);
  180.     }
  181.     /**
  182.      * @Route("/dashboard/apropos/presentation/new", name="presentation_new", methods={"GET","POST"})
  183.      * @Security("is_granted('ROLE_ADMINISTRATEUR')")
  184.      */
  185.     public function newPresentation(Request $requestEntityManagerInterface $manager): Response
  186.     {
  187.         $present = new PresentationLabo();
  188.         $form $this->createForm(PresentationLaboType::class, $present);
  189.         $form->handleRequest($request);
  190.         if ($request->isMethod('post')) {
  191.             $presentation $request->request->get("presentation");
  192.             $present->setPresentation($presentation);
  193.             $objectifs $request->request->get("objectifs");
  194.             $present->setObjectifs($objectifs);
  195.             $valeurs $request->request->get("valeurs");
  196.             $present->setValeurs($valeurs);
  197.             $manager->persist($present);
  198.             $manager->flush();
  199.             return $this->redirectToRoute('presentation_index', [], Response::HTTP_SEE_OTHER);
  200.         }
  201.         return $this->render('apropos/presentation/new.html.twig', [
  202.             'title' => 'Partner',
  203.             'present' => $present,
  204.             'form' => $form->createView(),
  205.         ]);
  206.     }
  207.     /**
  208.      * @Route("/dashboard/apropos/presentation/{id}/edit", name="presentation_edit", methods={"GET","POST"})
  209.      * @Security("is_granted('ROLE_ADMINISTRATEUR')")
  210.      */
  211.     public function editPresentation(Request $requestPresentationLabo $presentEntityManagerInterface $manager): Response
  212.     {
  213.         $form $this->createForm(PresentationLaboType::class, $present);
  214.         $form->handleRequest($request);
  215.         if ($request->isMethod('post')) {
  216.             $presentation $request->request->get("presentation");
  217.             $present->setPresentation($presentation);
  218.             $objectifs $request->request->get("objectifs");
  219.             $present->setObjectifs($objectifs);
  220.             $valeurs $request->request->get("valeurs");
  221.             $present->setValeurs($valeurs);
  222.             $manager->flush();
  223.             return $this->redirectToRoute('presentation_index', [], Response::HTTP_SEE_OTHER);
  224.         }
  225.         return $this->render('apropos/presentation/edit.html.twig', [
  226.             'form' => $form->createView(),
  227.             "title" => "Prsentation",
  228.             'present' => $present,
  229.         ]);
  230.     }
  231.     /**
  232.      * @Route("/dashboard/apropos/{id}", name="presentation_delete", methods={"POST"})
  233.      * @Security("is_granted('ROLE_ADMINISTRATEUR')")
  234.      */
  235.     public function deletePresentation(Request $requestPresentationLabo $presentEntityManagerInterface $manager): Response
  236.     {
  237.         if ($this->isCsrfTokenValid('delete' $present->getId(), $request->request->get('_token'))) {
  238.             $present->setIsDeleted(1);
  239.             $manager->flush();
  240.         }
  241.         return $this->redirectToRoute('presentation_index', [], Response::HTTP_SEE_OTHER);
  242.     }
  243.     // Professeurs
  244.     /**
  245.      * @IsGranted("ROLE_ADMINISTRATEUR")
  246.      * @Route("/dashboard/apropos/professeur/", name="professeur_index", methods={"GET"})
  247.      */
  248.     public function indexProfesseur(ProfesseursRepository $professeurRepositoryPaginatorInterface $paginatorRequest $request): Response
  249.     {
  250.         $professeurs $professeurRepository->findBy(["isDeleted" => 0], ['id' => 'desc']);
  251.         $pagination $paginator->paginate(
  252.             $professeurs/* query NOT result */
  253.             $request->query->getInt('page'1), /*page number*/
  254.             /*limit per page*/
  255.         );
  256.         return $this->render('apropos/professeurs/index.html.twig', ['title' => 'Professeurs',
  257.             'professeurs' => $pagination,
  258.         ]);
  259.     }
  260.     /**
  261.      * @IsGranted("ROLE_ADMINISTRATEUR")
  262.      * @Route("/dashboard/apropos/professeur/new", name="professeur_new", methods={"GET","POST"})
  263.      */
  264.     public function newProfesseur(Request $requestEntityManagerInterface $manager): Response
  265.     {
  266.         $destination $this->getParameter('kernel.project_dir') . '/public/admin/uploads';
  267.         $professeur = new Professeurs();
  268.         $form $this->createForm(ProfesseursType::class, $professeur);
  269.         $form->handleRequest($request);
  270.         if ($request->isMethod('post')) {
  271.             $image $request->files->get('image');
  272.             $image_name "Professeur" '-' uniqid() . '.' $image->guessExtension();
  273.             $image->move(
  274.                 $destination,
  275.                 $image_name
  276.             );
  277.             $professeur->setimage($image_name);
  278.             $nom $request->request->get("nom");
  279.             $professeur->setNom($nom);
  280.             $titre $request->request->get("titre");
  281.             $professeur->setTitre($titre);
  282.             $manager->persist($professeur);
  283.             $manager->flush();
  284.             return $this->redirectToRoute('professeur_index', [], Response::HTTP_SEE_OTHER);
  285.         }
  286.         return $this->render('apropos/professeurs/new.html.twig', [
  287.             'title' => 'Professeurs',
  288.             'professeur' => $professeur,
  289.             'form' => $form->createView(),
  290.         ]);
  291.     }
  292.     /**
  293.      * @IsGranted("ROLE_ADMINISTRATEUR")
  294.      * @Route("/dashboard/apropos/professeur/{id}/edit", name="professeur_edit", methods={"GET","POST"})
  295.      */
  296.     public function editProfesseur(Request $requestProfesseurs $professeurEntityManagerInterface $manager): Response
  297.     {
  298.         $destination $this->getParameter('kernel.project_dir') . '/public/admin/uploads';
  299.         $form $this->createForm(ProfesseursType::class, $professeur);
  300.         $form->handleRequest($request);
  301.         if ($request->isMethod('post')) {
  302.             if ($request->files->get('image') != null) {
  303.                 $image $request->files->get('image');
  304.                 $image_name "Professeur" '-' uniqid() . '.' $image->guessExtension();
  305.                 $image->move(
  306.                     $destination,
  307.                     $image_name
  308.                 );
  309.                 $professeur->setImage($image_name);
  310.             }
  311.             $nom $request->request->get("nom");
  312.             $professeur->setNom($nom);
  313.             $titre $request->request->get("titre");
  314.             $professeur->setTitre($titre);
  315.             $manager->flush();
  316.             return $this->redirectToRoute('professeur_index', [], Response::HTTP_SEE_OTHER);
  317.         }
  318.         return $this->render('apropos/professeurs/edit.html.twig', [
  319.             "title" => "Professeurs",
  320.             'professeur' => $professeur,
  321.             'form' => $form->createView(),
  322.         ]);
  323.     }
  324.     /**
  325.      * @IsGranted("ROLE_ADMINISTRATEUR")
  326.      * @Route("/dashboard/apropos/professeur/{id}", name="professeur_delete", methods={"POST"})
  327.      */
  328.     public function deleteProfesseur(Request $requestProfesseurs $professeurEntityManagerInterface $manager): Response
  329.     {
  330.         if ($this->isCsrfTokenValid('delete' $professeur->getId(), $request->request->get('_token'))) {
  331.             $professeur->setIsDeleted(1);
  332.             $manager->flush();
  333.         }
  334.         return $this->redirectToRoute('professeur_index', [], Response::HTTP_SEE_OTHER);
  335.     }
  336.     // Maitres de conferences
  337.     /**
  338.      * @IsGranted("ROLE_ADMINISTRATEUR")
  339.      * @Route("/dashboard/apropos/maitreConference/", name="maitreConference_index", methods={"GET"})
  340.      */
  341.     public function indexMaitreConference(MaitresConferencesRepository $maitreConferenceRepositoryPaginatorInterface $paginatorRequest $request): Response
  342.     {
  343.         $maitresConferences $maitreConferenceRepository->findBy(["isDeleted" => 0], ['id' => 'desc']);
  344.         $pagination $paginator->paginate(
  345.             $maitresConferences/* query NOT result */
  346.             $request->query->getInt('page'1), /*page number*/
  347.             /*limit per page*/
  348.         );
  349.         return $this->render('apropos/maitres_conferences/index.html.twig', ['title' => 'MaitresConferences',
  350.             'maitresConferences' => $pagination,
  351.         ]);
  352.     }
  353.     /**
  354.      * @IsGranted("ROLE_ADMINISTRATEUR")
  355.      * @Route("/dashboard/apropos/maitreConference/new", name="maitreConference_new", methods={"GET","POST"})
  356.      */
  357.     public function newMaitreConference(Request $requestEntityManagerInterface $manager): Response
  358.     {
  359.         $destination $this->getParameter('kernel.project_dir') . '/public/admin/uploads';
  360.         $maitreConference = new MaitresConferences();
  361.         $form $this->createForm(MaitresConferencesType::class, $maitreConference);
  362.         $form->handleRequest($request);
  363.         if ($request->isMethod('post')) {
  364.             $image $request->files->get('image');
  365.             $image_name "maitreConference" '-' uniqid() . '.' $image->guessExtension();
  366.             $image->move(
  367.                 $destination,
  368.                 $image_name
  369.             );
  370.             $maitreConference->setimage($image_name);
  371.             $nom $request->request->get("nom");
  372.             $maitreConference->setNom($nom);
  373.             $titre $request->request->get("titre");
  374.             $maitreConference->setTitre($titre);
  375.             $manager->persist($maitreConference);
  376.             $manager->flush();
  377.             return $this->redirectToRoute('maitreConference_index', [], Response::HTTP_SEE_OTHER);
  378.         }
  379.         return $this->render('apropos/maitres_conferences/new.html.twig', [
  380.             'title' => 'MaitresConferences',
  381.             'maitreConference' => $maitreConference,
  382.             'form' => $form->createView(),
  383.         ]);
  384.     }
  385.     /**
  386.      * @IsGranted("ROLE_ADMINISTRATEUR")
  387.      * @Route("/dashboard/apropos/maitreConference/{id}/edit", name="maitreConference_edit", methods={"GET","POST"})
  388.      */
  389.     public function editMaitreConference(Request $requestMaitresConferences $maitreConferenceEntityManagerInterface $manager): Response
  390.     {
  391.         $destination $this->getParameter('kernel.project_dir') . '/public/admin/uploads';
  392.         $form $this->createForm(MaitresConferencesType::class, $maitreConference);
  393.         $form->handleRequest($request);
  394.         if ($request->isMethod('post')) {
  395.             if ($request->files->get('image') != null) {
  396.                 $image $request->files->get('image');
  397.                 $image_name "maitreConference" '-' uniqid() . '.' $image->guessExtension();
  398.                 $image->move(
  399.                     $destination,
  400.                     $image_name
  401.                 );
  402.                 $maitreConference->setImage($image_name);
  403.             }
  404.             $nom $request->request->get("nom");
  405.             $maitreConference->setNom($nom);
  406.             $titre $request->request->get("titre");
  407.             $maitreConference->setTitre($titre);
  408.             $manager->flush();
  409.             return $this->redirectToRoute('maitreConference_index', [], Response::HTTP_SEE_OTHER);
  410.         }
  411.         return $this->render('apropos/maitres_conferences/edit.html.twig', [
  412.             "title" => "MaitresConferences",
  413.             'maitreConference' => $maitreConference,
  414.             'form' => $form->createView(),
  415.         ]);
  416.     }
  417.     /**
  418.      * @IsGranted("ROLE_ADMINISTRATEUR")
  419.      * @Route("/dashboard/apropos/maitreConference/{id}", name="maitreConference_delete", methods={"POST"})
  420.      */
  421.     public function deletemaitreConference(Request $requestMaitresConferences $maitreConferenceEntityManagerInterface $manager): Response
  422.     {
  423.         if ($this->isCsrfTokenValid('delete' $maitreConference->getId(), $request->request->get('_token'))) {
  424.             $maitreConference->setIsDeleted(1);
  425.             $manager->flush();
  426.         }
  427.         return $this->redirectToRoute('maitreConference_index', [], Response::HTTP_SEE_OTHER);
  428.     }
  429.     // Representants des doctorants
  430.     /**
  431.      * @IsGranted("ROLE_ADMINISTRATEUR")
  432.      * @Route("/dashboard/apropos/doctorant/", name="doctorant_index", methods={"GET"})
  433.      */
  434.     public function indexDoctorant(DoctorantsRepository $doctorantRepositoryPaginatorInterface $paginatorRequest $request): Response
  435.     {
  436.         $doctorants $doctorantRepository->findBy(["isDeleted" => 0], ['id' => 'desc']);
  437.         $pagination $paginator->paginate(
  438.             $doctorants/* query NOT result */
  439.             $request->query->getInt('page'1), /*page number*/
  440.             /*limit per page*/
  441.         );
  442.         return $this->render('apropos/doctorants/index.html.twig', ['title' => 'Doctorants',
  443.             'doctorants' => $pagination,
  444.         ]);
  445.     }
  446.     /**
  447.      * @IsGranted("ROLE_ADMINISTRATEUR")
  448.      * @Route("/dashboard/apropos/doctorant/new", name="doctorant_new", methods={"GET","POST"})
  449.      */
  450.     public function newdoctorant(Request $requestEntityManagerInterface $manager): Response
  451.     {
  452.         $destination $this->getParameter('kernel.project_dir') . '/public/admin/uploads';
  453.         $doctorant = new Doctorants();
  454.         $form $this->createForm(DoctorantsType::class, $doctorant);
  455.         $form->handleRequest($request);
  456.         if ($request->isMethod('post')) {
  457.             $image $request->files->get('image');
  458.             $image_name "doctorant" '-' uniqid() . '.' $image->guessExtension();
  459.             $image->move(
  460.                 $destination,
  461.                 $image_name
  462.             );
  463.             $doctorant->setimage($image_name);
  464.             $nom $request->request->get("nom");
  465.             $doctorant->setNom($nom);
  466.             $titre $request->request->get("titre");
  467.             $doctorant->setTitre($titre);
  468.             $manager->persist($doctorant);
  469.             $manager->flush();
  470.             return $this->redirectToRoute('doctorant_index', [], Response::HTTP_SEE_OTHER);
  471.         }
  472.         return $this->render('apropos/doctorants/new.html.twig', [
  473.             'title' => 'doctorants',
  474.             'doctorant' => $doctorant,
  475.             'form' => $form->createView(),
  476.         ]);
  477.     }
  478.     /**
  479.      * @IsGranted("ROLE_ADMINISTRATEUR")
  480.      * @Route("/dashboard/apropos/doctorant/{id}/edit", name="doctorant_edit", methods={"GET","POST"})
  481.      */
  482.     public function editdoctorant(Request $requestDoctorants $doctorantEntityManagerInterface $manager): Response
  483.     {
  484.         $destination $this->getParameter('kernel.project_dir') . '/public/admin/uploads';
  485.         $form $this->createForm(DoctorantsType::class, $doctorant);
  486.         $form->handleRequest($request);
  487.         if ($request->isMethod('post')) {
  488.             if ($request->files->get('image') != null) {
  489.                 $image $request->files->get('image');
  490.                 $image_name "doctorant" '-' uniqid() . '.' $image->guessExtension();
  491.                 $image->move(
  492.                     $destination,
  493.                     $image_name
  494.                 );
  495.                 $doctorant->setImage($image_name);
  496.             }
  497.             $nom $request->request->get("nom");
  498.             $doctorant->setNom($nom);
  499.             $titre $request->request->get("titre");
  500.             $doctorant->setTitre($titre);
  501.             $manager->flush();
  502.             return $this->redirectToRoute('doctorant_index', [], Response::HTTP_SEE_OTHER);
  503.         }
  504.         return $this->render('apropos/doctorants/edit.html.twig', [
  505.             "title" => "doctorants",
  506.             'doctorant' => $doctorant,
  507.             'form' => $form->createView(),
  508.         ]);
  509.     }
  510.     /**
  511.      * @IsGranted("ROLE_ADMINISTRATEUR")
  512.      * @Route("/dashboard/apropos/doctorant/{id}", name="doctorant_delete", methods={"POST"})
  513.      */
  514.     public function deletedoctorant(Request $requestDoctorants $doctorantEntityManagerInterface $manager): Response
  515.     {
  516.         if ($this->isCsrfTokenValid('delete' $doctorant->getId(), $request->request->get('_token'))) {
  517.             $doctorant->setIsDeleted(1);
  518.             $manager->flush();
  519.         }
  520.         return $this->redirectToRoute('doctorant_index', [], Response::HTTP_SEE_OTHER);
  521.     }
  522.     // Les directeurs professeurs
  523.     /**
  524.      * @IsGranted("ROLE_ADMINISTRATEUR")
  525.      * @Route("/dashboard/apropos/directeurProfesseur/", name="directeurProfesseur_index", methods={"GET"})
  526.      */
  527.     public function indexDirecteurProfesseur(DirecteursProfesseursRepository $directeurProfesseurRepositoryPaginatorInterface $paginatorRequest $request): Response
  528.     {
  529.         $directeursProfesseurs $directeurProfesseurRepository->findBy(["isDeleted" => 0], ['id' => 'desc']);
  530.         $pagination $paginator->paginate(
  531.             $directeursProfesseurs/* query NOT result */
  532.             $request->query->getInt('page'1), /*page number*/
  533.             /*limit per page*/
  534.         );
  535.         return $this->render('apropos/directeurs_professeurs/index.html.twig', ['title' => 'Directeurs professeurs',
  536.             'directeursProfesseurs' => $pagination,
  537.         ]);
  538.     }
  539.     /**
  540.      * @IsGranted("ROLE_ADMINISTRATEUR")
  541.      * @Route("/dashboard/apropos/directeurProfesseur/new", name="directeurProfesseur_new", methods={"GET","POST"})
  542.      */
  543.     public function newDirecteurProfesseur(Request $requestEntityManagerInterface $manager): Response
  544.     {
  545.         $destination $this->getParameter('kernel.project_dir') . '/public/admin/uploads';
  546.         $directeurProfesseur = new DirecteursProfesseurs();
  547.         $form $this->createForm(DirecteursProfesseursType::class, $directeurProfesseur);
  548.         $form->handleRequest($request);
  549.         if ($request->isMethod('post')) {
  550.             $image $request->files->get('image');
  551.             $image_name "directeurProfesseur" '-' uniqid() . '.' $image->guessExtension();
  552.             $image->move(
  553.                 $destination,
  554.                 $image_name
  555.             );
  556.             $directeurProfesseur->setimage($image_name);
  557.             $nom $request->request->get("nom");
  558.             $directeurProfesseur->setNom($nom);
  559.             $titre $request->request->get("titre");
  560.             $directeurProfesseur->setTitre($titre);
  561.             $manager->persist($directeurProfesseur);
  562.             $manager->flush();
  563.             return $this->redirectToRoute('directeurProfesseur_index', [], Response::HTTP_SEE_OTHER);
  564.         }
  565.         return $this->render('apropos/directeurs_professeurs/new.html.twig', [
  566.             'title' => 'Directeur professeurs',
  567.             'directeurProfesseur' => $directeurProfesseur,
  568.             'form' => $form->createView(),
  569.         ]);
  570.     }
  571.     /**
  572.      * @IsGranted("ROLE_ADMINISTRATEUR")
  573.      * @Route("/dashboard/apropos/directeurProfesseur/{id}/edit", name="directeurProfesseur_edit", methods={"GET","POST"})
  574.      */
  575.     public function editDirecteurProfesseur(Request $requestDirecteursProfesseurs $directeurProfesseurEntityManagerInterface $manager): Response
  576.     {
  577.         $destination $this->getParameter('kernel.project_dir') . '/public/admin/uploads';
  578.         $form $this->createForm(DirecteursProfesseursType::class, $directeurProfesseur);
  579.         $form->handleRequest($request);
  580.         if ($request->isMethod('post')) {
  581.             if ($request->files->get('image') != null) {
  582.                 $image $request->files->get('image');
  583.                 $image_name "directeurProfesseur" '-' uniqid() . '.' $image->guessExtension();
  584.                 $image->move(
  585.                     $destination,
  586.                     $image_name
  587.                 );
  588.                 $directeurProfesseur->setImage($image_name);
  589.             }
  590.             $nom $request->request->get("nom");
  591.             $directeurProfesseur->setNom($nom);
  592.             $titre $request->request->get("titre");
  593.             $directeurProfesseur->setTitre($titre);
  594.             $manager->flush();
  595.             return $this->redirectToRoute('directeurProfesseur_index', [], Response::HTTP_SEE_OTHER);
  596.         }
  597.         return $this->render('apropos/directeurs_professeurs/edit.html.twig', [
  598.             "title" => "Directeur professeurs",
  599.             'directeurProfesseur' => $directeurProfesseur,
  600.             'form' => $form->createView(),
  601.         ]);
  602.     }
  603.     /**
  604.      * @IsGranted("ROLE_ADMINISTRATEUR")
  605.      * @Route("/dashboard/apropos/directeurProfesseur/{id}", name="directeurProfesseur_delete", methods={"POST"})
  606.      */
  607.     public function deleteDirecteurProfesseur(Request $requestDirecteursProfesseurs $directeurProfesseurEntityManagerInterface $manager): Response
  608.     {
  609.         if ($this->isCsrfTokenValid('delete' $directeurProfesseur->getId(), $request->request->get('_token'))) {
  610.             $directeurProfesseur->setIsDeleted(1);
  611.             $manager->flush();
  612.         }
  613.         return $this->redirectToRoute('directeurProfesseur_index', [], Response::HTTP_SEE_OTHER);
  614.     }
  615.     // Chefs de projets 
  616.     /**
  617.      * @IsGranted("ROLE_ADMINISTRATEUR")
  618.      * @Route("/dashboard/apropos/chefProjet/", name="chefProjet_index", methods={"GET"})
  619.      */
  620.     public function indexChefProjet(ChefsProjetsRepository $chefProjetRepositoryPaginatorInterface $paginatorRequest $request): Response
  621.     {
  622.         $chefsProjets $chefProjetRepository->findBy(["isDeleted" => 0], ['id' => 'desc']);
  623.         $pagination $paginator->paginate(
  624.             $chefsProjets/* query NOT result */
  625.             $request->query->getInt('page'1), /*page number*/
  626.             /*limit per page*/
  627.         );
  628.         return $this->render('apropos/chefs_projets/index.html.twig', ['title' => 'Chefs de projets',
  629.             'chefsProjets' => $pagination,
  630.         ]);
  631.     }
  632.     /**
  633.      * @IsGranted("ROLE_ADMINISTRATEUR")
  634.      * @Route("/dashboard/apropos/chefProjet/new", name="chefProjet_new", methods={"GET","POST"})
  635.      */
  636.     public function newChefProjet(Request $requestEntityManagerInterface $manager): Response
  637.     {
  638.         $destination $this->getParameter('kernel.project_dir') . '/public/admin/uploads';
  639.         $chefProjet = new ChefsProjets();
  640.         $form $this->createForm(ChefsProjetsType::class, $chefProjet);
  641.         $form->handleRequest($request);
  642.         if ($request->isMethod('post')) {
  643.             $image $request->files->get('image');
  644.             $image_name "chefProjet" '-' uniqid() . '.' $image->guessExtension();
  645.             $image->move(
  646.                 $destination,
  647.                 $image_name
  648.             );
  649.             $chefProjet->setimage($image_name);
  650.             $nom $request->request->get("nom");
  651.             $chefProjet->setNom($nom);
  652.             $titre $request->request->get("titre");
  653.             $chefProjet->setTitre($titre);
  654.             $manager->persist($chefProjet);
  655.             $manager->flush();
  656.             return $this->redirectToRoute('chefProjet_index', [], Response::HTTP_SEE_OTHER);
  657.         }
  658.         return $this->render('apropos/chefs_projets/new.html.twig', [
  659.             'title' => 'Chefs de projets',
  660.             'chefProjet' => $chefProjet,
  661.             'form' => $form->createView(),
  662.         ]);
  663.     }
  664.     /**
  665.      * @IsGranted("ROLE_ADMINISTRATEUR")
  666.      * @Route("/dashboard/apropos/chefProjet/{id}/edit", name="chefProjet_edit", methods={"GET","POST"})
  667.      */
  668.     public function editChefProjet(Request $requestChefsProjets $chefProjetEntityManagerInterface $manager): Response
  669.     {
  670.         $destination $this->getParameter('kernel.project_dir') . '/public/admin/uploads';
  671.         $form $this->createForm(ChefsProjetsType::class, $chefProjet);
  672.         $form->handleRequest($request);
  673.         if ($request->isMethod('post')) {
  674.             if ($request->files->get('image') != null) {
  675.                 $image $request->files->get('image');
  676.                 $image_name "chefProjet" '-' uniqid() . '.' $image->guessExtension();
  677.                 $image->move(
  678.                     $destination,
  679.                     $image_name
  680.                 );
  681.                 $chefProjet->setImage($image_name);
  682.             }
  683.             $nom $request->request->get("nom");
  684.             $chefProjet->setNom($nom);
  685.             $titre $request->request->get("titre");
  686.             $chefProjet->setTitre($titre);
  687.             $manager->flush();
  688.             return $this->redirectToRoute('chefProjet_index', [], Response::HTTP_SEE_OTHER);
  689.         }
  690.         return $this->render('apropos/chefs_projets/edit.html.twig', [
  691.             "title" => "Chefs de projets",
  692.             'chefProjet' => $chefProjet,
  693.             'form' => $form->createView(),
  694.         ]);
  695.     }
  696.     /**
  697.      * @IsGranted("ROLE_ADMINISTRATEUR")
  698.      * @Route("/dashboard/apropos/chefProjet/{id}", name="chefProjet_delete", methods={"POST"})
  699.      */
  700.     public function deleteChefProjet(Request $requestChefsProjets $chefProjetEntityManagerInterface $manager): Response
  701.     {
  702.         if ($this->isCsrfTokenValid('delete' $chefProjet->getId(), $request->request->get('_token'))) {
  703.             $chefProjet->setIsDeleted(1);
  704.             $manager->flush();
  705.         }
  706.         return $this->redirectToRoute('chefProjet_index', [], Response::HTTP_SEE_OTHER);
  707.     }
  708.     // chefs d'equipes
  709.     /**
  710.      * @IsGranted("ROLE_ADMINISTRATEUR")
  711.      * @Route("/dashboard/apropos/chefEquipe/", name="chefEquipe_index", methods={"GET"})
  712.      */
  713.     public function indexChefEquipe(ChefsEquipesRepository $chefEquipeRepositoryPaginatorInterface $paginatorRequest $request): Response
  714.     {
  715.         $chefsEquipes $chefEquipeRepository->findBy(["isDeleted" => 0], ['id' => 'desc']);
  716.         $pagination $paginator->paginate(
  717.             $chefsEquipes/* query NOT result */
  718.             $request->query->getInt('page'1), /*page number*/
  719.             /*limit per page*/
  720.         );
  721.         return $this->render('apropos/chefs_equipes/index.html.twig', ['title' => 'chefs equipes',
  722.             'chefsEquipes' => $pagination,
  723.         ]);
  724.     }
  725.     /**
  726.      * @IsGranted("ROLE_ADMINISTRATEUR")
  727.      * @Route("/dashboard/apropos/chefEquipe/new", name="chefEquipe_new", methods={"GET","POST"})
  728.      */
  729.     public function newChefEquipe(Request $requestEntityManagerInterface $manager): Response
  730.     {
  731.         $destination $this->getParameter('kernel.project_dir') . '/public/admin/uploads';
  732.         $chefEquipe = new ChefsEquipes();
  733.         $form $this->createForm(ChefsEquipesType::class, $chefEquipe);
  734.         $form->handleRequest($request);
  735.         if ($request->isMethod('post')) {
  736.             $image $request->files->get('image');
  737.             $image_name "chefEquipe" '-' uniqid() . '.' $image->guessExtension();
  738.             $image->move(
  739.                 $destination,
  740.                 $image_name
  741.             );
  742.             $chefEquipe->setimage($image_name);
  743.             $nom $request->request->get("nom");
  744.             $chefEquipe->setNom($nom);
  745.             $titre $request->request->get("titre");
  746.             $chefEquipe->setTitre($titre);
  747.             $manager->persist($chefEquipe);
  748.             $manager->flush();
  749.             return $this->redirectToRoute('chefEquipe_index', [], Response::HTTP_SEE_OTHER);
  750.         }
  751.         return $this->render('apropos/chefs_equipes/new.html.twig', [
  752.             'title' => 'chefs Equipes',
  753.             'chefEquipe' => $chefEquipe,
  754.             'form' => $form->createView(),
  755.         ]);
  756.     }
  757.     /**
  758.      * @IsGranted("ROLE_ADMINISTRATEUR")
  759.      * @Route("/dashboard/apropos/chefEquipe/{id}/edit", name="chefEquipe_edit", methods={"GET","POST"})
  760.      */
  761.     public function editChefEquipe(Request $requestChefsEquipes $chefEquipeEntityManagerInterface $manager): Response
  762.     {
  763.         $destination $this->getParameter('kernel.project_dir') . '/public/admin/uploads';
  764.         $form $this->createForm(ChefsEquipesType::class, $chefEquipe);
  765.         $form->handleRequest($request);
  766.         if ($request->isMethod('post')) {
  767.             if ($request->files->get('image') != null) {
  768.                 $image $request->files->get('image');
  769.                 $image_name "chefEquipe" '-' uniqid() . '.' $image->guessExtension();
  770.                 $image->move(
  771.                     $destination,
  772.                     $image_name
  773.                 );
  774.                 $chefEquipe->setImage($image_name);
  775.             }
  776.             $nom $request->request->get("nom");
  777.             $chefEquipe->setNom($nom);
  778.             $titre $request->request->get("titre");
  779.             $chefEquipe->setTitre($titre);
  780.             $manager->flush();
  781.             return $this->redirectToRoute('chefEquipe_index', [], Response::HTTP_SEE_OTHER);
  782.         }
  783.         return $this->render('apropos/chefs_equipes/edit.html.twig', [
  784.             "title" => "chefs Equipes",
  785.             'chefEquipe' => $chefEquipe,
  786.             'form' => $form->createView(),
  787.         ]);
  788.     }
  789.     /**
  790.      * @IsGranted("ROLE_ADMINISTRATEUR")
  791.      * @Route("/dashboard/apropos/chefEquipe/{id}", name="chefEquipe_delete", methods={"POST"})
  792.      */
  793.     public function deleteChefEquipe(Request $requestChefsEquipes $chefEquipeEntityManagerInterface $manager): Response
  794.     {
  795.         if ($this->isCsrfTokenValid('delete' $chefEquipe->getId(), $request->request->get('_token'))) {
  796.             $chefEquipe->setIsDeleted(1);
  797.             $manager->flush();
  798.         }
  799.         return $this->redirectToRoute('chefEquipe_index', [], Response::HTTP_SEE_OTHER);
  800.     }
  801. }
  802.     
  803.