src/Controller/TrickController.php line 53

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Trick;
  4. use App\Entity\Message;
  5. use App\Entity\Trait\CreatedAtTrait;
  6. use App\Service\TrickServiceInterface;
  7. use App\Service\ImageServiceInterface;
  8. use App\Service\UserServiceInterface;
  9. use App\Service\MessageServiceInterface;
  10. use App\Service\CategoryServiceInterface;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use App\Form\TrickForm;
  15. use App\Form\MessageForm;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Entity;
  18. use Symfony\Bridge\Doctrine\Attribute\MapEntity;
  19. class TrickController extends AbstractController
  20. {
  21.   use CreatedAtTrait;
  22.   private $message;
  23.   public function __construct(
  24.     private TrickServiceInterface $trickService,
  25.     private MessageServiceInterface $messageService,
  26.     private ImageServiceInterface $imageService,
  27.     private UserServiceInterface $userService,
  28.     private CategoryServiceInterface $categoryService
  29.   ) {
  30.     $this->message = new Message();
  31.   }
  32.   // DISPLAY ALL
  33.   #[Route('/'name'home'methods: ['GET'])]
  34.   public function displayAll(): Response
  35.   {
  36.     $tricks $this->trickService->findAll();
  37.     return $this->render('home/home.html.twig', [
  38.       'tricks' => $tricks
  39.     ]);
  40.   }
  41.   
  42.   // public function displayOne(Request $request, #[MapEntity(expr: 'repository.findTrick(video)')] Trick $trick): Response
  43.   // DISPLAY ONE
  44.   #[Route('/trick/displayone/{slug}'name'trick_display_one'methods: ['GET''POST'])]
  45.   #[Entity('trick'expr'repository.findTrick(slug)')]
  46.   public function displayOne(Request $requestTrick $trick): Response
  47.   {
  48.     $form $this->createForm(MessageForm::class, $this->message);
  49.     $form->handleRequest($request);
  50.     if ($form->isSubmitted() && $form->isValid()) {
  51.       $this->messageService->create($this->getUser(), $trick$this->message);
  52.       $this->addFlash('succes''Votre commentaire a bien été ajouté!');
  53.       return $this->redirectToRoute('trick_display_one', [
  54.         'slug' => $trick->getSlug()
  55.       ]);
  56.     }
  57.     return $this->render('trick/displayOne.html.twig', [
  58.       'trick' => $trick,
  59.       'messageForm' => $form->createView()
  60.     ]);
  61.   }
  62.   // CREATE
  63.   #[Route('/trick/create'name'trick_create'methods: ['GET''POST'])]
  64.   public function create(Request $request): Response
  65.   {
  66.     $trick = new Trick();
  67.     $form $this->createForm(TrickForm::class, $trick);
  68.     $form->handleRequest($request);
  69.     if ($form->isSubmitted() && $form->isValid() && $this->getUser()) {
  70.       $trick $this->trickService->create($this->getUser(), $trick$form);
  71.       $this->addFlash('succes''Votre trick a bien été ajouté!');
  72.       return $this->redirectToRoute('trick_display_one', [
  73.         'slug' => $trick->getSlug()
  74.       ]);
  75.     }
  76.     return $this->render('trick/create.html.twig', [
  77.       'categories' => $this->categoryService->findAll(),
  78.       'createTrickForm' => $form->createView()
  79.     ]);
  80.   }
  81.   // UPDATE
  82.   #[Route('/trick/update/{slug}'name'trick_update'methods: ['GET''POST'])]
  83.   public function update(Request $requestTrick $trick): Response
  84.   {
  85.     $form $this->createForm(TrickForm::class, $trick);
  86.     $form->handleRequest($request);
  87.     if (($form->isSubmitted() && $form->isValid() && $this->getUser())) {
  88.       $this->trickService->update($trick$form);
  89.       $this->addFlash('succes''Le trick a bien été modifié.');
  90.       return $this->redirectToRoute('trick_display_one', [
  91.         'slug' => $trick->getSlug()
  92.       ]);
  93.     }
  94.     return $this->render('trick/update.html.twig', [
  95.       'trick' => $trick,
  96.       'updateTrickForm' => $form->createView()
  97.     ]);
  98.   }
  99.   // DELETE
  100.   #[Route('/trick/delete/{slug}'name'trick_delete'methods: ['GET'])]
  101.   public function delete(Trick $trick): Response
  102.   {
  103.     if ($this->getUser()) {
  104.       $this->trickService->delete($trick);
  105.       $this->addFlash('succes''Le trick a bien été supprimé.');
  106.     }
  107.     return $this->redirectToRoute('home');
  108.   }
  109. }