diff --git a/src/Controller/admin/AdminFormationsController.php b/src/Controller/admin/AdminFormationsController.php index bed6f73..fe820b2 100644 --- a/src/Controller/admin/AdminFormationsController.php +++ b/src/Controller/admin/AdminFormationsController.php @@ -62,7 +62,7 @@ class AdminFormationsController extends AbstractController #[Route('/admin/creerFormation', name: 'admin.creerFormation')] public function afficherCreerFormation(Request $request) : Response{ - $formation = new Formation; + $formation = new Formation(); $formCreateFormation = $this->createForm(FormationType::class, $formation); $formCreateFormation->handleRequest($request); @@ -77,6 +77,24 @@ class AdminFormationsController extends AbstractController ]); } + #[Route('admin/formations/modifier/{id}', name: 'admin.formations.modifier')] + public function modifier(Request $request, int $id){ + $formation = $this->formationRepository->find($id); + + $formModifierFormation = $this->createForm(FormationType::class, $formation); + $formModifierFormation->handleRequest($request); + + if($formModifierFormation->isSubmitted() && $formModifierFormation->isValid()){ + $this->formationRepository->add($formation); + $this->addFlash('success', 'La formation a bien été créée !'); + return $this->redirectToRoute('admin.formations'); + } + + return $this->render('pages/admin/admin.addFormation.html.twig', [ + 'formCreateFormation'=> $formModifierFormation->createView() + ]); + } + #[Route('/admin/remove/{id}', name: 'admin.formations.remove')] public function remove(int $id) { diff --git a/src/Controller/admin/AdminPlaylistsController.php b/src/Controller/admin/AdminPlaylistsController.php new file mode 100644 index 0000000..d59a2d7 --- /dev/null +++ b/src/Controller/admin/AdminPlaylistsController.php @@ -0,0 +1,120 @@ +playlistRepository = $playlistRepository; + $this->formationRepository = $formationRepository; + $this->categorieRepository = $categorieRepository; + } + + #[Route('/admin/playlists', name: 'admin.playlists')] + public function index() : Response + { + $playlists = $this->playlistRepository->findAllOrderByName('ASC'); + return $this->render($this->playlistPage, [ + "playlists" => $playlists, + ]); + } + + #[Route('/admin/playlists/delete/{id}', name:'admin.playlists.remove')] + public function remove($id){ + $playlist = $this->playlistRepository->find($id); + if($this->playlistRepository->countFormationsByPlaylist($playlist) > 0){ + return $this->redirectToRoute('admin.playlists'); + } + + $this->playlistRepository->remove($playlist); + return $this->redirectToRoute('admin.playlists'); + } + + #[Route('/admin/playlists/modifier/{id}', name:'admin.playlists.modifier')] + public function modifier(Request $request, int $id){ + $playlist = $this->playlistRepository->find($id); + $formModifierPlaylist = $this->createForm(PlaylistType::class, $playlist); + $formModifierPlaylist->handleRequest($request); + + $formations = $this->formationRepository->findAllForOnePlaylist($id); + + if($formModifierPlaylist->isSubmitted() && $formModifierPlaylist->isValid()){ + $this->playlistRepository->add($playlist); + $this->addFlash('success', 'La playlist a bien été modifiée !'); + return $this->redirectToRoute('admin.playlists'); + } + + return $this->render('pages/admin/admin.addPlaylist.html.twig', [ + 'formModifierPlaylist'=> $formModifierPlaylist->createView(), + 'formations'=> $formations, + ]); + } + + #[Route('/admin/playlists/create', name:'admin.playlists.create')] + public function create(Request $request){ + $playlist = new Playlist; + $formCreerPlaylist = $this->createForm(PlaylistType::class, $playlist); + $formCreerPlaylist->handleRequest($request); + + $formations = []; + + if($formCreerPlaylist->isSubmitted() && $formCreerPlaylist->isValid()){ + $this->playlistRepository->add($playlist); + $this->addFlash('success', 'La playlist a bien été créée !'); + return $this->redirectToRoute('admin.playlists'); + } + + return $this->render('pages/admin/admin.addPlaylist.html.twig', [ + 'formModifierPlaylist'=> $formCreerPlaylist->createView(), + 'formations'=> $formations, + ]); + } + + #[Route('/admin/playlists/sort/{champ}/{ordre}', name:'admin.playlists.sort')] + public function sort(string $champ, string $ordre){ + // + $playlists = $this->playlistRepository->findAllOrderByName($ordre); + return $this->render($this->playlistPage, [ + "playlists" => $playlists, + ]); + } + + #[Route('/admin/playlists/recherche/{champ}/{table}', name: 'adminplaylists.findallcontain')] + public function findAllContain($champ, Request $request, $table=""): Response{ + $valeur = $request->get("recherche"); + $playlists = $this->playlistRepository->findByContainValue($champ, $valeur, $table); + $categories = $this->categorieRepository->findAll(); + + $nombreFormations = []; + foreach ($playlists as $p) { + $nombreFormations[$p->getId()] = $this->playlistRepository->countFormationsByPlaylist($p); + } + + return $this->render($this->playlistPage, [ + 'playlists' => $playlists, + 'categories' => $categories, + 'valeur' => $valeur, + 'table' => $table, + 'nombreFormations' => $nombreFormations + ]); + } +} \ No newline at end of file diff --git a/src/Entity/Playlist.php b/src/Entity/Playlist.php index e1fe529..a1688e3 100644 --- a/src/Entity/Playlist.php +++ b/src/Entity/Playlist.php @@ -107,5 +107,13 @@ class Playlist } return $categories; } + + /** + * @return int + */ + public function getCountFormation() : int + { + return $this->formations->count(); + } } diff --git a/src/Form/PlaylistType.php b/src/Form/PlaylistType.php new file mode 100644 index 0000000..8b080d2 --- /dev/null +++ b/src/Form/PlaylistType.php @@ -0,0 +1,32 @@ +add('name', null, [ + 'required' => true + ]) + ->add('description') + ->add('submit', SubmitType::class, [ + 'label' => 'Enregistrer' + ]) + ; + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + 'data_class' => Playlist::class, + ]); + } +} diff --git a/templates/pages/admin/admin.addPlaylist.html.twig b/templates/pages/admin/admin.addPlaylist.html.twig new file mode 100644 index 0000000..8dd42a8 --- /dev/null +++ b/templates/pages/admin/admin.addPlaylist.html.twig @@ -0,0 +1,22 @@ +{% extends "baseadmin.html.twig" %} +{% block body %} + {{ form_start(formModifierPlaylist) }} +
| + Nom + < + > + + | ++ Description + | ++ Catégories + | ++ Nombre de formations + | ++ Actions + | +
|---|---|---|---|---|
| + {{ playlist.name }} + | ++ {{ playlist.description }} + | ++ {% set categories = playlist.categoriesplaylist %} + {% if categories|length > 0 %} + {% for c in 0..categories|length-1 %} + {{ categories[c] }} + {% endfor %} + {% endif %} + | ++ {{ playlist.getCountFormation() }} + | ++ Supprimer + Modifier + | +