render('admin/index.html.twig', [ 'controller_name' => 'AdminController', ]); } //Gestion des utilisateurs #[Route('/admin/user', name: 'app_adminUser')] public function adminUser(ParticipantRepository $participantRepository): Response { return $this->render('admin/user.html.twig', [ 'participants' => $participantRepository->findAll(), 'controller_name' => 'AdminController', ]); } #[Route('/admin/user/disable/{id}', name: 'app_adminUserDisable')] public function disableParticipant(string $id, ParticipantRepository $participantRepository, EntityManagerInterface $entityManager): RedirectResponse { // Récupérer le participant à partir de l'id $participant = $participantRepository->find($id); // Vérifier si le participant existe if (!$participant) { $this->addFlash('error', 'Le participant demandé n\'existe pas.'); return $this->redirectToRoute('app_adminUser'); // Redirigez vers une liste ou une autre page } // Désactiver le participant (par exemple, définir une propriété "isActive" à false) if ($participant->isActif()){ $participant->setActif(false); }else{ $participant->setActif(true); } // Sauvegarder la modification en base de données $entityManager->persist($participant); $entityManager->flush(); // Ajouter un message de succès et rediriger $this->addFlash('success', 'Participant désactivé avec succès.'); return $this->redirectToRoute('app_adminUser'); } #[Route('/admin/user/delete/{id}', name: 'app_adminUserDelete')] public function deleteUser(string $id, ParticipantRepository $participantRepository, EntityManagerInterface $entityManager): RedirectResponse { // Récupérer l'utilisateur ou le participant à partir de l'id $participant = $participantRepository->find($id); // Vérifier si l'utilisateur existe if (!$participant) { $this->addFlash('error', 'L\'utilisateur demandé n\'existe pas.'); return $this->redirectToRoute('app_adminUser'); // Redirigez vers une liste ou une autre page } // Supprimer l'utilisateur $entityManager->remove($participant); $entityManager->flush(); // Ajouter un message de succès et rediriger $this->addFlash('success', 'Utilisateur supprimé avec succès.'); return $this->redirectToRoute('app_adminUser'); // Redirigez vers la liste des utilisateurs } #[Route('/admin/user/import', name: 'participant_import', methods: ['POST'])] public function import(Request $request, EntityManagerInterface $em): Response { $file = $request->files->get('csv_file'); if ($file) { $csvData = array_map('str_getcsv', file($file->getPathname())); foreach ($csvData as $index => $row) { if ($index === 0) continue; $participant = new Participant(); $participant->setNom($row[0]); $participant->setPrenom($row[1]); $participant->setPseudo($row[2]); $participant->setTelephone($row[3]); $participant->setEmail($row[4]); $participant->setAdministrateur((bool)$row[5]); $participant->setActif((bool)$row[6]); $participant->setRoles(explode('|', $row[7])); $participant->setPassword(password_hash($row[8], PASSWORD_BCRYPT)); $em->persist($participant); } $em->flush(); } return $this->redirectToRoute('app_adminUser'); } #[Route('/admin/user/export', name: 'participant_export')] public function export(ParticipantRepository $participantRepository): Response { $participants = $participantRepository->findAll(); $csv = "Nom,Prénom,Pseudo,Téléphone,Email,Administrateur,Actif,Rôles,Password\n"; foreach ($participants as $participant) { $csv .= sprintf( "%s,%s,%s,%s,%s,%s,%s,%s,%s\n", $participant->getNom(), $participant->getPrenom(), $participant->getPseudo(), $participant->getTelephone(), $participant->getEmail(), $participant->isAdministrateur() ? '1' : '0', $participant->isActif() ? '1' : '0', implode('|', $participant->getRoles()), $participant->getPassword() ); } $response = new Response($csv); $response->headers->set('Content-Type', 'text/csv'); $response->headers->set('Content-Disposition', 'attachment;filename="participants.csv"'); return $response; } //Gestion des villes #[Route('/admin/city', name: 'app_adminCity')] public function adminCity(VilleRepository $villeRepository): Response { return $this->render('admin/city.html.twig', [ 'citys' => $villeRepository->findAll(), 'controller_name' => 'AdminController', ]); } #[Route('/admin/city/add', name: 'app_adminCityAdd', methods: ['POST'])] public function adminCityAdd(Request $request, EntityManagerInterface $entityManager): Response { try { // Récupérer les données envoyées par le formulaire $postalCode = $request->request->get('postalCode'); $cityName = $request->request->get('citySelect'); // Vérifier que les champs ne sont pas vides if (!$postalCode || !$cityName) { return new Response('Tous les champs sont requis.', Response::HTTP_BAD_REQUEST); } // Créer une nouvelle entité City et définir ses propriétés $city = new Ville(); $city->setNom($cityName); $city->setCodePostal($postalCode); // Enregistrer la ville dans la base de données $entityManager->persist($city); $entityManager->flush(); $this->addFlash('success', "Ville ajouté !"); return $this->redirectToRoute('app_adminCity'); } catch(\Exception $e) { $this->addFlash('error', "Erreur : " . $e->getMessage()); return $this->redirectToRoute('app_adminCity'); } } #[Route('/admin/city/delete/{id}', name: 'app_adminCityDelete')] public function adminCityDelete(string $id, VilleRepository $villeRepository, EntityManagerInterface $entityManager): RedirectResponse { // Récupérer la ville à supprimer $city = $villeRepository->find($id); // Vérifier si la ville existe if (!$city) { // Si la ville n'existe pas, rediriger avec un message d'erreur $this->addFlash('error', 'La ville demandée n\'existe pas.'); return $this->redirectToRoute('app_adminCity'); // Rediriger vers la liste des villes } // Supprimer la ville $entityManager->remove($city); $entityManager->flush(); // Ajouter un message de succès et rediriger vers la liste des villes $this->addFlash('success', 'Ville supprimée avec succès.'); return $this->redirectToRoute('app_adminCity'); } //Gestion des sites #[Route('/admin/site', name: 'app_adminSite')] public function adminSite(SiteRepository $siteRepository): Response { return $this->render('admin/site.html.twig', [ 'sites' => $siteRepository->findAll(), 'controller_name' => 'AdminController', ]); } #[Route('/admin/site/add', name: 'app_adminSiteAdd', methods: ['POST'])] public function adminSiteAdd(Request $request, EntityManagerInterface $entityManager): Response { try { // Récupérer les données envoyées par le formulaire $nom = $request->request->get('nom'); // Vérifier que les champs ne sont pas vides if (!$nom) { return new Response('Tous les champs sont requis.', Response::HTTP_BAD_REQUEST); } // Créer une nouvelle entité City et définir ses propriétés $site = new Site(); $site->setNom($nom); // Enregistrer la ville dans la base de données $entityManager->persist($site); $entityManager->flush(); $this->addFlash('success', "Site ajouté !"); return $this->redirectToRoute('app_adminSite'); } catch(\Exception $e) { $this->addFlash('error', "Erreur : " . $e->getMessage()); return $this->redirectToRoute('app_adminSite'); } } #[Route('/admin/site/delete/{id}', name: 'app_adminSiteDelete')] public function adminSiteDelete(string $id, SiteRepository $siteRepository, EntityManagerInterface $entityManager): RedirectResponse { // Récupérer la ville à supprimer $site = $siteRepository->find($id); // Vérifier si la ville existe if (!$site) { // Si la ville n'existe pas, rediriger avec un message d'erreur $this->addFlash('error', 'Le site demandée n\'existe pas.'); return $this->redirectToRoute('app_adminSite'); // Rediriger vers la liste des villes } // Supprimer la ville $entityManager->remove($site); $entityManager->flush(); // Ajouter un message de succès et rediriger vers la liste des villes $this->addFlash('success', 'Site supprimée avec succès.'); return $this->redirectToRoute('app_adminSite'); } }