diff --git a/src/Controller/AdminController.php b/src/Controller/AdminController.php index 7a47757..5147131 100644 --- a/src/Controller/AdminController.php +++ b/src/Controller/AdminController.php @@ -3,8 +3,10 @@ namespace App\Controller; use App\Entity\Participant; +use App\Entity\Site; use App\Entity\Ville; use App\Repository\ParticipantRepository; +use App\Repository\SiteRepository; use App\Repository\VilleRepository; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; @@ -33,6 +35,53 @@ class AdminController extends AbstractController '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 { @@ -44,30 +93,32 @@ class AdminController extends AbstractController $participant = new Participant(); $participant->setNom($row[0]); $participant->setPrenom($row[1]); - $participant->setTelephone($row[2]); - $participant->setEmail($row[3]); - $participant->setAdministrateur((bool)$row[4]); - $participant->setActif((bool)$row[5]); - $participant->setRoles(explode('|', $row[6])); - $participant->setPassword(password_hash($row[7], PASSWORD_BCRYPT)); + $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('participant_index'); + 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,Téléphone,Email,Administrateur,Actif,Rôles,Password\n"; + $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\n", + "%s,%s,%s,%s,%s,%s,%s,%s,%s\n", $participant->getNom(), $participant->getPrenom(), + $participant->getPseudo(), $participant->getTelephone(), - $participant->getMail(), + $participant->getEmail(), $participant->isAdministrateur() ? '1' : '0', $participant->isActif() ? '1' : '0', implode('|', $participant->getRoles()), @@ -77,7 +128,6 @@ class AdminController extends AbstractController $response = new Response($csv); $response->headers->set('Content-Type', 'text/csv'); $response->headers->set('Content-Disposition', 'attachment;filename="participants.csv"'); - return $response; } @@ -91,7 +141,7 @@ class AdminController extends AbstractController ]); } #[Route('/admin/city/add', name: 'app_adminCityAdd', methods: ['POST'])] - public function adminCityAdd(Request $request, EntityManagerInterface $entityManager, VilleRepository $villeRepository): RedirectResponse + public function adminCityAdd(Request $request, EntityManagerInterface $entityManager): Response { try { // Récupérer les données envoyées par le formulaire @@ -118,11 +168,11 @@ class AdminController extends AbstractController return $this->redirectToRoute('app_adminCity'); } } - #[Route('/admin/city/delete', name: 'app_adminCityDelete')] - public function adminCityDelete(String $id, EntityManagerInterface $entityManager): RedirectResponse + #[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 = $entityManager->getRepository(Ville::class)->find($id); + $city = $villeRepository->find($id); // Vérifier si la ville existe if (!$city) { @@ -139,4 +189,40 @@ class AdminController extends AbstractController $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'); + } + } } diff --git a/templates/admin/sidebar.html.twig b/templates/admin/sidebar.html.twig index c336b3c..5d34fef 100644 --- a/templates/admin/sidebar.html.twig +++ b/templates/admin/sidebar.html.twig @@ -17,7 +17,7 @@
  • - + 📍 Sites
  • diff --git a/templates/admin/site.html.twig b/templates/admin/site.html.twig new file mode 100644 index 0000000..90fdc9b --- /dev/null +++ b/templates/admin/site.html.twig @@ -0,0 +1,81 @@ +{% extends 'main/base.html.twig' %} + +{% block title %}📣 Sortie.com Admin Site 🔊{% endblock %} + +{% block content %} +
    + {% include 'admin/sidebar.html.twig' %} + + +
    +

    Gestion des sites

    + + +
    + + +
    + + +
    + + + + + + + + + {% for site in sites %} + + + + + {% else %} + + + + {% endfor %} + +
    SiteActions
    {{ site.nom }} + Supprimer +
    Aucun site trouvée
    +
    +
    + + + + + +
    +{% endblock %} diff --git a/templates/admin/user.html.twig b/templates/admin/user.html.twig index b13cfa8..1b1acb9 100644 --- a/templates/admin/user.html.twig +++ b/templates/admin/user.html.twig @@ -41,6 +41,7 @@ Nom Prénom + Pseudo Téléphone Email Administrateur @@ -54,8 +55,9 @@ {{ participant.nom }} {{ participant.prenom }} + {{ participant.pseudo }} {{ participant.telephone }} - {{ participant.mail }} + {{ participant.email }} {{ participant.administrateur ? 'Oui' : 'Non' }} @@ -66,8 +68,10 @@ {{ participant.roles|join(', ') }} - Modifier - Supprimer + + {{ participant.actif ? 'Activer' : 'Désactiver' }} + + Supprimer {% else %}