src/Controller/PlaylistsController.php line 56

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Repository\CategorieRepository;
  4. use App\Repository\FormationRepository;
  5. use App\Repository\PlaylistRepository;
  6. use Doctrine\Common\Collections\ArrayCollection;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. /**
  12.  * Description of PlaylistsController
  13.  *
  14.  * @author emds
  15.  */
  16. class PlaylistsController extends AbstractController
  17. {
  18.     const PAGES_PLAYLISTS_HTML_TWIG "pages/playlists.html.twig";
  19.     const PAGES_PLAYLISTS_ADMIN "admin_playlist/index.html.twig";
  20.     /**
  21.      *
  22.      * @var PlaylistRepository
  23.      */
  24.     private $playlistRepository;
  25.     
  26.     /**
  27.      *
  28.      * @var FormationRepository
  29.      */
  30.     private $formationRepository;
  31.     
  32.     /**
  33.      *
  34.      * @var CategorieRepository
  35.      */
  36.     private $categorieRepository;
  37.     
  38.     public function __construct(
  39.         PlaylistRepository $playlistRepository,
  40.         CategorieRepository $categorieRepository,
  41.         FormationRepository $formationRespository
  42.     )
  43.     {
  44.         $this->playlistRepository $playlistRepository;
  45.         $this->categorieRepository $categorieRepository;
  46.         $this->formationRepository $formationRespository;
  47.     }
  48.     
  49.     /**
  50.      * @Route("/playlists", name="playlists")
  51.      * @return Response
  52.      */
  53.     public function index(): Response
  54.     {
  55.         $playlists $this->playlistRepository->findAllOrderByName('ASC');
  56.         $categories $this->categorieRepository->findAll();
  57.         return $this->render(self::PAGES_PLAYLISTS_HTML_TWIG, [
  58.             'playlists' => $playlists,
  59.             'categories' => $categories
  60.         ]);
  61.     }
  62.     /**
  63.      * @Route("/playlists/tri/{champ}/{ordre}", name="playlists.sort")
  64.      * @Route("/admin/playlists/tri/{champ}/{ordre}", name="admin.playlists.sort")
  65.      * @param type $champ
  66.      * @param type $ordre
  67.      * @return Response
  68.      */
  69.     public function sort(Request $request$champ$ordre): Response
  70.     {
  71.         switch ($champ) {
  72.             case "name":
  73.                 $playlists $this->playlistRepository->findAllOrderByName($ordre);
  74.                 break;
  75.             case "nbformations":
  76.                 $playlists $this->playlistRepository->findAllOrderByNbFormations($ordre);
  77.                 break;
  78.             default:
  79.                 $playlists $this->playlistRepository->findall();
  80.                 break;
  81.         }
  82.         $categories $this->categorieRepository->findAll();
  83.         if ($request->get('_route')==="admin.playlists.sort") {
  84.             return $this->render(self::PAGES_PLAYLISTS_ADMIN, [
  85.                 'playlists' => $playlists,
  86.                 'categories' => $categories
  87.             ]);
  88.         }
  89.         return $this->render(self::PAGES_PLAYLISTS_HTML_TWIG, [
  90.             'playlists' => $playlists,
  91.             'categories' => $categories
  92.         ]);
  93.     }
  94.     /**
  95.      * @Route("/playlists/recherche/{champ}/{table}", name="playlists.findallcontain")
  96.      * @Route("/admin/playlists/recherche/{champ}/{table}", name="admin.playlists.findallcontain")
  97.      * @param type $champ
  98.      * @param Request $request
  99.      * @param type $table
  100.      * @return Response
  101.      */
  102.     public function findAllContain(Request $request$champ$table=""): Response
  103.     {
  104.         $valeur $request->get("recherche");
  105.         if ($valeur=="") {
  106.             $playlists $this->playlistRepository->findAllOrderByName('ASC');
  107.         } elseif ($table=="") {
  108.             $playlists $this->playlistRepository->findByContainValue($champ$valeur);
  109.         } else {
  110.             $playlists $this->playlistRepository->findByCategorie($champ$valeur);
  111.         }
  112.         $categories $this->categorieRepository->findAll();
  113.         if ($request->get('_route')==="admin.playlists.findallcontain") {
  114.             return $this->render(self::PAGES_PLAYLISTS_ADMIN, [
  115.                 'playlists' => $playlists,
  116.                 'categories' => $categories,
  117.                 'valeur' => $valeur,
  118.                 'table' => $table
  119.             ]);
  120.         }
  121.         return $this->render(self::PAGES_PLAYLISTS_HTML_TWIG, [
  122.             'playlists' => $playlists,
  123.             'categories' => $categories,
  124.             'valeur' => $valeur,
  125.             'table' => $table
  126.         ]);
  127.     }
  128.     
  129.     /**
  130.      * @Route("/playlists/playlist/{id}", name="playlists.showone")
  131.      * @param type $id
  132.      * @return Response
  133.      */
  134.     public function showOne($id): Response
  135.     {
  136.         $playlist $this->playlistRepository->find($id);
  137.         $playlistCategories $this->categorieRepository->findAllForOnePlaylist($id);
  138.         $playlistFormations $this->formationRepository->findAllForOnePlaylist($id);
  139.         return $this->render("pages/playlist.html.twig", [
  140.             'playlist' => $playlist,
  141.             'playlistcategories' => $playlistCategories,
  142.             'playlistformations' => $playlistFormations
  143.         ]);
  144.     }
  145. }