fileService = $fileService; } #[Route('/admin/group', name: 'app_admin_group')] public function list(GroupRepository $groupRepository): Response { $groups = $groupRepository->findAll(); return $this->render('group/list.html.twig', [ 'usemenu' => true, 'usesidebar' => true, 'title' => 'Liste des Groupes', 'routesubmit' => 'app_admin_group_submit', 'routeupdate' => 'app_admin_group_update', 'groups' => $groups, ]); } #[Route('/admin/group/submit', name: 'app_admin_group_submit')] #[Route('/user/group/submit', name: 'app_user_group_submit')] public function submit(Request $request, EntityManagerInterface $em): Response { $group = new Group(); $group->addUser($this->getUser()); $group->setStatus(Group::ACTIVE); $group->setOpen(true); $this->denyAccessUnlessGranted(GroupVoter::SUBMIT, $group); $isAdmin = str_starts_with($request->attributes->get('_route'), 'app_admin'); $form = $this->createForm(GroupType::class, $group, ['mode' => 'submit']); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $em->persist($group); $em->flush(); $this->fileService->init('group', $group->getId()); return $this->redirectToRoute($isAdmin ? 'app_admin_group_update' : 'app_user_group_update', ['id' => $group->getId()]); } return $this->render('group/edit.html.twig', [ 'usemenu' => true, 'usesidebar' => $isAdmin, 'title' => 'Création Groupe', 'routecancel' => $isAdmin ? 'app_admin_group' : 'app_home', 'routedelete' => $isAdmin ? 'app_admin_group_delete' : 'app_user_group_delete', 'mode' => 'submit', 'form' => $form, ]); } #[Route('/admin/group/update/{id}', name: 'app_admin_group_update')] #[Route('/user/group/update/{id}', name: 'app_user_group_update')] public function update(int $id, Request $request, GroupRepository $groupRepository, EntityManagerInterface $em): Response { $group = $groupRepository->find($id); if (!$group) { throw new NotFoundHttpException('La ressource demandée est introuvable.'); } $this->denyAccessUnlessGranted(GroupVoter::UPDATE, $group); $isAdmin = str_starts_with($request->attributes->get('_route'), 'app_admin'); $form = $this->createForm(GroupType::class, $group, ['mode' => 'update']); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $em->flush(); if ($isAdmin) { return $this->redirectToRoute('app_admin_group'); } else { return $this->redirectToRoute('app_user_group_view', ['id' => $group->getId()]); } } return $this->render('group/edit.html.twig', [ 'usemenu' => true, 'usesidebar' => $isAdmin, 'title' => 'Modification Groupe = '.$group->getTitle(), 'routecancel' => $isAdmin ? 'app_admin_group' : 'app_home', 'routemove' => $isAdmin ? 'app_admin_group_move' : 'app_user_group_move', 'routedelete' => $isAdmin ? 'app_admin_group_delete' : 'app_user_group_delete', 'routesubmitoption' => $isAdmin ? 'app_admin_option_submit' : 'app_user_option_submit', 'routeupdateoption' => $isAdmin ? 'app_admin_option_update' : 'app_user_option_update', 'mode' => 'update', 'form' => $form, 'group' => $group, ]); } #[Route('/admin/group/moveto/{id}/{status}', name: 'app_admin_group_move')] #[Route('/user/group/moveto/{id}/{status}', name: 'app_user_group_move')] public function move(int $id, string $status, Request $request, GroupRepository $groupRepository, EntityManagerInterface $em): Response { $group = $groupRepository->find($id); if (!$group) { throw new NotFoundHttpException('La ressource demandée est introuvable.'); } $attribute = constant(GroupVoter::class.'::MOVETO'.$status); $this->denyAccessUnlessGranted($attribute, $group); $group->setStatus(constant(Group::class.'::'.$status)); $em->flush(); $isAdmin = str_starts_with($request->attributes->get('_route'), 'app_admin'); return $this->redirectToRoute($isAdmin ? 'app_admin_group' : 'app_user_group_view', ['id' => $group->getId()]); } #[Route('/admin/group/subscribe/{id}', name: 'app_admin_group_subscribe')] #[Route('/user/group/subscribe/{id}', name: 'app_user_group_subscribe')] public function subscribe(int $id, Request $request, GroupRepository $groupRepository, EntityManagerInterface $em): Response { $group = $groupRepository->find($id); if (!$group) { throw new NotFoundHttpException('La ressource demandée est introuvable.'); } $this->denyAccessUnlessGranted(GroupVoter::CANSUBSCRIBE, $group); $group->addUser($this->getUser()); $em->flush(); $isAdmin = str_starts_with($request->attributes->get('_route'), 'app_admin'); return $this->redirectToRoute($isAdmin ? 'app_admin_group' : 'app_user_group_view', ['id' => $group->getId()]); } #[Route('/admin/group/delete/{id}', name: 'app_admin_group_delete')] #[Route('/user/group/delete/{id}', name: 'app_user_group_delete')] public function delete(int $id, Request $request, GroupRepository $groupRepository, EntityManagerInterface $em): Response { $group = $groupRepository->find($id); if (!$group) { throw new NotFoundHttpException('La ressource demandée est introuvable.'); } $this->denyAccessUnlessGranted(GroupVoter::DELETE, $group); $isAdmin = str_starts_with($request->attributes->get('_route'), 'app_admin'); // Tentative de suppression try { $em->remove($group); $em->flush(); } catch (\Exception $e) { $this->addflash('error', $e->getMessage()); } return $this->redirectToRoute($isAdmin ? 'app_admin_group' : 'app_home'); } #[Route('/user/group/view/{id}', name: 'app_user_group_view')] public function view(int $id, Request $request, GroupRepository $groupRepository, EntityManagerInterface $em): Response { $group = $groupRepository->find($id); if (!$group) { throw new NotFoundHttpException('La ressource demandée est introuvable.'); } $this->denyAccessUnlessGranted(GroupVoter::VIEW, $group); $isAdmin = str_starts_with($request->attributes->get('_route'), 'app_admin'); return $this->render('group/view.html.twig', [ 'usemenu' => true, 'usesidebar' => false, 'title' => 'Group = '.$group->getTitle(), 'routeupdate' => $isAdmin ? 'app_admin_group_update' : 'app_user_group_update', 'routecancel' => $isAdmin ? 'app_admin_group' : 'app_home', 'routedelete' => $isAdmin ? 'app_admin_group_delete' : 'app_user_group_delete', 'routemove' => $isAdmin ? 'app_admin_group_move' : 'app_user_group_move', 'routesubscribe' => $isAdmin ? 'app_admin_group_subscribe' : 'app_user_group_subscribe', 'group' => $group, ]); } }