fileService = $fileService; } #[Route('/admin/project', name: 'app_admin_project')] public function list(ProjectRepository $projectRepository): Response { $projects = $projectRepository->findAll(); return $this->render('project/list.html.twig', [ 'usemenu' => true, 'usesidebar' => true, 'title' => 'Liste des Projets', 'routesubmit' => 'app_admin_project_submit', 'routeupdate' => 'app_admin_project_update', 'projects' => $projects, ]); } #[Route('/admin/project/submit', name: 'app_admin_project_submit')] public function submit(Request $request, EntityManagerInterface $em): Response { $project = new Project(); $project->addUser($this->getUser()); $form = $this->createForm(ProjectType::class, $project, ['mode' => 'submit']); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $em->persist($project); $em->flush(); $this->fileService->init('project', $project->getId()); return $this->redirectToRoute('app_admin_project'); } return $this->render('project/edit.html.twig', [ 'usemenu' => true, 'usesidebar' => true, 'title' => 'Création Projet', 'routecancel' => 'app_admin_project', 'routedelete' => 'app_admin_project_delete', 'mode' => 'submit', 'form' => $form, ]); } #[Route('/admin/project/update/{id}', name: 'app_admin_project_update')] public function update(int $id, Request $request, ProjectRepository $projectRepository, EntityManagerInterface $em): Response { $project = $projectRepository->find($id); if (!$project) { throw new NotFoundHttpException('La ressource demandée est introuvable.'); } $form = $this->createForm(ProjectType::class, $project, ['mode' => 'update']); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $em->flush(); return $this->redirectToRoute('app_admin_project'); } return $this->render('project/edit.html.twig', [ 'usemenu' => true, 'usesidebar' => true, 'title' => 'Modification Projet = '.$project->getTitle(), 'routecancel' => 'app_admin_project', 'routedelete' => 'app_admin_project_delete', 'mode' => 'update', 'form' => $form, 'project' => $project, ]); } #[Route('/admin/project/delete/{id}', name: 'app_admin_project_delete')] public function delete(int $id, ProjectRepository $projectRepository, EntityManagerInterface $em): Response { $project = $projectRepository->find($id); if (!$project) { throw new NotFoundHttpException('La ressource demandée est introuvable.'); } $users = $em->getRepository(User::class)->findBy(['project' => $project]); foreach ($users as $user) { $user->setProject(null); $em->flush(); } // Tentative de suppression try { $em->remove($project); $em->flush(); } catch (\Exception $e) { $this->addflash('error', $e->getMessage()); return $this->redirectToRoute('app_admin_project_update', ['id' => $id]); } return $this->redirectToRoute('app_admin_project'); } }