src/Controller/ProjectController.php line 26
<?phpnamespace App\Controller;use App\Entity\Projet;use App\Form\Projet2Type;use App\Repository\ProjetRepository;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;use App\Entity\User;use App\Entity\Chercheur;use App\Entity\Membre;use App\Entity\Directeur;use App\Entity\Theme;use Doctrine\Persistence\ManagerRegistry;#[Route('/project')]class ProjectController extends AbstractController{#[Route('/', name: 'app_project_index', methods: ['GET'])]public function index(ProjetRepository $projetRepository ,ManagerRegistry $doctrine): Response{$user = $this->getUser();$role=$user->getRoles()[0];$chercheur = array();$typeStructure = "";if($role === "ROLE_ADMIN"){$projets = $projetRepository->findAll();}else if ($role === "ROLE_DIRECTEUR"){$directeur = $doctrine->getRepository(Directeur::class)->findOneBy(['user' => $user]);$etabId = $directeur->getEtablissement()->getId();$projets = $doctrine->getRepository(Projet::class)->findProjectDoirecteur($etabId);}else if ($role === "ROLE_RESPONSABLE"){$chercheur = $doctrine->getRepository(Chercheur::class)->findOneBy(['user' => $user]);$structure = $chercheur->getStructure();$typeStructure = $structure->getType();$projets = $doctrine->getRepository(Projet::class)->findBy(['structure' => $structure]);}else if ($role === "ROLE_CHERCHEUR"){$chercheur = $doctrine->getRepository(Chercheur::class)->findOneBy(['user' => $user]);$idChercheur = $chercheur->getId();$projets = array();//dump($projets);die;if ($chercheur) {$membres = $doctrine->getRepository(Membre::class)->findBy(['chercheur' => $chercheur]);if($membres){foreach ($membres as $membre) {$projets[] = $membre->getProjet();}}}}$message = "pas des projets dans l'unité de service commun ";if($typeStructure != 3 ){//dump($projets);die;return $this->render('project/index.html.twig', ['projets' => $projets,'chercheur'=> $chercheur]);}else{return $this->render('bundles/exception/error.html.twig', ['message'=>$message,]);}}#[IsGranted('ROLE_RESPONSABLE')]#[Route('/new', name: 'app_project_new', methods: ['GET', 'POST'])]public function new(Request $request, ProjetRepository $projetRepository, ManagerRegistry $doctrine): Response{$em = $doctrine->getManager();$user = $this->getUser();$cher = $doctrine->getRepository(Chercheur::class)->findOneBy(['user' => $user]);$structure = $cher->getStructure();$etablissement = $cher->getEtablissement();$directeurs = $doctrine->getRepository(Chercheur::class)->findBy(['etablissement' => $etablissement , 'structure'=>$structure]);$themes = $doctrine->getRepository(Theme::class)->findAll();$projet = new Projet();$membre = new Membre();$form = $this->createForm(Projet2Type::class);$form->handleRequest($request);if ($form->isSubmitted() ) {$data = $form->getData();$currentImage = $data->getImage();$img = $form->get('image')->getData();//dump($data);die;$projet->setStructure($structure);$projet->setUser($user);$projet->setEtat($data->getEtat());$projet->setNom($data->getNom());$projet->setStatut($data->getStatut());$projet->setDateDebut($data->getDateDebut());$projet->setDateFin($data->getDateFin());$projet->setDirecteur($data->getDirecteur());$projet->setObjectif($data->getObjectif());$projet->setDescription($data->getDescription());$projet->setTheme($data->getTheme());if ($img != null) {$ext1 = strtolower($img->getClientOriginalExtension());$photo1Name = 'Etab_photo1_' . '_' . $projet->getId() . '.' . $ext1;$img->move('upload/projets', $photo1Name);$projet->setImage($photo1Name);}else {$projet->setImage($currentImage);}$em->persist($projet);$membre->setProjet($projet);$membre->setChercheur($data->getDirecteur());$membre->setRole('directeur');$em->persist($membre);$em->flush();// $projetRepository->save($projet, true);return $this->redirectToRoute('app_project_index', [], Response::HTTP_SEE_OTHER);}return $this->renderForm('project/new.html.twig', ['projet' => $projet,'form' => $form,'directeurs' => $directeurs,'themes' => $themes,'user' => $user,]);}#[Route('/{id}', name: 'app_project_show', methods: ['GET'])]public function show(Projet $projet ,ManagerRegistry $doctrine): Response{$em = $doctrine->getManager();$user = $this->getUser();$cher = $doctrine->getRepository(Chercheur::class)->findOneBy(['user' => $user]);return $this->render('project/show.html.twig', ['projet' => $projet,'chercheur' => $cher,]);}#[IsGranted('ROLE_RESPONSABLE')]#[Route('/{id}/edit', name: 'app_project_edit', methods: ['GET', 'POST'])]public function edit(Request $request, Projet $projet, ProjetRepository $projetRepository,ManagerRegistry $doctrine): Response{$em = $doctrine->getManager();$form = $this->createForm(Projet2Type::class, $projet);$form->handleRequest($request);$user = $this->getUser();$cher = $doctrine->getRepository(Chercheur::class)->findOneBy(['user' => $user]);$structure = $cher->getStructure();$etablissement = $cher->getEtablissement();$directeurs = $doctrine->getRepository(Chercheur::class)->findBy(['etablissement' => $etablissement , 'structure'=>$structure]);if ($form->isSubmitted() ) {$data = $form->getData();$currentImage = $data->getImage();$img = $form->get('image')->getData();//dump($data,$img,$request);die;$membre = $doctrine->getRepository(Membre::class)->findOneBy(['projet' => $projet ,'role'=>'directeur']);$projet->setNom($data->getNom());$projet->setEtat($data->getEtat());$projet->setStatut($data->getStatut());$projet->setDateDebut($data->getDateDebut());$projet->setDateFin($data->getDateFin());$projet->setDirecteur($data->getDirecteur());$projet->setObjectif($data->getObjectif());$projet->setDescription($data->getDescription());$projet->setTheme($data->getTheme());if ($img != null) {$ext1 = strtolower($img->getClientOriginalExtension());$photo1Name = 'projet_photo1_' . '_' . $projet->getId() . '.' . $ext1;$img->move('upload/projets', $photo1Name);$projet->setImage($photo1Name);}else {$projet->setImage($currentImage);}//dump($projet);die;$em->persist($projet);if($membre){$membre->setProjet($projet);$membre->setChercheur($data->getDirecteur());$membre->setRole('directeur');}else{$membre = new Membre ();$membre->setProjet($projet);$membre->setChercheur($data->getDirecteur());$membre->setRole('directeur');}$em->persist($membre);$em->flush();//$projetRepository->save($projet, true);return $this->redirectToRoute('app_project_index', [], Response::HTTP_SEE_OTHER);}return $this->renderForm('project/edit.html.twig', ['projet' => $projet,'form' => $form,'directeurs'=>$directeurs,'user' => $user]);}#[IsGranted('ROLE_RESPONSABLE')]#[Route('/{id}/delete', name: 'app_project_delete', methods: ['GET','POST'])]public function delete(Request $request, Projet $projet, ProjetRepository $projetRepository,ManagerRegistry $doctrine): Response{try {$em = $doctrine->getManager();$membres = $doctrine->getRepository(Membre::class)->findBy(['projet' => $projet]);if ($membres){$this->addFlash('error', "Impossible de supprimer ce projet . Elle est associée à un ou plusieurs membres . Veuillez supprimer les membres avant de supprimer le projet.");return $this->redirectToRoute('app_project_index');}$em->remove($projet);$em->flush();} catch (\Exception $e) {$this->addFlash('error', "Une erreur s'est produite lors de la suppression du projet. Veuillez réessayer.");return $this->redirectToRoute('app_project_index');}return $this->redirectToRoute('app_project_index');}}